Viele Anwendungen müssen heute zur Laufzeit Daten asynchron miteinander teilen. Darüber hinaus bieten relationale Datenbanken keinen effizienten Mechanismus zur Ereignisbenachrichtigung und ihre Leistung und Skalierbarkeit stellen ein großes Problem dar.
Nachrichtenwarteschlangen stellen sequenzierte Nachrichten bereit und garantieren die Nachrichtenzustellung, weisen jedoch auch Leistungs- und Skalierbarkeitsprobleme auf.
Der beste Weg ist die Verwendung einer Messaging-Plattform im Message-Bus-Stil, die schnell und skalierbar ist und auch eine Koordinierung des Datenaustauschs im Producer/Consumer-Stil ermöglicht. NCache ist ein extrem schneller und skalierbarer verteilter Cache und bietet außerdem eine einfache und leistungsstarke Messaging-Funktion im Message-Bus-Stil.
Mit der NCache Mit der Nachrichtenübermittlung können Sie Folgendes tun:
Alle Anwendungen (ob .NET oder Java), mit denen eine Verbindung besteht NCache kann es als Messaging-Plattform verwenden und Ereignisse darüber an andere Anwendungen weitergeben. Oder sie können den Cache bitten, sie zu benachrichtigen, wenn bestimmte Dinge im Cache passieren.
Ereignisse auf Cache-Ebene werden immer dann ausgelöst, wenn etwas hinzugefügt, aktualisiert oder entfernt wird oder wenn der Cache gelöscht wird. Standardmäßig sind diese Ereignisse deaktiviert, da sie sehr gesprächig werden können. Sie können jedoch einige oder alle davon in der Cache-Konfiguration aktivieren und Ihre Anwendung dann Rückruffunktionen bereitstellen lassen NCache so NCache ruft diese Rückrufe auf, wenn diese Ereignisse auftreten. Nachfolgend finden Sie die Arten von Rückrufen, die Sie registrieren können.
CacheEventListener listener = new CacheEventListener();
EnumSet<EventType> _eventType = EnumSet.noneOf(EventType.class);
_eventType.add(EventType.ItemAdded);
_eventType.add(EventType.ItemUpdated);
_eventType.add(EventType.ItemRemoved);
CacheEventDescriptor descripter = _cache.addCacheDataModificationListener(listener,
_eventType, EventDataFilter.None);
Diese Ereignisse werden bei bestimmten Elementaktualisierungen oder -entfernungen ausgelöst, jedoch nur, wenn ein oder mehrere Clients Rückrufe für sie registriert haben. Nachfolgend finden Sie die Veranstaltungen und Rückrufe, die Sie anmelden können.
CacheEventListener listener = new CacheEventListener();
EnumSet<EventType> _eventType = EnumSet.noneOf(EventType.class);
_eventType.add(EventType.ItemUpdated);
_eventType.add(EventType.ItemRemoved);
_cache.addCacheDataModificationListener ("Key:1", listener,
_eventType, EventDataFilter.None);
Continuous Query ist eine leistungsstarke Funktion von NCache Dadurch können Sie eine SQL-ähnliche Abfrage im Cache registrieren und außerdem angeben, für welche Ereignisse Ihre Rückrufe aufgerufen werden sollen NCache.
NCache Anschließend erstellt er eine kontinuierliche Abfrage im Cache-Cluster und überwacht alle Vorgänge zum Hinzufügen, Aktualisieren und Entfernen, um festzustellen, ob sie zwischengespeicherte Elemente ändern, die diesen Kriterien für die kontinuierliche Abfrage entsprechen. Wenn ja, dann NCache benachrichtigt Ihre Client-Anwendung darüber.
Nachfolgend finden Sie die Veranstaltungen, für die Sie sich anmelden können.
ContinuousQuery cQuery1 = new ContinuousQuery(qry, indexTable);
ContinuousQueryListener cqListener = new ContinuousQueryListener();
EnumSet _eventType = EnumSet.noneOf(EventType.class);
_eventType.add(EventType.ItemAdded);
_eventType.add(EventType.ItemUpdated);
_eventType.add(EventType.ItemRemoved);
cQuery1.addDataModificationListener(cqListener, _eventType,
EventDataFilter.DataWithMetaData);
NCache ermöglicht die Koordinierung Ihrer Anwendungen mit anderen in einem Producer/Consumer- oder Publish/Subscribe-Szenario. Eine Anwendung erzeugt Daten und löst dann ein benutzerdefiniertes Ereignis aus NCache Messaging und eine oder mehrere Anwendungen warten auf den Empfang dieses Ereignisses.
So registriert sich Ihre Anwendung für den Empfang dieser benutzerdefinierten Ereignisse.
public void OnApplicationEvent(object notifId, object data)
{
...
}
_cache.CustomEvent += new CustomEventCallback(this.OnApplicationEvent);
Und so löst Ihre Anwendung dieses benutzerdefinierte Ereignis aus NCache Messaging
_cache.RaiseCustomEvent("NotificationID", DateTime.Now);