kafka-node - 将参数传递给异步函数consumer.on();

时间:2016-06-14 12:04:15

标签: javascript node.js apache-kafka kafka-consumer-api

我正在使用kafka-node作为我的node.js服务器 - 用于连接到kafka主题。在他们的API中有一个回调函数:

consumer.on('message', function (message) {
     console.log(message);
});

用于消息到达时消费。

我想知道是否以及如何为此回调函数添加参数,因为我不是在邮件到达时调用它的人。

更具体地说,我想发送预期的ID并将其与消费的消息ID进行比较:

consumer.on('message', function (message, id) {
    if (id == message.id) 
        console.log(message);
});

修改 这是一个更大代码的片段。 完整的流程是:

  1. 用户询问来自node.js服务器的http请求。
  2. 在node.js服务器中触发GET HTTP请求。
  3. kafka producer向外部系统发送一些消息(带有唯一ID)并等待响应。
  4. 收到卡夫卡消费者的回复。将收到的消息ID与预期的id进行比较 - 如果相等 - 将消息作为http响应返回。
  5. 考虑可以并行接收多个http get请求。

1 个答案:

答案 0 :(得分:1)

您无法为回调添加参数。但我相信你可以实现你想要做的事情 - 只需引用一个在闭包范围内的变量。

例如,如果你有:

var id = 1001;

consumer.on('message', function(message) {
  if (id == message.id) console.log(message);
});

我相信这会做你想要的。