Apache Storm Multilang Protocol Acking

时间:2014-06-19 09:31:32

标签: java python apache-storm hadoop-streaming

我正在尝试使用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知道分支已经完成。

1 个答案:

答案 0 :(得分:2)

在一个螺栓中,如果你想要将你正在发射的元组锚定到你收到的元组,你必须首先发出锚定的元组,然后发出接收元组的ack。所以你应该这样做:

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