Freigeben über


Gewusst wie: Empfangen von Benachrichtigungen aus einem Azure-Managed Cache Service-Cache

Wichtig

Microsoft empfiehlt, alle neuen Entwicklungen azure Redis Cache zu verwenden. Aktuelle Dokumentation und Anleitung zum Auswählen eines Azure Cache-Angebots finden Sie unter Welches Azure Cache-Angebot ist für mich geeignet?

In diesem Thema wird beschrieben, wie ein Cachebenachrichtigungs-Rückruf hinzugefügt wird, der Anwendungen das Empfangen von Cachebenachrichtigungen ermöglicht.

Das Hinzufügen eines Cachebenachrichtigungs-Rückrufs umfasst zwei Schritte. Erstellen Sie zuerst eine Methode, die beim Auslösen einer Cachebenachrichtigung durch einen Cachevorgang bzw. Cachevorgänge aufgerufen werden soll. Die Methode, die Sie mit den Cachebenachrichtigungen aufrufen, muss dieselben Parameter wie der DataCacheNotificationCallback-Delegate akzeptieren. Fügen Sie zweitens einen Rückruf mithilfe einer der drei verfügbaren Methoden aus dem DataCache-Objekt hinzu:

Verwenden Sie den filter-Parameter, um die Typen von Cachevorgängen zu definieren, die in der Lage sein sollen, Cachebenachrichtigungen auszulösen. Verwenden Sie den Namen der Methode, die Sie im ersten Schritt erstellt haben, für den clientDelegate-Parameter.

So fügen Sie einen Rückruf für einen oder mehrere Cachevorgänge hinzu

  1. Erstellen Sie die Methode, die von der Cachebenachrichtigung ausgelöst werden soll. Achten Sie darauf, dass die Methode die gleichen Parameter wie der DataCacheNotificationCallback-Stellvertreter annimmt.

  2. Fügen Sie einen Rückruf hinzu. Verwenden Sie eine der drei verfügbaren Methoden aus dem DataCache-Objekt , um den Benachrichtigungsbereich zu definieren: AddCacheLevelCallback, AddRegionLevelCallback oder AddItemLevelCallback.

    1. Verwenden Sie die DataCacheOperations-Enumeration im filter Parameter, um anzugeben, welche Art von Cachevorgängen Sie auslösen möchten. Es können mehrere Enumerationen ausgewählt werden, indem die Enumerationen durch den bitweisen ODER-Operator getrennt werden, um ein bitweises ODER auszuführen. Verwenden Sie zu diesem Zweck das Zeichen "|" in C# und den Operator "Or" in Visual Basic.

    2. Verwenden Sie den Namen der Methode, die beim Auftreten dieser Benachrichtigungen im clientDelegate-Parameter aufgerufen werden soll.

    3. Legen Sie die Add-Callback-Methode auf ein DataCacheNotificationDescriptor-Objekt fest, das Sie an anderer Stelle in Ihrem Programm verwenden können, um den Cachebenachrichtigungsrückruf zu entfernen.

Beispiel

Der erste Schritt beim Registrieren für Cachebenachrichtigungen besteht im Erstellen einer Methode, die von der Benachrichtigung aufgerufen werden soll. Die von der Cachebenachrichtigung aufgerufene Methode muss die gleichen Parameter wie der DataCacheNotificationCallback-Stellvertreter akzeptieren. Dieses Beispiel zeigt ein Beispiel einer Methode, die von einer Cachebenachrichtigung aufgerufen werden kann.

'method invoked by notification "ndCacheLvlAllOps" 
Public Sub myCacheLvlDelegate(ByVal myCacheName As String, _
    ByVal myRegion As String, _
    ByVal myKey As String, _
    ByVal itemVersion As DataCacheItemVersion, _
    ByVal OperationId As DataCacheOperations, _
    ByVal nd As DataCacheNotificationDescriptor)

    'display some of the delegate parameters
    Console.WriteLine("A cache-level notification was triggered!")
    Console.WriteLine("    Cache: " + myCacheName)
    Console.WriteLine("    Region: " + myRegion)
    Console.WriteLine("    Key: " + myKey)
    Console.WriteLine("    Operation: " + OperationId.ToString())
    Console.WriteLine()
End Sub
//method invoked by notification "ndCacheLvlAllOps" 
public void myCacheLvlDelegate(string myCacheName,
    string myRegion, 
    string myKey, 
    DataCacheItemVersion itemVersion,
    DataCacheOperations OperationId, 
    DataCacheNotificationDescriptor nd)
{
    //display some of the delegate parameters
    Console.WriteLine("A cache-level notification was triggered!");
    Console.WriteLine("    Cache: " + myCacheName);
    Console.WriteLine("    Region: " + myRegion);
    Console.WriteLine("    Key: " + myKey);
    Console.WriteLine("    Operation: " + OperationId.ToString());
    Console.WriteLine();
}

Der zweite Schritt besteht im Hinzufügen eines Rückrufs für einen oder mehrere Cachevorgänge. In diesem Beispiel wird eine Benachrichtigung erstellt, um die Methode aus dem vorhergehenden Beispiel aufzurufen. Nur zu Demonstrationszwecken wurde diese Benachrichtigung mit allen möglichen Cachevorgängen bei einem Benachrichtigungsumfang auf Cacheebene konfiguriert.

Wenn mehrere Cachevorgänge definiert werden sollenn, können Sie den binären ODER-Operator verwenden, um mehrere DataCacheOperations-Enumerationen einer DataCacheOperations-Variablen zuzuweisen, die für den Filterparameter verwendet werden kann. Verwenden Sie zum Hinzufügen eines Rückrufs für Cachevorgänge mit einem Benachrichtigungsumfang auf Cacheebene die AddCacheLevelCallback-Methode.

Hinweis

Dies wird für Produktionsumgebungen nicht empfohlen. Dieses Beispiel dient nur zu Demonstrationszwecken.

'specify all possible item and region operations
Dim allCacheOperations As DataCacheOperations
allCacheOperations = DataCacheOperations.AddItem Or _
    DataCacheOperations.ReplaceItem Or _
    DataCacheOperations.RemoveItem Or _
    DataCacheOperations.CreateRegion Or _
    DataCacheOperations.ClearRegion Or _
    DataCacheOperations.RemoveRegion

'add cache-level notification callback 
'all cache operations from a notifications-enabled cache
Dim ndCacheLvlAllOps as DataCacheNotificationDescriptor = _
    myTestCache.AddCacheLevelCallback(allCacheOperations, AddressOf myCacheLvlDelegate)
//specify all possible item and region operations
DataCacheOperations allCacheOperations = DataCacheOperations.AddItem |
    DataCacheOperations.ReplaceItem |
    DataCacheOperations.RemoveItem |
    DataCacheOperations.CreateRegion |
    DataCacheOperations.ClearRegion |
    DataCacheOperations.RemoveRegion;

//add cache-level notification callback 
//all cache operations from a notifications-enabled cache
DataCacheNotificationDescriptor ndCacheLvlAllOps
    = myTestCache.AddCacheLevelCallback(allCacheOperations, myCacheLvlDelegate);

Das nächste Beispiel veranschaulicht das Hinzufügen eines Rückrufs für einen Cachevorgang mit einem Benachrichtigungsumfang auf Bereichsebene, der nur ausgelöst wird, wenn dem Cache ein Bereich mit dem Namen "TestRegion" hinzugefügt wird.

'add region-level notification callback for region "TestRegion"
'trigger notification with CreateRegion operation
Dim ndRegionCreateRegOp As DataCacheNotificationDescriptor
ndRegionCreateRegOp = _
    myTestCache.AddRegionLevelCallback("TestRegion", _
    DataCacheOperations.CreateRegion, AddressOf myRegionLvlAddDelegate)
//add region-level notification callback for region "TestRegion"
//trigger notification with CreateRegion operation
DataCacheNotificationDescriptor ndRegionCreateRegOp
    = myTestCache.AddRegionLevelCallback("TestRegion",
    DataCacheOperations.CreateRegion, myRegionLvlAddDelegate);

Das nächste Beispiel veranschaulicht das Hinzufügen eines Rückrufs für Cachevorgänge mit einem Benachrichtigungsumfang auf Elementebene, der nur ausgelöst wird, wenn ein Objekt im Cache mithilfe des Schlüssels "TestKey" hinzugefügt oder ersetzt wird.

Hinweis

Nur die Elementvorgänge AddItem, ReplaceItem und RemoveItem können Cachebenachrichtigungen mit Rückrufen auf Elementebene auslösen. Das Angeben von Bereichsvorgängen im Filterparameter beim Hinzufügen eines Rückrufs auf Elementebene löst eine Ausnahme aus.

'add item-level notification callback for item "TestKey"
'trigger notification with AddItem and ReplaceItem operations
Dim ndItemUpdateOps As DataCacheNotificationDescriptor
ndItemUpdateOps = _
    myTestCache.AddItemLevelCallback("TestKey", _
    (DataCacheOperations.AddItem Or DataCacheOperations.ReplaceItem), _
    AddressOf myItemLvlUpdateDelegate)
//add item-level notification callback for item "TestKey"
//trigger notification with AddItem and ReplaceItem operations
DataCacheNotificationDescriptor ndItemUpdateOps
    = myTestCache.AddItemLevelCallback("TestKey",
        (DataCacheOperations.AddItem | DataCacheOperations.ReplaceItem),
        myItemLvlUpdateDelegate);

So entfernen Sie eine Rückruf-Cachebenachrichtigung

  1. Verwenden Sie die RemoveCallback-Methode , um den Cachebenachrichtigungsrückruf zu entfernen. Verwenden Sie das entsprechende DataCacheNotificationDescriptor-Objekt für den nd-Parameter. Verwenden Sie den NotificationDescriptor, den Sie bei der Registrierung für Benachrichtigungen empfangen haben, um den Empfang von Benachrichtigungen zu ändern.

Beispiel

In diesem Beispiel werden der Cacheclient und drei DataCacheNotificationDescriptor-Objekte auf Klassenebene deklariert, sodass sie von Methoden aufgerufen werden können, die Rückrufe hinzufügen und entfernen.

'define variables for class
Dim myTestCache As DataCache
Dim ndCacheLvlAllOps As DataCacheNotificationDescriptor
Dim ndRegionLvlAllOps As DataCacheNotificationDescriptor
Dim ndItemLvlAllOps As DataCacheNotificationDescriptor
//define variables for class
DataCache myTestCache;
DataCacheNotificationDescriptor ndCacheLvlAllOps;
DataCacheNotificationDescriptor ndRegionLvlAllOps;
DataCacheNotificationDescriptor ndItemLvlAllOps;

In diesem Beispiel wird eine Methode gezeigt, die die RemoveCallback-Methode verwendet, um die Rückrufe zu entfernen, die allen drei DataCacheNotificationDescriptor-Objekten aus dem vorherigen Beispiel entsprechen.

'remove cache notification callbacks
Public Sub RemoveNotificationCallbacks()
    myTestCache.RemoveCallback(ndCacheLvlAllOps)
    myTestCache.RemoveCallback(ndRegionLvlAllOps)
    myTestCache.RemoveCallback(ndItemLvlAllOps)
End Sub
//remove cache notification callbacks
public void RemoveNotificationCallbacks()
{
    myTestCache.RemoveCallback(ndCacheLvlAllOps);
    myTestCache.RemoveCallback(ndRegionLvlAllOps);
    myTestCache.RemoveCallback(ndItemLvlAllOps);
}

Weitere Informationen

Konzepte

Benachrichtigungen für Azure Managed Cache Service