Lastausgleich beim Publish/Subscribe-Messaging
Beim Publish/Subscribe-Messaging sendet das Messaging-System eine Kopie jeder veröffentlichten Nachricht an jede entsprechende Subskription. Subskribenten, d. h., Anwendungen, die Publish/Subscribe-Nachrichten konsumieren, konsumieren diese Nachrichten aus einer bestimmten (individuellen) Subskription. Für eine gleichmäßige Lastverteilung auf mehrere Instanzen einer Anwendung (z. B., wenn eine Anwendung in einem Server-Cluster ausgeführt wird), müssen alle Instanzen der Anwendung dieselbe Subskription verwenden.
Abbildung 1 veranschaulicht, dass in dieser Konfiguration nur eine einzige Instanz der Anwendung jede Nachricht verarbeitet, die an die Subskription gesendet wird. Abbildung 2 hingegen zeigt, dass bei Konfiguration verschiedener Instanzen derselben Anwendung für den Empfang von Nachrichten aus verschiedenen Subskriptionen jede Instanz eine Kopie jeder passenden Nachricht verarbeitet, sodass jede Nachricht verteilt wird.


Beim Punkt-zu-Punkt-Messaging können Sie Warteschlangenziele verwenden und eine Warteschlange so partitionieren, dass die Nachrichtenlast verteilt wird. Subskriptionen können jedoch nicht auf diese Weise partitioniert werden.
Wenn Sie beim Publish/Subscribe-Messaging mehrere Anwendungsinstanzen für die Verwendung derselben Subskription konfigurieren und die Nachrichtenlast damit verteilen möchten, müssen Sie eine permanente Subskription verwenden. Die Instanzen der Anwendung müssen in der Lage sein, gleichzeitig Nachrichten aus derselben Subskription zu konsumieren. Dieser Typ von Subskription wird als gemeinsam genutzte permanente Subskription bezeichnet. Zum Konfigurieren einer gemeinsam genutzten permanenten Subskription definieren Sie die Eigenschaft "Gemeinsam genutzte permanente Subskriptionen" für die relevante Verbindungsfactory oder Aktivierungsspezifikation.
Eine permanente Subskription hat eine eigene Messaging-Engine und eine eindeutige Identität, die sich aus der Clientidentität und dem Subskriptionsnamen zusammensetzt. Das Messaging-System kann neue passende Veröffentlichungen für die Subskription auch dann annehmen, wenn es keinen aktiven Subskribenten gibt. Die eigene Messaging-Engine sammelt die Nachrichten für eine Subskription über einen Veröffentlichungspunkt. Wenn ein Subskribent gestartet oder erneut gestartet wird, verwendet das Messaging-System die eindeutige Identität und die eigene Messaging-Engine, um den Veröffentlichungspunkt zu identifizieren, die permanente Subskription zu suchen und alle gesammelten Nachrichten zuzustellen.
Eine nicht permanente Subskription hat keine eindeutige Identität. Sie existiert nur für die Lebensdauer des zugehörigen Subskribenten. Es ist nicht möglich, dass mehrere Anwendungsinstanzen Nachrichten aus derselben nicht permanenten Subskription empfangen.
- Im Cluster
- Der Bus verteilt die Arbeit auf die Clients, die eine Verbindung zu einem Busmember in demselben Cluster herstellen, wenn die Clients dieselbe Clientidentität und denselben Namen für die permanente Subskription verwenden.
- Immer freigeben
- Der Bus verteilt die Arbeit auf die Clients, unabhängig von der Position, über die sie eine Verbindung zum Bus herstellen, wenn die Clients dieselbe Clientidentität und denselben Namen für die permanente Subskription verwenden.
- Nie freigeben
- Clients können nicht dieselbe Clientidentität und denselben Namen für die permanente Subskription wie eine vorhandene Sitzung verwenden.