apache storm多语言协议确认

svmlkihl  于 2021-06-21  发布在  Storm
关注(0)|答案(1)|浏览(563)

我试图理解storm拓扑中使用multilang协议的可靠消息传递的消息序列。我遇到过这样的问题:storm报告一个错误,说“不存在或已经确认元组”。
下面是我认为序列应该是这样的。。。。
有人能确认或纠正我下面的信息顺序吗?
拓扑:1喷口->1螺栓A->1螺栓B
为了清楚起见,省略了握手。
风暴->喷口{命令:下一个}结束
喷口->风暴{命令:emit,id:“42”,元组:[“hello”,“world”]}结束
喷口->stom{command:sync}结束
风暴->博尔塔{id:“6524”,元组:[“你好”,“世界”]}结束
bolta->storm{command:ack,id:“6524”}结束
bolta->storm{command:emit,id:“43”,anchor:[“6524”],tuple[“ciao”,“mondo”]}end//已将tuple翻译成意大利语:-)
storm->boltb{id:“7465”,tuple[“ciao”,“mondo”]}结束
boltb->storm{command:ack,id:“7465”}结束
storm->spout{command:ack,id:“42”}end//storm让喷口知道分支已经完成。

wvt8vs2t

wvt8vs2t1#

在bolt中,如果要将正在发出的元组锚定到已接收的元组,则必须首先发出锚定的元组,然后再为已接收的元组发出ack。所以你应该:

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

相关问题