gpt4 book ai didi

java - 一个消费者多个主题会导致潜在的线程问题吗?

转载 作者:行者123 更新时间:2023-12-02 19:24:19 25 4
gpt4 key购买 nike

我有一个REST服务,叫它MDD,它有一个kafka使用者。当我首先启动其余服务时,另一项服务告诉MDD的用户订阅特定主题,一切似乎都正常。

然后,该服务告诉MDD的用户订阅另一个主题。我现在做的方法是通过Consumer.assign()方法。基本上,如果引入了未分配消费者的新主题,则将这个新主题分配给消费者。因此,现在将一个消费者分配给2个不同的主题。

该使用者轮询消息并将其存储到HDFS中。

现在我注意到的是,进入第二个主题的订阅时,有时会收到关于无法附加到HDFS中的文件的错误,并且当我查看日志时,它试图附加一些本不应该包含的数据。附加到以后。
例如,到kafka的数据按此顺序依次为A,B,C。当完成MDD将A附加到HDFS时,它将尝试附加C(而不是B),并且同时尝试附加B。还要注意的是,此时第一个主题没有数据,只有第二个主题的数据正在流式传输。因此,目前,在任何给定时间只有一个kafka主题有数据流。

有人知道会发生什么吗?当我将一个使用者分配给多个主题时,是否有可能产生一些线程问题?因为当使用者分配到一个主题时一切似乎都很好,但是一旦将消费者分配到一个以上主题时,由于其他一些作者已经拥有了租约,我就无法追加到HDFS中的文件。此错误不会经常发生,只是非常随机的。

另外,每次创建新主题时,都会建议创建一个新的kafka使用者吗?

最佳答案

只有一个消费者阅读来自多个主题的消息绝对是有效且可行的。您遇到的问题是由于Kafka当前不支持使用手动分区分配(使用KafkaConsumer#assign)和组管理(使用KafkaConsumer#subscribe)两者。

为了支持订阅新创建的主题,您可以尝试调用将正则表达式传递到的KafkaConsumer#subscribe,以匹配所有新创建的主题。

关于java - 一个消费者多个主题会导致潜在的线程问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41730689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com