我正在尝试使用 Kafka 模拟流流量到 Storm。我使用 KafkaSpout 从生产者发送的一个主题中读取一条消息,生产者阅读这些推文并将它们发送到一个主题。我的问题是,在拓扑消耗了该主题中发送的所有推文后,它继续读取该主题中的消息两次。如何阻止 KafkaSpout 读取两次?(复制因子设置为 1)
1 回答
蓝山帝景
TA贡献1843条经验 获得超7个赞
配置对我来说很好。
也许问题是双重确认。确保你只在 acking 每个元组一次execute
。
如评论中所述,请考虑升级到更新的 Kafka 版本,以及切换到storm-kafka-client
.
还有一些可能会让您的生活更轻松的事情:考虑扩展BaseBasicBolt
而不是BaseRichBolt
. BaseBasicBolt
如果运行execute
没有抛出错误,它会自动为您确认元组。如果你想让一个元组失败,你可以抛出FailedException
. BaseRichBolt
只有当你想做更复杂的确认时才应该使用,例如,execute
在确认之前从内存中的许多调用中聚合元组。
添加回答
举报
0/150
提交
取消