2014-02-11 1 views
0

최신 Hazelcast 의사를 찾고 있습니다.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) 

! 위의 의사 코드 - 컴파일되지 않습니다!

물론 청취자에게 map 또는 set으로 할 수 있지만 의도가 분명하지 않습니다. 예를 들어 나중에 코드가 더 많은 콜렉션을 포함하도록 진화하여 리스너를 첨부 한 코드를 제거 할 수 있습니다. 그런 다음 버그가 있습니다.

주제가있는 경우 Topic1Event을 사용하여 거래 일련 번호 또는 기타 메타 정보를 전달할 수도 있습니다.

EDITED : TransactionContext는 없습니다 getTopic