gpt4 book ai didi

java - 向kafka生成消息,但消费者没有收到 “some”的消息

转载 作者:行者123 更新时间:2023-12-01 16:21:56 26 4
gpt4 key购买 nike

有 4 个引导服务器,我使用下面的代码生成消息

producer.send(new ProducerRecord<>(topic, partitionNumber, key, message, headers), 
(metadata, exception) -> {
if (exception == null) {
// the record was successfully sent
synapseLog.auditLog(String.format(SUCCESS_LOG, metadata.offset(),
metadata.partition(), key, messageSeq, topic, SUCCESS));
} else {
synapseLog.auditError(String.format(FAILED_LOG, key, messageSeq,
FAILED, exception.getMessage(), topic, message));
}
}
);

SUCCESS_LOG 在生成消息时被打印,但消费者没有收到消息(有 2 个消费者具有不同的组 ID)。'

在生产者属性中acks = 1

我尝试使用不同的组 ID 运行另一个测试消费者。但它也没有收到消息,可能消息不在kafka中。

这里可能存在什么问题。

提前致谢。

最佳答案

使用acks=1,一段时间内丢失消息几乎是不可避免的。这是导致您的问题的一个可能原因,尽管可能还有其他解释 - 例如,可能以丢失消息的方式编写消费者(例如,在单独的线程中处理并在处理消息之前提交)。

简而言之,1 ack 的问题在于,当你得到成功的响应时,这意味着该分区的领导者有记录,但追随者没有,并且如果领导者重新启动,则任何尚未消费的消息代理端的最小同步副本肯定会丢失。这是有意为之的,acks=all 更加健壮,但会带来性能损失,因此 Kafka 允许您选择更重要的内容 - 最小套件的高吞吐量或保证交付。

我在 https://chrisg23.blogspot.com/2020/02/kafka-acks-configuration-apology.html?m=1 写了一篇关于此的文章其中有更多关于正在发生的事情的细节,希望大家感兴趣(尽管说实话有点啰嗦)

关于java - 向kafka生成消息,但消费者没有收到 “some”的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62247685/

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