看最新的哈泽尔卡斯特医生,
假设有一个Hazelcast映射和集合,我们执行一个事务来更新这两个映射和集合。现在,考虑以下问题:侦听器需要基于映射和集合的一致视图执行一些操作,但只需要在事务发生时执行一次。
对于hazelcast事务是否有实现这种回调机制的好方法?对此是否有内在的支持,或者这是客户端需要做的事情?
发布于 2014-03-03 08:57:43
我不知道是否有事务侦听器。但是,我认为对于您的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
https://stackoverflow.com/questions/21715267
复制相似问题