2014-02-11 40 views
0

看最新的Hazelcast文档,hazelcast交易通知

假设有一个Hazelcast地图和集合,并且我们执行一个更新它们两个的交易。现在,考虑一个监听器需要根据映射和集合的一致视图执行某些操作的问题,但只需要在事务发生时执行一次操作。

有没有一种好的方法来实现这种回调机制的榛树交易?有没有固有的支持,或者这是需要在客户端完成的事情?

回答

0

我不知道是否有事务侦听器。但是,我认为对于您的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) 

!上面的伪代码 - 不会编译!

因此,您可以通过mapset上的听众来完成,但这可能会掩盖您的意图。例如,稍后您的代码可能会演变为拥有更多集合并删除您附加侦听器的集合。那么你有一个错误。

如果您有一个主题,现在您甚至可以使用您的Topic1Event来传递事务序列号或其他元信息。

EDITEDTransactionContext没有getTopic