2016-07-26 9 views
1

Ich werde ein Java-Programm implementieren, die als Gemfire-Client fungiert. Das Programm wird fortlaufend Datensätze verarbeiten, die es von einem Remote-Programm an seinem Port empfängt. Jeder Datensatz wird unter Verwendung der statischen Daten verarbeitet, die mit meinem Programm zwischengespeichert werden. Der Cache kann im Hintergrund aktualisiert werden, wenn er auf dem Gemfire-Server geändert wird. Die Verarbeitung eines Datensatzes kann einige Sekunden dauern. Ich laufe Gefahr, die Hälfte des Datensatzes mit statischen Daten zu verarbeiten, die vor der Änderung und dem Rest des Datensatzes vorherrschten, mit statischen Daten, die nach der Änderung wirksam wurden. Gibt es eine Möglichkeit, Gemfire mitzuteilen, dass der Cache nicht auf den lokalen Client angewendet werden soll, bis ich mit der Verarbeitung des laufenden Datensatzes fertig bin?Controlling Gemfire Cache-Updates im Hintergrund

Grüße,
Yash

Antwort

0

diesen Ansatz vor: eine kontinuierliche Abfrage "Select *" anstelle von Ereignisregistrierung. Ein CQ aktualisiert die Client-Region nicht wie ein Abonnement. Machen Sie Ihre Kundenregion LOCAL. Nachdem Sie das CQ-Ereignis auf dem Client empfangen haben, führen Sie Ihren lang andauernden Prozess aus und legen Sie den Wert, den Sie vom CQ erhalten haben, in Ihre Client-Region. Das Entkoppeln von Client und Server auf diese Weise ermöglicht es Ihrem Client, lang laufende Prozesse auszuführen.

Alternativ: Wenn Sie den Client-Cache mit dem Server als absolute Voraussetzung Proxy-Cache haben müssen, dann behalten Sie die Registrierung von Interesse und registrieren Sie eine CQ. Ignorieren Sie den Ereignisrückruf von der Subskription, aber behandeln Sie Ihren lang andauernden Prozess mithilfe des Ereignisrückrufs aus dem CQ.

Hier finden Sie ab Seite 683 bei http://gemfire.docs.pivotal.io/pdf/pivotal-gemfire-ug.pdf

CQs nicht den Client-Bereich aktualisieren. Dies steht im Gegensatz zu anderen Server-zu-Client-Nachrichten wie den Aktualisierungen, die gesendet werden, um die Interessenregistrierung und Antworten zu erfüllen, um Anfragen vom Pool des Kunden zu erhalten.