我正在尝试使用Multilang协议了解使用Reliable Messaging的Storm Topology中的消息序列。我一直有问题,Storm报告错误说“不存在或已经确定了元组”。
以下是我认为序列看起来像......
有人可以通过以下消息序列确认或纠正我吗?
拓扑:1喷口 - > 1 BoltA - > 1 BoltB
为清楚起见,省略了握手。
风暴 - > Spout {command:next} end
Spout - > Storm {command:emit,Id:“42”,tuple:[“Hello”,“World”]} end
Spout - > Stom {command:sync} end
风暴 - > BoltA {id:“6524”,元组:[“你好”,“世界”]}结束
BoltA - >风暴{命令:ack,id:“6524”}结束
BoltA - > Storm {command:emit,id:“43”,anchor:[“6524”],tuple [“Ciao”,“Mondo”]} end //元组已经翻译成意大利语: - )
风暴 - > BoltB {id:“7465”,元组[“Ciao”,“Mondo”]}结束
BoltB - >风暴{命令:ack,id:“7465”}结束
风暴 - > Spout {command:ack,id:“42”} end // Storm让spout知道分支已经完成。
答案 0 :(得分:2)
在一个螺栓中,如果你想要将你正在发射的元组锚定到你收到的元组,你必须首先发出锚定的元组,然后发出接收元组的ack。所以你应该这样做:
Spout -> Storm emit 1
Storm -> Bolt deliver 1
Bolt -> emit 2, anchored to 1
Bolt -> ack 1