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

标签 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. GET HTTP 请求在 Node.js 服务器中触发。
  3. kafka 生产者向外部系统发送一些消息(具有唯一 ID)并等待响应。
  4. 收到对 kafka 消费者的响应。将收到的消息 id 与预期 id 进行比较 - 如果相等 - 将消息作为 http 响应返回。

考虑可以并行接收多个http get 请求。

最佳答案

您无法向回调添加参数。但我相信您可以实现您想要做的事情,而无需这样做 - 只需引用闭包范围内的变量即可。

例如,如果您有:

var id = 1001;

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

我相信这会达到你想要的效果。

关于javascript - kafka-node - 将参数传递给异步函数consumer.on();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37811500/

相关文章:

javascript - 什么是 'tools for native modules' ?帮助新手决定是否有必要(NodeJS 安装)

javascript - 使用 REST API 时,Meteor 是否保留 react 性

apache-kafka - 跨多个用户扩展 Kafka 流应用程序

apache-kafka - Kafka Streams - 未创建商店

scala - 如何在clojure中创建一个scala对象

javascript - 关于html5 Canvas 图

javascript - 当浏览器调整大小时,将元素保留在父 View 中

node.js - NodeJS 测试一天中不同时间和时区的日期时间

javascript - 带有 websocket 接口(interface)的数据库?

javascript - 使用 jQuery 迭代附加项目