向kafka发送的消息,但消费者未收到其中的一些消息

问题描述 投票:0回答:1

有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中。

这里可能是什么问题。

提前感谢。

java apache-kafka kafka-consumer-api kafka-producer-api
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.