트랜잭션 리스너가 있는지 잘 모릅니다. 그러나 당신이 생각하는 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을 사용하여 거래 일련 번호 또는 기타 메타 정보를 전달할 수도 있습니다.
EDITED : TransactionContext
는 없습니다 getTopic