2014-06-19 5 views
1

Multilang 프로토콜을 사용하는 Storm Topology의 신뢰성있는 메시징 메시지 순서를 이해하려고합니다. Storm이 "존재하지 않거나 이미 승인 된 튜플"이라는 오류를보고하는 문제가있었습니다. 나는 순서가 어떻게 보일지 생각됩니다 다음Apache Storm 다중 프로토콜 프로토콜 Acking

....

사람 확인하거나 메시지의 아래 순서에 저를 정정 할 수 있습니까?

토폴로지 : 주둥이 1 -> 1 BOLTA - 편의상 생략> 1 BoltB

핸드.

스톰 -> 르네 {명령 다음} 끝

르네 -> 스톰 {명령, 이드 방출 : "42", 튜플 : [ "안녕하세요", "세계"]} 끝

르네 -> STOM {명령 : 동기} 끝

스톰 -> BOLTA {ID : "6524", 튜플 : [ "안녕하세요", "세계"]} 끝

BOLTA -> 스톰 {명령 ACK , id : "6524"} end

BoltA -> Storm {명령 : emit, id : "43", 앵커 : [ "6524"], 튜플 [ "Ciao", "Mondo"]} // 터플은 이탈리아어로 번역 됨 :-)

스톰 -> BoltB {ID "7465"튜플 [ "챠오", "몬도"]} 최종

BoltB -> 스톰 {명령 : ACK, ID "7465"} 단부

Storm -> Spout {명령 : ack, id : "42"} end // 스톰은 스파우트에 지점이 완료되었음을 알립니다.

답변

2

볼트에서 방출하는 튜플을 앵커링하려면 수신 된 튜플을 먼저 투영 한 다음 수신 된 튜플에 대한 ack를 방출해야합니다. 따라서해야 할 일 :

Spout -> Storm emit 1 
Storm -> Bolt deliver 1 
Bolt -> emit 2, anchored to 1 
Bolt -> ack 1