Strikte Nachrichtenreihenfolge für IBM MQ-Messaging-Provider und MDB-Anwendungen
Die Nachrichtenreihenfolge ist für einige asynchrone Messaging-Anwendungen wichtig, d. h., es ist wichtig, dass die Nachrichten in derselben Reihenfolge verarbeitet werden, in der der Erzeuger sie sendet. Wenn dieser Typ von Nachrichtenreihenfolge für Ihre Anwendung wichtig ist, muss dies im Design berücksichtigt werden.
Eine Messaging-Anwendung, die Sitzplatzreservierungen verarbeitet, kann beispielsweise Erzeugerkomponenten und eine Konsumentenkomponente haben. Eine Erzeugerkomponente sendet eine Nachricht an die Konsumentenkomponente, wenn ein Kunde einen Sitzplatz reserviert. Wenn der Kunde die Reservierung storniert, sendet derselbe Erzeuger (oder möglicherweise auch ein anderer Erzeuger) eine zweite Nachricht. Gewöhnlich muss die Konsumentenkomponente die erste Nachricht (in der der Sitzplatz reserviert wird) verarbeiten, bevor sie die zweite Nachricht (in der die Reservierung storniert wird) verarbeitet.
Einige Anwendungen verwenden ein synchrones Muster (Anforderung-Antwort), bei dem der Erzeuger auf eine Antwort zu jeder Nachricht wartet, bevor er die nächste Nachricht sendet. Bei diesem Typ von Anwendung steuert der Konsument die Reihenfolge, in der er die Nachrichten empfängt, und kann so sicherstellen, dass dies dieselbe Reihenfolge ist, in der die Nachrichten vom Erzeuger bzw. von den Erzeugern gesendet werden. Andere Anwendungen verwenden ein asynchrones Muster (Senden und Vergessen), bei dem der Erzeuger Nachrichten sendet, ohne auf Antworten zu warten. Selbst bei diesem Typ von Anwendung wird die Reihenfolge gewöhnlich beibehalten, d. h., ein Konsument kann davon ausgehen, dass er Nachrichten in derselben Reihenfolge empfängt, in der sie von Erzeugern gesendet werden. Dies gilt insbesondere dann, wenn zwischen aufeinander folgenden Nachrichten eine erhebliche Zeitspanne liegt. Im Design müssen Faktoren, die diese Reihenfolge unterbrechen könnten, jedoch berücksichtigt werden.
Die Reihenfolge der Nachrichten wird unterbrochen, wenn Ihre Anwendung Nachrichten mit unterschiedlichen Prioritäten sendet (Nachrichten mit einer höheren Priorität können Nachrichten mit einer niedrigeren Priorität überholen) oder wenn Ihre Anwendung aufgrund der Spezifikation von Nachrichtenselektoren explizit eine andere als die erste in der Reihenfolge empfängt. Es können sich aber auch Parallelverarbeitung und Fehler- bzw. Ausnahmebehandlung auf die Nachrichtenreihenfolge auswirken.