Die meisten der Kommunikation, die wir im Web machen, ist “synchron”. Hauptsächlich dem Protokoll zugeschrieben, das wir für diese Kommunikation verwenden, d.h. HTTP (das Request-Response- oder Request-Response-Muster verwendet) Die API reagiert so schnell wie möglich synchron. Es gibt einen HTTP 202 (Accepted)-Statuscode zurück und bestätigt, dass die Anforderung zur Verarbeitung empfangen wurde. Einige Architekturen lösen dieses Problem, indem sie einen Nachrichtenbroker verwenden, um die Anforderungs- und Antwortphasen zu trennen. Diese Trennung wird häufig durch die Verwendung des Queue-Based Load Leveling-Musters erreicht. Diese Trennung kann es ermöglichen, dass der Clientprozess und die Back-End-API unabhängig skaliert werden. Diese Trennung bringt jedoch auch zusätzliche Komplexität mit sich, wenn der Client eine Erfolgsbenachrichtigung benötigt, da dieser Schritt asynchron werden muss. Aufgrund der asynchronen Art der Kommunikation, die wir über den Anforderer / Anbieter sprechen, kann er jedoch mehrere Kommunikationen durchführen, ohne die Garantie, dass die Reihenfolge der Antworten in der Reihenfolge der Anfragen beibehalten wird (was auf die Tatsache zurückzuführen ist, dass einige Anfragen möglicherweise schneller bearbeitet werden als die anderen), müsste der Requester jede Anforderung mit einer eindeutigen Kennung ausstatten, um sie mit der ursprünglichen Kommunikation, d.h. correlationId, zu korrelieren.

In einigen Szenarien kann die arbeit durch backend jedoch in der Reihenfolge von Sekunden lang andauernd ausgeführt werden oder ein Hintergrundprozess sein, der in Minuten oder sogar Stunden ausgeführt wird. In diesem Fall ist es nicht möglich, zu warten, bis die Arbeit abgeschlossen ist, bevor Sie auf die Anforderung antworten. Diese Situation ist ein potenzielles Problem für jedes synchrone Anforderungsantwortmuster. In einigen Szenarien möchten Sie Clients möglicherweise eine Möglichkeit bieten, eine lang andauernde Anforderung abzubrechen. In diesem Fall muss der Backend-Dienst eine Form der Stornierungsanweisung unterstützen. Wie bei jeder herkömmlichen Unterhaltung, an der Teilnehmer beteiligt sind, hat auch die asynchrone Anforderungs-Antwort-Konversation folgende Teilnehmer: Das leistungsstärkste und am häufigsten verwendete Muster zu sein, bedeutet jedoch nicht, dass es ohne eine Liste seiner eigenen Herausforderungen kommt.