Nachrichten können innerhalb von Gruppen auftreten, um eine Anordnung der Nachrichten zu ermöglichen.
Nachrichtengruppen ermöglichen es, mehrere Nachrichten als miteinander verknüpft zu kennzeichnen und eine logische Reihenfolge auf die Gruppe anzuwenden (siehe Logische und physische Ordnung). An Mehrere Plattformen, Nachrichtensegmentierung ermöglicht die Aufteilung großer Nachrichten in kleinere Segmente. Gruppierte oder segmentierte Nachrichten können nicht in ein Thema eingereiht werden.
Die Hierarchie innerhalb einer Gruppe gestaltet sich wie folgt:
Gruppe
Das ist die höchste Stufe der Hierarchie und wird durch eine GroupId angegeben. Sie besteht aus mindestens einer Nachricht mit derselben GroupId. Diese Nachrichten können standortunabhängig in der Warteschlange gespeichert werden.
Hinweis: Der Begriff Nachricht wird hier verwendet, um ein Element in einer Warteschlange zu bezeichnen, wie es beispielsweise der Fall wäre, wenn ein einzelner MQGET-Aufruf ohne MQGMO_COMPLETE_MSG zurückgegeben würde.
Abbildung 1 zeigt eine Gruppe logischer Nachrichten:Abb. 1. Gruppe logischer Nachrichten
Durch Öffnen einer Warteschlange und Angeben von MQOO_BIND_ON_GROUP werden alle an diese Warteschlange gesendeten Nachrichten in eine Gruppe gezwungen, die zur gleichen Instanz der Warteschlange übermittelt wird. Weitere Informationen zur Option BIND_ON_GROUP finden Sie unter Handhabung von Nachrichtenaffinitäten.
Logische Nachricht
Logische Nachrichten innerhalb einer Gruppe werden durch die Felder GroupId und MsgSeqNumber gekennzeichnet. Die MsgSeqNumber beginnt bei 1 für die erste Nachricht einer Gruppe. Auch wenn eine Nachricht keiner Gruppe angehört, ist dieser Wert 1.
Verwenden Sie logische Nachrichten in einer Gruppe für Folgendes:
Anordnung sicherstellen (wenn dies unter den Umständen, unter denen die Nachricht übermittelt wurde, nicht garantiert ist).
Anwendungen erlauben, ähnliche Nachrichten zu gruppieren (z. B. die Nachrichten, die von derselben Serverinstanz verarbeitet werden müssen).
Jede Nachricht in einer Gruppe besteht aus einer physischen Nachricht, außer wenn sie in mehrere Segmente aufgeteilt wird. Jede Nachricht ist aus logischer Sicht eine separate Nachricht, und nur die Felder GroupId und MsgSeqNumber im MQMD geben einen Hinweis darauf, dass die Nachricht in Beziehung zu anderen Nachrichten der Gruppe steht. Andere Felder im MQMD sind unabhängig; einige können für alle Nachrichten in der Gruppe identisch sein, wogegen andere unterschiedlich sein können. Nachrichten können z. B. in einer Gruppe verschiedene Formatnamen, CCSIDs und Codierungen tragen.
Segment
Segmente werden für die Bearbeitung von Nachrichten verwendet, die entweder zum Einreihen oder Abrufen der Anwendung oder für den Warteschlangenmanager zu groß sind (einschließlich eingreifender Warteschlangenmanager, über die die Nachricht übermittelt wird). Weitere Informationen finden Sie unter Nachrichtensegmentierung.
Eine einzelne Nachricht wird in kleinere Nachrichten aufgeteilt, die als Segmente bezeichnet werden. Ein Segment einer Nachricht wird durch die Felder GroupId, MsgSeqNumber und Offset gekennzeichnet. Das Feld Offset beginnt für das erste Segment einer Nachricht bei Null.
Jedes Segment besteht aus einer physischen Nachricht, die zu einer Gruppe gehören kann ( Abbildung 2 zeigt ein Beispiel für Nachrichten in einer Gruppe). Ein Segment ist aus logischer Sicht Teil einer einzelnen Nachricht. Daher sollten sich zwischen den einzelnen Segmenten derselben Nachricht nur die MQMD-Felder MsgId, Offset und MsgFlags unterscheiden. Wenn ein Segment nicht eintrifft, wird der Ursachencode MQRC_INCOMPLETE_GROUP oder MQRC_INCOMPLETE_MSG zurückgegeben.
Abbildung 2 zeigt eine Gruppe logischer Nachrichten, von denen einige segmentiert sind:Abbildung 2: Segmentierte Nachrichten
Segmentierung wird nicht unterstützt aufIBM MQ for z/OS .
Sie können segmentierte oder gruppierte Nachricht mit Publish/Subscribe nicht verwenden.