ESB:
La consegna affidabile di un messaggio è responsabilità del trasporto. Consegna riuscita può significare cose molto diverse a seconda del contesto, vedere Quality of Service (QoS) 1, 2, 3. Un ESB in un'architettura orientata ai servizi è normalmente responsabile per l'instradamento e la trasformazione, nonché le opzioni di aggiunta del valore come monitoraggio, auditing ecc. .
Chiamate RESTful:
Una chiamata REST dovrebbe essere un'azione su un oggetto. Non dovrebbe richiedere molto tempo per completare e normalmente sarebbe in grado di fare l'elaborazione e restituire una risposta HTTP prima che fosse un problema.
Chiamate asincrone
Se hai davvero bisogno di inviare un messaggio asincrono quando arriva una richiesta HTTP perché l'azione richiede molto tempo, allora non sarai in grado di aspettare la risposta. In questo caso non è propriamente responsabilità del tuo ESB fare qualcosa al riguardo. Dovrai davvero decidere come gestire il tuo programma. Il tuo ESB potrebbe essere in grado di aiutarti con questo, ad esempio coordinando una transazione globale per te. Se hai già risposto al tuo richiedente HTTP che l'azione è stata presa in mano, proprio come un client MQTT è responsabile del messaggio una volta che ha riconosciuto lo stato del messaggio con il server al livello specificato di QoS, devi trattare questo processo fallito come una transazione in errore e annullare tutto ciò che è successo o compensare le cose che non possono essere ripristinati. Il mittente deve quindi essere codificato con l'assunzione dello stesso comportamento e sapere che è necessario verificare ciò che è realmente accaduto o informare il cliente.