Apache storm 卡夫卡滔滔不绝地多次阅读同一条信息

Apache storm 卡夫卡滔滔不绝地多次阅读同一条信息,apache-storm,apache-kafka,kafka-consumer-api,Apache Storm,Apache Kafka,Kafka Consumer Api,如果我在我的storm拓扑结构中增加卡夫卡喷口的并行性,我如何阻止它多次阅读同一主题中的同一消息?storm的卡夫卡喷口一直指向Zookeeper,因此只要你不清除Zookeeper存储,它就不应该多次阅读同一消息。如果您看到一条消息被多次读取,请检查偏移量是否被持久化到zookeeper实例 我认为,默认情况下,在本地运行时,Kafka喷口会启动自己的本地Zookeeper实例,与Kafka的Zookeeper分开,每次重新启动拓扑时,它的状态可能会重置。您应该检查消息是否得到正确确认。如果没

如果我在我的storm拓扑结构中增加卡夫卡喷口的并行性,我如何阻止它多次阅读同一主题中的同一消息?

storm的卡夫卡喷口一直指向Zookeeper,因此只要你不清除Zookeeper存储,它就不应该多次阅读同一消息。如果您看到一条消息被多次读取,请检查偏移量是否被持久化到zookeeper实例


我认为,默认情况下,在本地运行时,Kafka喷口会启动自己的本地Zookeeper实例,与Kafka的Zookeeper分开,每次重新启动拓扑时,它的状态可能会重置。

您应该检查消息是否得到正确确认。如果没有,喷口将视为失败,并将回复消息。

如果是卡夫卡流入风暴,请分享更多信息

如果数据流从storm流向kafka:

然后在代码中检查TopologyBuilder

它不应该是allGrouping,如果是,则将其更改为shuffleGrouping

例如:

    builder.setBolt("OUTPUTBOLT", new OutBoundBolt(boltConfig), 4)
            .allGrouping("previous_bolt"); // this is wrong change it to
                                            // shuffleGrouping

所有分组:跨所有bolt任务复制流。小心使用此分组。

您需要指定消费者组。一旦被指定,卡夫卡将只给你的任何一个喷口下一条信息。所有喷口应属于同一消费群体

创建使用者时,请指定以下属性


props.putgroup.id,a_groupId

如果你的卡夫卡喷口是Opeque,那么你需要topology.max.spout.pending来补充这个答案。我们也有同样的问题,我们发现元组需要更多的时间来处理MessageTimeoutSecs中指定的元组。因此,通过增加MessageTimeoutSecs的值解决了我的问题。我使用的是Trident Kafka喷口,我不清楚如何添加此设置!你能帮我解决这个问题吗?