风暴螺栓 acking 但喷口失败

jos*_*t91 5 java apache-storm

我在使用 Apache Storm 时遇到了一个奇怪的问题。我有一个 KafkaSpout 连接到一个包含 10 条消息的 Kafka 集群。

Bolt 接收每条消息并正确处理它们,因为在 Storm UI 中它们被列为“已确认”。但是,storm UI 下列出的 Spout 表示所有元组都失败了。

我相信这会导致 spout 再次重新发送所有消息......所以我看到 Storm Bolt 打印出消息 1-10,然后一遍又一遍地以相同的顺序打印出来。

我正在适当地调用.ack().fail()方法,我只是不知道为什么 Spout 会将它们列为失败。

有什么想法吗?

jos*_*t91 4

事实证明,下游的几个螺栓在处理完元组后并没有确认。这导致 spout 元组失败并最终再次发送元组,从而导致连续循环。