Hazelcast EntryListener,如何避免竞争条件?

时间:2016-06-28 20:32:18

标签: publish-subscribe hazelcast event-listener

我正在尝试使用Hazelcast开发特定功能(订阅服务)。订阅将基于谓词侦听特定的Map。使用entryListener可以很容易地实现这一点。到目前为止一切都很好。

但是,当我添加eventListener时,缓存不为空(并且不断地接收持续更新)。如果使用entires将eventListener添加到缓存中,则不会告知缓存中的当前条目。

我可以调用map.values(),但这没有提供真正的解决方案,因为添加eventListener和调用map.values(...)是原子,条目可能是错过。

理想情况下,一系列事件将是

  1. 使用谓词
  2. 添加eventListener
  3. 接收缓存中与该谓词匹配的所有条目
  4. 然后在事件发生时接收更新/删除/添加(与初始谓词匹配)。
  5. 欢迎任何建议。

1 个答案:

答案 0 :(得分:0)

虽然这是一个企业功能, continuous-query-cache似乎是你想要的。请参阅pre-population部分。预填充有助于通过根据提供的谓词获取它的快照来从底层的imap填充缓存。您还可以找到一些样本here