【发布时间】:2018-05-13 19:03:28
【问题描述】:
想象一下与 Kafka 集群的连接已经关闭(例如 eth 电缆被切断),并且迟早缓冲区队列会被填满。如何从缓冲区中获取这些消息并将其发送到本地存储?谢谢!
【问题讨论】:
标签: node.js apache-kafka
想象一下与 Kafka 集群的连接已经关闭(例如 eth 电缆被切断),并且迟早缓冲区队列会被填满。如何从缓冲区中获取这些消息并将其发送到本地存储?谢谢!
【问题讨论】:
标签: node.js apache-kafka
如果 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 对象包含重新发送它所需的所有信息(主体、密钥、分区)。
【讨论】: