我將實現一個充當gemfire客戶端的Java程序。該程序將連續處理從遠程程序接收到的端口上的記錄。每條記錄都將使用我的程序緩存的靜態數據進行處理。在Gemfire服務器上更改緩存時,緩存可能會在我的程序後臺更新。處理一條記錄可能需要幾秒鐘。我將處理一半記錄的風險與在更改之前流行的靜態數據和記錄的其餘部分一起處理,其中靜態數據在更改後生效。有沒有一種方法可以告訴gemfire在我處理完正在進行的記錄之前不將緩存應用到本地客戶端?在後臺控制Gemfire緩存更新
問候,
佳日
我將實現一個充當gemfire客戶端的Java程序。該程序將連續處理從遠程程序接收到的端口上的記錄。每條記錄都將使用我的程序緩存的靜態數據進行處理。在Gemfire服務器上更改緩存時,緩存可能會在我的程序後臺更新。處理一條記錄可能需要幾秒鐘。我將處理一半記錄的風險與在更改之前流行的靜態數據和記錄的其餘部分一起處理,其中靜態數據在更改後生效。有沒有一種方法可以告訴gemfire在我處理完正在進行的記錄之前不將緩存應用到本地客戶端?在後臺控制Gemfire緩存更新
問候,
佳日
考慮這個方法:使用連續查詢 「SELECT *」,而不是事件註冊。 CQ不像訂閱那樣更新客戶區域。使您的客戶區域爲本地。在客戶端收到CQ事件後,執行您的長時間運行過程,並將您從CQ接收到的價值放入您的客戶區域。以這種方式解耦客戶端和服務器將允許您的客戶端運行長時間運行的進程。
或者:如果您必須將客戶端緩存與服務器進行代理作爲絕對要求,則保留興趣註冊並註冊一個CQ。忽略來自訂閱的事件回調,但使用CQ的事件回調來處理您的長時間運行的流程。
以下是從683頁的http://gemfire.docs.pivotal.io/pdf/pivotal-gemfire-ug.pdf
CQS不更新客戶端區域。這與其他服務器到客戶端的消息傳遞形成對比,例如發送的更新以滿足利息註冊和響應以獲取來自客戶端池的請求。