java - Apache Storm 多语言协议(protocol)确认

标签 java python apache-storm hadoop-streaming

我正在尝试使用 Multilang 协议(protocol)来理解具有可靠消息传递的 Storm 拓扑中的消息序列。我遇到了 Storm 报告错误“不存在或已确认的元组”的问题。

下面是我认为的序列应该是什么样的......

有人可以确认或更正我下面的消息序列吗?

拓扑:1 Spout -> 1 BoltA -> 1 BoltB

为清楚起见,省略了握手。

Storm —> Spout { 命令:下一个 } 结束

Spout —> Storm { 命令:emit,Id:”42”,元组:[“Hello”,“World”] } end

Spout —> Stom {命令:同步}结束

Storm —> BoltA { id: “6524”, tuple: [“Hello”, “World”] } end

BoltA —> Storm { command: ack, id: “6524” } end

BoltA —> Storm { 命令:emit,id:“43”,anchor:[“6524”],tuple [“Ciao”​​,“Mondo”] } end//元组已通过翻译为意大利语进行处理:- )

Storm -> BoltB { id: “7465”, tuple [“Ciao”​​, “Mondo”] } end

BoltB -> Storm { command: ack, id: “7465” } end

Storm -> Spout { command: ack, id: “42” } end//Storm 让 spout 知道分支已完成。

最佳答案

在 Bolt 中,如果您想将正在发出的元组锚定到已接收的元组,则必须首先发出锚定的元组,然后再发出接收到的元组的 ack。所以你应该这样做:

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

关于java - Apache Storm 多语言协议(protocol)确认,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24303313/

相关文章:

python - 在 SqlAlchemy 中使用模型类类型的数组创建列

python - matplotlib 图打开但 matplotlib 窗口 "not responding"

elasticsearch - 使用 elasticsearch-hadoop 库将元组从 storm 索引到 elasticsearch 不起作用

java - (卡夫卡)在 Storm 中喷发返回事物列表,无法将此列表传播到 bolt

java - 为什么这是一个错误?

java - 检测 WebView 中的超链接悬停并打印链接

java - 下载用于 servlet 的 tomcat

java - 改进java代码以避免堆内存不足异常

python - 我想用 Python 列出一个目录,然后按大小对文件名进行排序

web-crawler - 使用 php 在 Storm 中进行非阻塞 HTTP 调用