2016-06-28 5 views
0

Ich versuche, eine spezielle Funktion (Subskriptionsdienst) mit Hazelcast zu entwickeln. Das Abonnement würde eine bestimmte Map basierend auf einem Prädikat anhören. Dies kann relativ einfach mit einem entryListener erreicht werden. So weit, ist es gut.Hazelcast EntryListener, wie kann man den Rennzustand vermeiden?

Allerdings ist der Cache nicht leer, wenn ich den EventListener (und ständig zu konstanten Updates erhalten). Wenn Sie einen EventListener zu einem Cache mit Ganzzahlen hinzufügen, werden Sie nicht über die aktuellen Einträge im Cache informiert.

Ich könnte map.values ​​() aufrufen, aber dies bietet keine wirkliche Lösung, da das Hinzufügen des eventListener und der Aufruf von map.values ​​(...) nicht atomaren Einträgen könnten verpasst werden.

die Reihe von Ereignissen wäre

  1. hinzufügen eventlistener Ideal mit Prädikat
  2. alle Einträge im Cache erhalten, die
  3. Dann erhalten Updates, die Prädikat übereinstimmen/entfernt/fügt wie die Ereignisse auftreten (Matching das ursprüngliche Prädikat).

Alle Vorschläge willkommen.

Antwort

0

Obwohl es eine Enterprise-Funktion ist, scheint continuous-query-cache was Sie wollen. Bitte beachten Sie pre-population Teil. Die Vorpopulation hilft dabei, den Cache von der zugrunde liegenden Imap zu füllen, indem eine Momentaufnahme entsprechend dem angegebenen Prädikat erstellt wird. Sie können auch einige Beispiele finden here.

+0

Ich denke, Sie könnten hier richtig sein. Ich habe keine Unternehmenslizenz, ich frage mich, ob man dieses Ergebnis mit Einstiegsprozessoren und Filtern erreichen könnte. – Rich

Verwandte Themen