如何使用Kafka在consumer中发送和消费相同的头(node-rdkafka)

3htmauhk  于 2023-04-29  发布在  Apache
关注(0)|答案(3)|浏览(149)

我尝试为我的Kafka主题实现重试机制。所以我在producer header中设置了rerty count。而消费者不给予我头。

var headers = [ {"retry":5}]
producer.produce(topic, partition, message, key, timestamp,headers);
dy1byipe

dy1byipe1#

根据这里找到的生产者文档。在标准API中使用produce():https://www.npmjs.com/package/node-rdkafka

  • 您可以在此处发送不透明令牌,该令牌将沿着到您的交付报告 *

这意味着不透明值没有与消息一起存储,这就是为什么消费者不能使用它的原因。相反,不透明值将在传递报告中发送回。这意味着您必须提供一个交付报告回调并从交付报告中读取值。

bejyjqdl

bejyjqdl2#

在producer中,我放错了头参数
而不是这个

var headers = [ {"retry":5}]
producer.produce(topic, partition, message, key, timestamp,headers);

必须是这样

var headers = [ {"retry":5}]
producer.produce(topic, partition, message, key, timestamp,opaque,headers);

标题将作为对象返回。你可以使用数据在onData函数中读取你的头。集管

ni65a41a

ni65a41a3#

有时候,你会得到这样的标题:

"headers":[{"env":{"type":"Buffer","data":[105,100,116,51]}},{"deployment.messagingModee":"Buffer","data":[82,83,71,62,82,64,81,71,78,71]}}],"size":37266,"key":null,"topic":"TOPIC_NAME","offset":214rtition":4,"timestamp":1681908958595}

相关问题