WebSphere Message Broker speichert die Daten, die es aus dem WebSphere Service Registry and Repository (WSRR) abgerufen hat, in einem lokalen Cache.
Die WSRR-Knoten EndpointLookup und RegistryLookup können Daten, die von einer früheren Abfrage im WSRR-Cache des Brokers gespeichert wurden, abrufen, was die Leistung und den Nachrichtendurchsatz verbessert. Das erste Auftreten jeder Abfrage wird immer an das WSRR gesendet. Dieser Vorgang läuft standardmäßig ab, wenn ein WSRR-Knoten zum ersten Mal eine bestimmte Abfrage ausgibt, obwohl es mithilfe der hier beschriebenen Abfragen möglich ist, den Cache beim Start des Brokers vorab zu füllen.
Der Cache wird für jeden Broker einzeln mit dem WebSphere Message Broker Explorer oder dem Befehl mqsichangeproperties konfiguriert. Dies wird im Abschnitt Eigenschaften von konfigurierbaren Services ausführlich beschrieben.
Inaktivieren Sie den Cache, indem Sie den Parameter needCache auf false setzen. Der Cache ist standardmäßig aktiviert, aber die WSRR-Knoten sind auch ohne Cache betriebsfähig. Wenn der Cache inaktiviert ist, wird jede vom Knoten ausgegebene Abfrage an das WSRR gesendet. Dadurch wird sichergestellt, dass die Ergebnisse der Abfrage immer den aktuellen Inhalt der Registry wiedergeben. Dieser Vorgang kann die Leistung beeinflussen.
Sie können den Cache vorab laden, indem Sie den Parameter predefinedCacheQueries angeben. Standardmäßig werden keine Elemente vorab in den Cache geladen und wird das erste Auftreten jeder Abfrage an das WSRR gesendet. Sie können vordefinierte Abfragen angeben, die beim Start des Brokers oder bei der ersten Implementierung eines Nachrichtenflusses, der WSRR-Nachrichtenflüsse enthält, ausgeführt werden und den Cache mit Daten füllen, die von nachfolgenden WSRR-Knoten verwendet werden können. Durch die Angabe vordefinierter Abfragen kann die Leistung bereits beim Start beeinflusst werden, nicht erst beim Auftreten einer Abfrage zur Ausführungszeit. Der Parameter 'predefinedCacheQueries' besteht aus einer Liste mit WSRR-XPath-Abfrageausdrücken, die durch Semikolons getrennt sind und von denen jeder eine optionale Tiefenspezifikation enthalten kann. Der Benutzertrace zeigt die von einem WSRR-Knoten generierten WSRR-XPath-Abfrageausdrücke.
Ändern Sie den Verfallszeitlimitwert für den Cache mit dem Parameter timeout. Die zwischengespeicherten Ergebnisse einer Abfrage werden gelöscht, nachdem die angegebene Zeit abgelaufen ist. Das nächste Auftreten der Abfrage wird an das WSRR gesendet und das neue Ergebnis in den Cache gestellt. Wenn sich der Inhalt der Registry voraussichtlich häufig ändern wird, können Sie ein kürzeres Verfallszeitlimit angeben, damit Änderungen schneller berücksichtigt werden. Dieser Vorgang beeinflusst die Leistung, da mehr Abfragen an das WSRR gesendet werden.
Aktivieren Sie die Cachebenachrichtigung, indem Sie den Parameter enableCacheNotification auf true und die Eigenschaften initialContextFactory und locationJNDIBinding auf die geeigneten Werte für Ihren WSRR-Server setzen. Die Cachebenachrichtigung ist standardmäßig inaktiviert. Die Cachebenachrichtigung ist eine flexiblere Methode zur Aktualisierung zwischengespeicherter Daten als das Verfallszeitlimit, weil sie die Aktualisierung einzelner WSRR-Entitäten zu dem Zeitpunkt ermöglicht, an dem sie im WSRR geändert werden.
Wenn die Cachebenachrichtigung aktiviert ist, subskribiert der Cache Ereignisse, die im WSRR auftreten, und wird benachrichtigt, wenn ein Objekt im WSRR aktualisiert oder gelöscht wird. Das Objekt wird dann aus dem Cache gelöscht. Wenn der Parameter refreshQueriesAfterNotification auf true gesetzt ist, wird der Cache unverzüglich mit der neuen Version des Objekts aktualisiert. Ist der Parameter refreshQueriesAfterNotification auf false gesetzt, wird der Cache aktualisiert, wenn ein Knoten das nächste Mal eine relevante Abfrage ausgibt.