In WebSphere MQ Publish/Subscribe verarbeitet ein einziger Thread die Veröffentlichungen in den einzelnen Datenstromwarteschlangen. Dadurch wird die Reihenfolge festgelegt, in der die Veröffentlichungen in der Warteschlange verarbeitet werden.
Wenn Sie sich mit dem Nachrichtendurchsatz in einer WebSphere Message Broker-Brokerdomäne auseinandersetzen, sollten Sie auch überlegen, wie wichtig die Reihenfolge ist, in der die Nachrichten veröffentlicht werden. Verfahren, die einen höheren Nachrichtendurchsatz ermöglichen, stellen nicht unbedingt die Reihenfolge sicher.
Wenn mehrere Threads die Nachrichten einer einzelnen Warteschlange verarbeiten, kann nicht garantiert werden, dass die Veröffentlichungen in der Reihenfolge an den Subskribenten übermittelt werden, in der sie in die Eingabewarteschlange gestellt wurden. In WebSphere Message Broker steht allerdings ein Verfahren zur Verfügung, mit dem Veröffentlichungen gleichzeitig verarbeitet werden können, ohne dass dies Auswirkungen auf die geforderte Reihenfolge hat.
Setzen Sie die Eigenschaft Modus für Reihenfolge des MQEmpfangsknoten auf Nach Benutzer-ID. Dadurch wird sichergestellt, dass die Veröffentlichungen in der Reihenfolge übermittelt werden, in der sie von einem Benutzer an den Broker gesendet wurden. Ist diese Eigenschaft gesetzt, wird die Verarbeitung von Nachrichten mit einem UserIdentifier-Feld im MQMD angehalten, wenn ein anderer Thread, der denselben Nachrichtenfluss verarbeitet, gerade eine Nachricht mit demselben UserIdentifier verarbeitet.
Die Vorteile zusätzlicher Instanzen des Nachrichtenflusses gehen natürlich verloren, wenn alle Publisher-Anwendungen unter derselben Benutzer-ID aktiv sind. Dieser Fall kann beispielsweise eintreten, wenn Publisher-Anwendungen mit fernen Warteschlangenmanagern verbunden sind. Nachrichten von diesen fernen Publishern kommen im Broker über einen Kanal an, der unter Umständen so konfiguriert wurde, dass die Benutzer-ID des Kanalprogramms und nicht die des ursprünglichen Clients eingesetzt wird. Weitere Informationen darüber, wie das Kanalattribut PUTAUT gesetzt werden muss, um das Standardverhalten der Kanäle zu ändern, finden Sie im Handbuch WebSphere MQIntercommunications.
Wenn Sie den Durchsatz mit diesem Verfahren erhöhen möchten, müssen Sie die Auswirkungen bedenken, die dies auf die Reihenfolge hat, in der die Veröffentlichungen übermittelt werden. Insbesondere müssen Sie sicherstellen, dass die Publisher-Anwendungen nach den Themen aufgeteilt werden, die sie veröffentlichen, damit für jedes Thema die Reihenfolge eingehalten wird, falls dies wichtig sein sollte. Wenn Ihre Anwendungen zu ein und demselben Thema Veröffentlichungen in verschiedene Datenströme (Warteschlangen) stellen, kann die Beibehaltung der Reihenfolge nicht garantiert werden.
Wenn Sie die Publisher-Anwendungen aktualisieren, so dass sie Veröffentlichungen an eine neue Warteschlange senden, die einen anderen Namen als der Datenstrom hat in den sie sonst Veröffentlichungen stellen, müssen Sie diese Anwendungen außerdem so konfigurieren, dass der Name des Datenstroms explizit in die Veröffentlichungen eingesetzt wird; dies geschieht über den Parameter 'MQPSStreamName'