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