首页 文章

偶尔发布到 Kafka 的消息丢失了

提问于
浏览
0

嗨,我有一个自定义框架,它公开API以发布和使用 . 我支持很多主题供用户发帖和使用 . 这似乎工作得很好,除了偶尔,我发布消息到主题后,我的消费者没有得到任何消息 . 这很奇怪,因为 Kafka 已经运转良好了 . 在此错过的消息之前和之后的其他主题的其他消息正常工作 . 在此事件发生后,同一主题的消息也会提供给消费者 .

如果它有帮助,我每个主题只有一个分区 . 当我打开KafaServerLog / data目录并搜索特定主题时,在我的开发环境中,每次都会看到条目,我发布和使用 . 但是,发生这种情况的问题(在客户端位置)日志文件为空 . 我在这里错过了什么吗?

2 回答

  • 0

    Producer api为您提供回调,您可以使用它来跟踪 生产环境 者中偶然出现的问题 . 示例代码如下所示:

    try (Producer<String, String> producer = new KafkaProducer<>(producerProps)) {
        producer.send(new ProducerRecord<String, String>("My-topic", "message payload"), new Callback() {
            public void onCompletion(RecordMetadata metadata, Exception ex) {
                if (ex != null) {
                    LOGGER.warn(String.format("Failed to produce record. Got Exception: %s", ex));
                } else {
                    LOGGER.info("Sent record successfully");
                }             
            }
        });
    }
    
  • 0

    您是否在Kafka主题中看到该消息,但未传递给消费者?

    调试或重新创建场景很困难,但你可以强制确认kafka 生产环境 者的'all' . 并且为了验证,保存 生产环境 者发送的每条消息的RecordMetadata . 这将有助于确认kafka确实提交了该消息 .

    虽然不确定日志文件 .

相关问题