淡化交易通知

时间:2014-02-11 23:16:28

标签: transactions notifications hazelcast

查看最新的Hazelcast doc,

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

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

1 个答案:

答案 0 :(得分: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 传递交易序列号或其他元信息。

已加入TransactionContext没有getTopic