【问题标题】:Is there a way to get messages from the producer queue buffer in node-rdkafka?有没有办法从 node-rdkafka 中的生产者队列缓冲区获取消息?
【发布时间】:2018-05-13 19:03:28
【问题描述】:

想象一下与 Kafka 集群的连接已经关闭(例如 eth 电缆被切断),并且迟早缓冲区队列会被填满。如何从缓冲区中获取这些消息并将其发送到本地存储?谢谢!

【问题讨论】:

    标签: node.js apache-kafka


    【解决方案1】:

    如果 node-rdkafka 无法发送缓冲区中的消息,它将在message.timeout.ms 之后过期,默认为 300000(5 分钟)。当每条消息过期时,它会发出delivery-report 事件并传入错误和消息。

    例如,您可以在此事件上设置一个监听器,并在发生故障时有一些备份逻辑:

    // Register delivery report listener
    producer.on('delivery-report', function(err, report) {
        if (err) {
            console.error('Delivery report: Failed sending message ' + JSON.stringify(report));
            console.error(err);
            // We could retry sending the message or store it locally
        } else {
            console.log('Message produced, offset: ' + report.offset);
        }
    });
    

    report 对象包含重新发送它所需的所有信息(主体、密钥、分区)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-29
      • 1970-01-01
      • 2018-05-05
      • 2015-07-03
      • 1970-01-01
      相关资源
      最近更新 更多