Der Web-Messaging-Service nutzt den Service Integration Bus (SIB) von WebSphere® Application Server ab Version 6.1.x, um die für die Unterstützung von Bayeux-Clients erforderliche Publish- und Subscribe-Funktionalität bereitzustellen. Wenn Sie feststellen möchten, wie Bayeux-Publisher und -Subskribenten mit dem Service Integration Bus interagieren, müssen Sie bei der Implementierung einer Anwendung mit Bayeux-Funktionalität einige Konfigurationsparameter angeben.
Das Konzept des Bayeux-Subskriptionskanals ist äquivalent zu einem Topic im Service Integration Bus, denn es ermöglicht gleichermaßen die Klassifizierung von Ereignissen in entsprechenden Gruppen, z. B. unter "/sports/football" oder "/weather". Beim Service Integration Bus befinden sich Topics an einem Topicbereichsziel, zu dem Produzenten und Konsumenten eine Verbindung herstellen. Topics in einem Topicbereich sind, selbst bei identischen Namen, vollkommen unabhängig von Topics in einem anderen Topicbereich. In einem Abschnitt der Konfiguration des Web-Messaging-Service kann der Anwendungsentwickler somit angeben, welcher SIB-Topicbereich von Bayeux-Anwendungen verwendet werden soll.
Ereignissen (Nachrichten), die in einem SIB-Topicbereich veröffentlicht werden, wird außerdem eine Zuverlässigkeit zugeordnet, die bestimmt, wie die Nachrichten innerhalb des Busses behandelt werden. Auf diese Weise wird auch festgelegt, unter welchen Bedingungen die Nachrichten von der Messaging-Infrastruktur gelöscht werden können. In einigen Szenarien ist es akzeptabel, dass Nachrichten gelöscht werden, wenn die Serverressourcen knapp werden, z. B. aufgrund einer hohen Auslastung. In anderen Szenarien wird man Nachrichten selbst dann aufbewahren, wenn das Risiko einer Serverüberlastung besteht.
Wenn Sie erweiterte Szenarien konfigurieren, die Konzepte wie Auslastungsmanagement oder Sicherheit umfassen, müssen Sie auch die Auswirkungen dieser Anforderungen auf den Service Integration Bus berücksichtigen. Diese Konzepte sind nachfolgend detaillierter beschrieben.
Wenn Sie die Art der Interaktion von Bayeux-Anwendungen mit dem Service Integration Bus konfigurieren, sind die folgenden Optionen verfügbar.
Für Web-Messaging-Operationen ist ein Service Integration Bus erforderlich. Clients können über nur einen Eingangs-URI eine Verbindung zu einem einzigen Service Integration Bus herstellen. Die Verbindung zu mehreren Bussen ist nur möglich, wenn Sie eine gesonderte Web-Messaging-Konfigurationsdefinition erstellen und einen anderen Busnamen angeben. Der Client muss die Verbindung jedoch über separate URIs herstellen und mehrere Verbindungen verwenden. Wenn Sie einen AJAX-Client verwenden, ist es nur möglich, eine Bayeux-Verbindung zu einem Server auf nur einer Webseite herzustellen. Verschiedene Seiten können unterschiedliche URIs angeben und eine Verbindung zu unterschiedlichen Bussen herstellen.
Name: | busName |
---|---|
Erforderlich oder optional: | Erforderlich |
Datentyp | String |
Unterstützte Werte: | Name eines Service Integration Bus |
Standardwert: | Ohne |
Beschreibung: | Der Service Integration Bus, den ankommende Web-Messaging-Clients für Publish/Subscribe-Operationen verwenden |
In der Mehrheit der Fälle muss eine Bayeux-Anwendung Nachrichten für einen einzigen SIB-Topicbereichs produzieren bzw. von einem einzigen Bereich konsumieren. Mit der Eigenschaft "destination" kann der Anwendungsentwickler angeben, welcher Topicbereich für alle Interaktionen mit dem Service Integration Bus verwendet werden soll.
Name: | destination |
---|---|
Erforderlich oder optional: | Optional |
Datentyp | String |
Unterstützte Werte: | Name eines SIB-Topicbereichs |
Standardwert: | Default.Topic.Space |
Beschreibung: | Dies ist der Topicbereich des Service Integration Bus, von dem die Anwendung Nachrichten konsumiert und für den sie Nachrichten produziert. Das angegebene Ziel kann ein realer Topicbereich sein. Alternativ kann ein Alias (siehe Aliasziele) für einen Topicbereich angegeben werden. Wenn ein Alias verwendet wird, kann die Anwendung vom tatsächlichen Namen des Topicbereichs getrennt werden. Wenn Sie den von Bayeux-Anwendungen genutzten Topicbereich mit dieser Eigenschaft benennen, wird der Name des Topic im Topicbereich festgelegt, indem der führende Schrägstrich aus dem Namen des Bayeux-Subskriptionskanals entfernt wird. Dem Kanalnamen "/sports/football" wäre beispielsweise das SIB-Topic "sports/football" zugeordnet. Wenn der Anwendungsentwickler nicht weiß, welcher Topicbereich verwendet wird, kann er diese Eigenschaft übergehen, so dass der Standardtopicbereich verwendet wird. Diese Eigenschaft wird, wie im folgenden Abschnitt beschrieben, von der Eigenschaft "multipleDestinations" außer Kraft gesetzt. |
In komplexen Szenarien muss eine Bayeux-Anwendung möglicherweise Nachrichten für mehrere SIB-Topicbereiche produzieren oder von mehreren SIB-Topicbereichen konsumieren, um beispielsweise Daten von unterschiedlichen und voneinander unabhängigen Quellen als Teil einer Portlet-Umgebung anzuzeigen. In diesem Fall kann der Anwendungsentwickler die Eigenschaft "multipleDestinations" aktivieren, um die Eigenschaft destination außer Kraft zu setzen und den Namen des erforderlichen Topicbereichsziels oder Aliasziels als Teil des Namens für den Bayeux-Subskriptionskanal anzugeben.
Name: | multipleDestinations |
---|---|
Erforderlich oder optional: | Optional |
Datentyp | Boolean |
Unterstützte Werte: | true und false |
Standardwert: | false |
Beschreibung: | Aktiviert eine alternative Syntax für Bayeux-Subskriptionskanäle, die die Angabe des SIB-Zieltopicbereichs im Kanalnamen unterstützt. Wenn diese Eigenschaft aktiviert ist, wird für den Namen des Topicbereichs das erste Kanalsegment verwendet. Die Anwendung gibt beispielsweise den folgenden Bayeux-Subskriptionskanal an, um im Topicbereich "OlympicResults" das Topic "track/relay4x100" zu veröffentlichen: /OlympicResults/track/relay4x100 Wenn "multipleDestinations" aktiviert ist, wird der Wert der Eigenschaft "destination" ignoriert. |
Ereignissen (Nachrichten), die in einem SIB-Topicbereich veröffentlicht werden, wird außerdem eine Zuverlässigkeit zugeordnet, die bestimmt, wie die Nachrichten innerhalb des Busses behandelt werden. Auf diese Weise wird auch festgelegt, unter welchen Bedingungen die Nachrichten von der Messaging-Infrastruktur gelöscht werden können. In einigen Szenarien ist es akzeptabel, dass Nachrichten gelöscht werden- wenn die Serverressourcen knapp werden, z. B. aufgrund einer hohen Auslastung. In anderen Szenarien wird man Nachrichten selbst dann aufbewahren, wenn das Risiko einer Serverüberlastung besteht.
Name: | reliability |
---|---|
Erforderlich oder optional: | Optional |
Datentyp | String |
Unterstützte Werte: |
|
Standardwert: | ExpressNonPersistent |
Beschreibung: | Gibt an, mit welcher Zuverlässigkeit von Bayeux-Anwendungen veröffentlichte Ereignisse (Nachrichten) an den Service Integration Bus gesendet werden. Einzelheiten zum Verhalten dieser Optionen finden Sie im Abschnitt Zuverlässigkeitsstufen für Nachrichten. Bei nicht permanenten Subskriptionen sind nach einem Serverneustart keine Nachrichten verfügbar, weil es die Subskription nach dem Neustart nicht mehr gibt. Die Auswahl der beiden Zuverlässigkeitsstufen mit Persistenz bringt somit nur bedingt Vorteile. In den meisten Fällen werden Sie Werte ohne Persistenz verwenden. |
Das Bayeux-Protokoll unterstützt das Senden von Clientveröffentlichungen an den Service Integration Bus. Möglicherweise möchten Sie zulassen, dass der Nachrichtenfluss nicht nur vom Server zu Web-Messaging-Clients verläuft. Dies ist von der Anwendung abgängig, die Sie entwickeln. Sie könnten beispielsweise festlegen, dass Clients ihre Veröffentlichungen über eine Webanwendung (Servlet) senden müssen, damit eine bessere Kontrolle des Nachrichteninhalts möglich ist, bevor die zu veröffentlichende Nachricht an den Service Integration Bus gesendet wird. Standardmäßig können Clients keine Veröffentlichungen über das Bayeux-Protokoll bereitstellen.
Name: | clientCanPublish |
---|---|
Erforderlich oder optional: | Optional |
Datentyp | Boolean |
Unterstützte Werte: | true und false |
Standardwert: | false |
Beschreibung: | Gibt an, ob Web-Messaging-Clients etwas veröffentlichen dürfen. Standardmäßig können Clients keine Veröffentlichungen bereitstellen. Sie müssen clientCanPublish explizit auf true setzen, wenn Clientveröffentlichungen unterstützt werden sollen. |
Bei aktivierter Bussicherheit müssen ankommende Web-Messaging-Clients authentifiziert und autorisiert werden, bevor sie eine Verbindung zum Service Integration Bus herstellen können. Weitere Informationen hierzu finden Sie unter Anwendung mit Web-Messaging schützen.
Name: | authType |
---|---|
Erforderlich oder optional: | Optional |
Datentyp | String |
Unterstützte Werte: |
|
Standardwert: | none |
Beschreibung: | Wenn die Bussicherheit aktiviert ist, benötigen ankommende Webclients eine Identität, um für den Service Integration Bus berechtigt zu werden. Geben Sie diesen Konfigurationsparameter an, um zu bestimmen, welche Authentifizierungsdaten für die die Anmeldung beim Service Integration Bus angefordert werden sollen.
Falls eine der Option keine Identifikationsdaten abrufen kann, erfolgt die Anmeldung beim Service Integration Bus mit einer leeren Benutzer-ID und einem leeren Kennwort. Bei aktivierter SIB-Sicherheit können Webclients keine Verbindung zur Ausführung von Web-Messaging-Operationen herstellen. |
Es wird eine permanente Subskription zum Service Integration Bus für Bayeux-Subskriptionsanforderungen verwendet, wenn die Konfigurationseigenschaft "useDurable" auf "true" gesetzt ist. Eine permanente Subskription kann verwendet werden, um Nachrichten, die in einem Topic veröffentlicht wurden, auch bei Inaktivität des Clients beizubehalten.
Name: | useDurable |
---|---|
Erforderlich oder optional: | Optional |
Datentyp: | Boolean |
Unterstützte Werte: | true und false |
Standardwert: | false |
Beschreibung: | Wenn permanente Subskriptionen für Web-Messaging verwendet werden, können Webclients Operationen nach einer einer kurzen Zeit der Inaktivität Ihrer Subskriptionen um Service Integration Bus fortsetzen, ohne Nachrichten zu verlieren. Einige Gründe für die Inaktivität einer Subskription sind im Folgenden aufgeführt: Serverausfall, Ausfall der Messaging-Engine oder Ausfall der Verbindung zu einer Messaging-Engine. Wenn Sie eine Anwendung mit aktiviertem Web-Messaging in einer Clusterumgebung ausführen, sollten Sie die Konfigurationseigenschaften "useDurable" und "useDistributedSession" auf "true" setzen, um optimale Failover-Ergebnisse zu erzielen. Wenn beide Eigenschaften auf "true" gesetzt sind, können die Operationen eines Web-Messaging-Clients von einem anderen Server übernommen und alle permanenten Subskriptionen fortgesetzt werden. Wenn permanente Subskriptionen für Web-Messaging verwendet werden, bleiben alle Web-Messaging-Clients an die Messaging-Engine gebunden, zu der die Erstverbindung hergestellt wurde. Wenn ein Web-Messaging-Client die Subskription eines Topics aufhebt - als Ergebnis einer bestimmten Bayeux-Operation für Aufhebung einer Subskription, einer Bayeux-Operation zum Trennen der Verbindung oder des Verfalls der Bayeux-Sitzung - muss die Messaging-Engine aktiv sein, damit die Aufhebung der Subskription durchgeführt werden kann. Der Web-Messaging-Service verfolgt die Informationen zu permanenten Subskriptionen und lässt diese, wenn möglich, verfallen, aber es gibt Situationen, in denen dies nicht möglich ist. In diesen Situationen müssen permanente Subskriptionen manuell über Verwaltungsprozeduren gelöscht werden. Sehr häufig kommt es zu einer kurzen Verzögerung, bevor die permanenten Subskriptionen eines Web-Messaging-Clients fortgesetzt werden können. Der Bayeux-Empfehlungsmechanismus für Verbindungswiederherstellung wird verwendet, um Web-Messaging-Clients nach einem kurzen Zeitraum zur Verbindungswiederherstellung aufzufordern, um diese permanenten Subskriptionen fortzusetzen. Das Intervall für die Verbindungswiederholung wird mit der Konfigurationseigenschaft "reinitInterval" gesteuert. Der maximal zulässige Zeitraum für die Verbindungswiederholung wird mit der Konfigurationseigenschaft "MaxReinitDuration" gesteuert. Durch die Verwendung permanenter Subskriptionen entsteht zusätzlicher Systemaufwand, der bei der Definition dieser Eigenschaft berücksichtigt werden muss. Weitere Informationen finden Sie in der Dokumentation zu Service Integration Bus. |
Web-Messaging-Clients stellen beim Auftreten eines Kommunikationsproblems mit dem Service Integration Bus die Verbindung zum Service Integration Bus wieder her und subskribieren alle Topics erneut, wenn die Konfigurationseigenschaft "autoReinit" auf "true" gesetzt ist.
Name: | autoReinit |
---|---|
Erforderlich oder optional: | Optional |
Datentyp: | Boolean |
Unterstützte Werte: | true und false |
Standardwert: | false |
Beschreibung: | Wenn beim Web-Messaging-Client ein Fehler bei der Kommunikation mit einem Service Integration Bus auftritt, sollte die Eigenschaft "autoReinit" gesetzt werden, damit die Verbindung zum Service Integration Bus automatisch erneut initialisiert wird und alle zuvor subskribierten Topics erneut subskribiert werden. In der Zeit zwischen Subskriptionsverlust und Reinitialisierung werden keine Nachrichten, die in einem Topic veröffentlicht werden, an den Web-Messaging-Client übertragen. Wenn die Eigenschaften "useDurable" und "autoReinit" beide auf "true" gesetzt sind, wird die Eigenschaft "useDurable" wirksam. Wenn Sie eine Anwendung mit aktiviertem Web-Messaging in einem Cluster ausführen, können Sie die Konfigurationseigenschaften "autoReinit" und "useDistributedSession" auf "true" setzen. Wenn beide Eigenschaften auf "true" gesetzt sind, kann ein Web-Messaging-Client den Betrieb fortsetzen, wenn ein Server ausfällt, und die Web-Messaging-Operationen können von einem anderen Server fortgesetzt werden. Wenn die Eigenschaften "autoReinit" und "useDurable" beide auf "false" gesetzt sind, wird die Bayeux-Empfehlung für erneuten Handshake an den Client gesendet, in der der Client aufgefordert wird, einen erneuten Handshake durchzuführen und eine neue Bayeux-Sitzung zu initialisieren. Sehr häufig kommt es zu einer kurzen Verzögerung, bevor die Verbindungen und Subskriptionen eines Web-Messaging-Clients erneut initialisiert werden können. Der Bayeux-Empfehlungsmechanismus für Verbindungswiederherstellung wird verwendet, um Web-Messaging-Clients nach einem kurzen Zeitraum zur Verbindungswiederherstellung aufzufordern, um die Subskriptionen des Clients erneut zu initialisieren. Das Intervall für die Verbindungswiederholung wird mit der Konfigurationseigenschaft "reinitInterval" gesteuert. Der maximal zulässige Zeitraum für die Verbindungswiederholung wird mit der Konfigurationseigenschaft "MaxReinitDuration" gesteuert. |
Wenn die Konfigurationseigenschaft "autoReinit" oder die Konfigurationseigenschaft "useDurable" auf "true" gesetzt ist und ein Kommunikationsfehler mit dem Service Integration Bus auftritt, wird der Web-Messaging-Client angewiesen, in dem mit der Konfigurationseigenschaft "reinitInterval" angegebenen Intervall zu versuchen, die Verbindung wiederherzustellen.
Name: | reinitInterval |
---|---|
Erforderlich oder optional: | Optional |
Datentyp: | Integer |
Unterstützte Werte: | Werte zwischen 1 und 300 (Sekunden) |
Standardwert: | 10 |
Beschreibung: | Nach dem Auftreten eines Kommunikationsfehlers zwischen einem Web-Messaging-Client und einem Service Integration Bus kann es kurze Zeit dauern, bis der Web-Messaging-Client die Kommunikation mit dem Service Integration Bus wiederaufnehmen kann. In diesem Fall wird die Bayeux-Verbindungswiederholungsanforderung mit einer internen Empfehlung an den Client gesendet, in der der Client angewiesen wird, die Verbindung in dem mit der Konfigurationseigenschaft "reinitInterval" angegebenen Intervall zu wiederholen. Der Web-Messaging-Client wiederholt den Verbindungsversuch maximal so oft, wie es mit der Konfigurationseigenschaft "maxReinitDuration" angegeben wurde. |
Die Konfigurationseigenschaft "maxReinitDuration" gibt an, wie lange ein Web-Messaging-Client maximal versucht, Operationen mit einem Service Integration Bus wiederaufzunehmen.
Name: | maxReinitDuration |
---|---|
Erforderlich oder optional: | Optional |
Datentyp: | Integer |
Unterstützte Werte: | Werte zwischen 10 und 600 (Sekunden) |
Standardwert: | 60 |
Beschreibung: | Wenn die Konfigurationseigenschaft "autoReinit" oder "useDurable" auf "true" gesetzt ist, versucht ein Web-Messaging-Client, Operationen mit dem Service Integration Bus wiederaufzunehmen. In manchen Situationen ist es nicht möglich, die Operationen in dem vorgeschriebenen Zeitraum wiederaufzunehmen. Nach Ablauf der mit "maxReinitDuration" festgelegten Zeit stellt der Web-Messaging-Client die Versuche, Operationen mit dem Service Integration Bus wiederaufzunehmen, ein, und die Bayeux-Sitzung verfällt. |