Benachrichtigungen in Azure-In-Role Cache

Wichtig

Microsoft empfiehlt, alle neuen Entwicklungen azure Redis Cache zu verwenden. Für aktuelle Dokumentation und Anleitungen zur Auswahl eines Azure Cache-Angebots finden Sie unter Welches Azure Cache-Angebot ist für mich richtig?

Azure stellt Cachebenachrichtigungen bereit, die Anwendungen beim Auftreten einer Vielzahl von Cachevorgängen auf dem Cachecluster das Empfangen asynchroner Benachrichtigungen ermöglichen. Cachebenachrichtigungen ermöglichen auch die automatische Invalidierung von lokal zwischengespeicherten Objekten.

Fügen Sie zum Empfangen asynchroner Cachebenachrichtigungen der Anwendung einen Cachebenachrichtigungs-Rückruf hinzu. Beim Hinzufügen des Rückrufs definieren Sie die Typen von Cachevorgängen, die eine Cachebenachrichtigung auslösen, und die Methoden in Ihrer Anwendung, die beim Auftreten der angegebenen Vorgänge aufgerufen werden sollen. Ein benannter Cache muss Cachebenachrichtigungen abonnieren und diese aktivieren.

Auslösen von Cachebenachrichtigungen

Diese Cachevorgänge werden durch Elemente der DataCacheOperations-Klasse definiert.

Bereichsvorgänge

Anwendungen können beim Auftreten der folgenden Cachevorgänge in einem Bereich Cachebenachrichtigungen empfangen:

Elementvorgänge

Die Anwendung kann Cachebenachrichtigungen empfangen, wenn die folgenden Cachevorgänge für ein zwischengespeichertes Objekt (das im Cache als Element bezeichnet wird) auftreten.

  • AddItem: Wenn ein Element dem Cache hinzugefügt wird.

  • ReplaceItem: Wenn ein Element im Cache ersetzt wird.

  • RemoveItem: Wenn ein Element aus dem Cache entfernt wird.

Hinweis

Diese Vorgänge hängen an sich nicht vom Auftreten in Bereichen ab. Sie können sich entscheiden, den Benachrichtigungsumfang Ihres Rückrufs auf einen bestimmten Bereich einzuschränken. Dies wird im Abschnitt "Benachrichtigungsumfang" dieses Dokumente erörtert.

Benachrichtigungsumfang

Abhängig von der Aktivität und den Erfordernissen Ihrer Anwendung möchten Sie möglicherweise nicht über Ereignisse für alle Objekte und Bereiche im gesamten Cache informiert werden. Sie können den Umfang der Benachrichtigungen von der Cacheebene bis hinunter zur Bereichsebene und Elementebene einschränken. Der beim Hinzufügen eines Rückrufs ausgewählte Benachrichtigungsumfang besitzt großen Einfluss auf die empfangenen Cachebenachrichtigungen.

Auf der Cacheebene können Ihre Anwendungen über alle Cachevorgänge aller Objekte und Bereiche im Cache benachrichtigt werden. Auf der Bereichsebene werden die Anwendungen nur über Cachevorgänge aus einem einzelnen Bereich und die in ihm enthaltenen Objekte benachrichtigt. Auf der Elementebene wird eine Anwendung nur über Cachevorgänge benachrichtigt, die sich auf ein einzelnes Objekt beziehen.

Wählen Sie zum Hinzufügen eines Cachebenachrichtigungs-Rückrufs eine der folgenden drei Methoden, um den gewünschten Benachrichtigungsumfang anzugeben:

  • AddCacheLevelCallback: Wenn Sie über region- und elementbasierte Cachevorgänge benachrichtigt werden möchten, die in allen Regionen und Elementen auftreten.

  • AddRegionLevelCallback: Wenn Sie über region- und elementbasierte Cachevorgänge benachrichtigt werden möchten, die in einem bestimmten Bereich auftreten.

  • AddItemLevelCallback: Wenn Sie über elementbasierte Cachevorgänge benachrichtigt werden möchten, die auf einem bestimmten Element auftreten.

Benachrichtigungsreihenfolge

Die Reihenfolge der vom Cacheclient empfangenen Benachrichtigungen ist im Kontext eines einzelnen Bereichs garantiert. Nehmen Sie beispielsweise an, dass ein Bereich mit dem Namen RegionA erstellt wurde. Da alle in einen Cachebereich eingestellten Daten auf diesen einen Bereich beschränkt sind, treffen alle Cachevorgänge, die sich auf RegionA beziehen (beim Benachrichtigungsumfang auf Bereichsebene) beim Cacheclient aufeinander bezogen in der passenden Reihenfolge ein. Für bereichs- und elementbezogene Cachevorgänge, die auf anderen Cachehosts aufgetreten sind, kann das Eintreffen in der passenden Reihenfolge bezogen auf die in RegionA aufgetretenen Vorgänge nicht garantiert werden.

Im Sinne optimaler Leistung kann die Reihenfolge von Benachrichtigungen, die mehr als einen Bereich oder Objekte umfassen, die nicht im gleichen Bereich gespeichert sind, nicht garantiert werden.

Versionsinformationen für Elementereignisse in Form des DataCacheItemVersion-Objekts werden an die Methode übergeben, die von der Cachebenachrichtigung mit dem version Parameter aufgerufen wird. Dieses DataCacheItemVersion-Objekt entspricht der Version des Objekts, das das Elementereignis ausgelöst hat. Mithilfe der CompareTo-Methode können Sie Versionen vergleichen, um zu ermitteln, welche Cachevorgänge zuerst ausgeführt wurden.

Hinweis

Versionsvergleiche sind nur sinnvoll, wenn Versionen des gleichen Elements, die mit dem gleichen Schlüssel angegeben werden, verglichen werden. Es ist nicht möglich, Die Reihenfolge zu verleiten, indem Sie Versionen von verschiedenen Schlüsseln vergleichen; die CompareTo-Methode kann ein Ergebnis zurückgeben, aber das Ergebnis ist nur für Versionen desselben Schlüssels gültig.

Abrufintervall

Wenn Sie Cachebenachrichtigungen verwenden, überprüft die Anwendung den Cachecluster in regelmäßigen Intervallen auf neue verfügbare Benachrichtigungen. Dieses Intervall, das als Abfrageintervall bezeichnet wird, beträgt standardmäßig 300 Sekunden. Für Anwendungen mit häufigen Schreibvorgängen kann ein kleinerer Wert festgelegt werden. Für Caches, die sich nicht häufig ändern, eignet sich ggf. ein größeres Intervall besser. Der Standardwert von 300 Sekunden ist für die meisten allgemeinen Caches gut geeignet.

Das Abfrageintervall wird in den Anwendungskonfigurationseinstellungen in Sekundeneinheiten angegeben. Zum Angeben eines bestimmten Intervalls können Sie das pollInterval-Attribut des clientNotifications-Elements in der Anwendungskonfigurationsdatei verwenden. Sie können auch ein bestimmtes Abfrageintervall programmgesteuert mit der NotificationProperties Eigenschaft des DataCacheFactoryConfiguration-Objekts angeben.

Verlust von Benachrichtigungen

Cachehosts können nur eine bestimmte Menge von Cachevorgängen im Arbeitsspeicher halten. Es kann geschehen, dass einige Cacheclients Benachrichtigungen nicht erhalten, bevor diese in den Warteschlangen des Cachehosts abgeschnitten werden. Cacheclients können Benachrichtigungen auch verpassen, wenn Daten aufgrund eines Cacheserverfehlers verloren gehen, während der restliche Cluster weiterhin ausgeführt wird. In diesen Fällen kann der Cacheclient mithilfe von Fehlerbenachrichtigungen feststellen, dass er einige Cachebenachrichtungen verpasst hat. Ihre Anwendung kann einen Rückruf hinzufügen, um Fehlerbenachrichtigungen mithilfe der AddFailureNotificationCallback-Methode zu erhalten. Weitere Informationen finden Sie unter How to: Add a Failure Notification Callback

Verlust des Cacheclusters

Es besteht ein wichtiger Unterschied zwischen dem Verlust von Benachrichtigungen und dem Verlust des Cacheclusters. Wenn die Anwendung Benachrichtigungen verpasst, kann ihr dieser Verlust mithilfe einer Fehlerberichtigung zur Kenntnis gebracht werden. Wenn der gesamte Cachecluster beendet oder neu gestartet wird oder in anderer Weise verloren geht, werden keine Benachrichtigungen ausgelöst. Stattdessen löst der Cacheclient beim nächsten Versuch, den Cache zu verwenden, Ausnahmen aus, wenn er keine Verbindung mit dem Cluster herstellen kann. Cacheclusterereignisse wie etwa Cacheerstellung oder -löschung werden von Benachrichtigungen nicht gemeldet. Wenn ein Cache vom Server gelöscht wird, nachdem Benachrichtigungen registriert wurden, können Sie den Empfang von Benachrichtigungen einfach beenden. Es ist nicht möglich, eine Entscheidung zu treffen, ob ein Cache nicht vorhanden ist oder Vorgänge nicht für einen Cache ausgeführt werden.

Hinweis

Cachebenachrichtigungen melden nur datenbezogene Änderungen an Bereichen und Cacheelementen im Cluster, sie melden jedoch keine Ereignisse auf dem Cluster selbst.

Aktivieren von Cachebenachrichtigungen

Das Feature für Cachebenachrichtigungen wird auf Cacheebene in den Clusterkonfigurationseinstellungen konfiguriert. Als eine Eigenschaft des Caches können Sie sie beim ersten Erstellen des Caches aktivieren. Standardmäßig ist das Feature für Cachebenachrichtigungen beim Erstellen eines neuen Caches deaktiviert.

Es sind keine Anwendungskonfigurationseinstellungen zum Hinzufügen eines Rückrufs zum Empfangen von Cachebenachrichtigungen erforderlich. Die Anwendungskonfigurationseinstellungen können verwendet werden, um ein bestimmtes Abrufintervall anzugeben. Standardmäßig beträgt das Abrufintervall 300 Sekunden. Wenn Sie eine andere Dauer wünschen, verwenden Sie das clientNotification Element in der XML-basierten Anwendungskonfigurationsdatei oder geben Sie ihr gewünschtes Intervall programmgesteuert mit der NotificationsProperties Eigenschaft des DataCacheFactoryConfiguration-Objekts an.

Verwenden von Cachebenachrichtigungen

Nachdem Cachebenachrichtigungen aktiviert wurden, gibt es drei Aufgaben im Zusammenhang mit der Verwendung von Cachebenachrichtigungen: Hinzufügen von Cachebenachrichtigungs-Rückrufen, Hinzufügen eines Fehlerbenachrichtigungsanrufs und Entfernen von Cachebenachrichtigungsrückrufen. Die Vorgehensweisen für jede dieser drei Aufgaben werden in der restlichen Dokumentation beschrieben.

Weitere Informationen

Konzepte

Rollencachefunktionen in Azure Cache