【问题标题】:hazelcast transaction notificationhazelcast 交易通知
【发布时间】:2014-02-11 23:16:28
【问题描述】:
查看最新的 Hazelcast 文档,
假设有一个 Hazelcast 映射和集合,我们执行一个更新它们的事务。现在,考虑一个问题,监听器需要基于映射和集合的一致视图执行一些操作,但只需要在事务发生时执行一次。
有没有一种好方法可以为 hazelcast 交易实现这种回调机制?是否有对此的内在支持,或者这是需要在客户端完成的事情?
【问题讨论】:
标签:
transactions
notifications
hazelcast
【解决方案1】:
我不知道是否有事务监听器。但是,我认为对于您的transaction 示例topics 是您想要的机制。
设置主题监听器
// setup on client 2
// define...
// class Topic1Event ...
// class Topic1Listener implements MessageListener<Topic1Event> ...
HazelcastInstance hc2;
hc2.getTopic("topic1").addMessageListener(new Topic1Listener)
然后是交易
// client 1
HazelcastInstance hc1;
TransactionContext tc1= hc1.newTransactionContext
tc1.beginTransaction
tc1.getMap("map1").set("key1", "value1")
tc1.getSet("set1").add("value2")
tc1.commitTransaction
// TransactionContext doesn't have getTopic
hc1.getTopic("topic1").publish(new Topic1Event)
!上面的伪代码——不编译!
当然,您可以通过map 或set 上的听众进行此操作,但这可能会掩盖您的意图。例如,稍后您的代码可能会演变为拥有更多集合并删除您附加侦听器的集合。那么你就有了一个错误。
如果您有主题,现在您甚至可以使用您的 Topic1Event 来传递交易序列号或其他一些元信息。
已编辑:TransactionContext 没有 getTopic