【问题标题】:kafka-node - pass arguments to async function consumer.on();kafka-node - 将参数传递给异步函数 consumer.on();
【发布时间】:2016-06-14 21:27:51
【问题描述】:

我在我的 node.js 服务器上使用kafka-node - 用于连接到 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);
});

编辑: 这是一个更大代码的 sn-p。 完整的流程是:

  1. 用户向 node.js 服务器请求 http 请求。
  2. GET HTTP 请求在 node.js 服务器中被触发。
  3. kafka 生产者向外部系统发送一些消息(具有唯一 ID)并等待响应。
  4. 收到对 kafka 消费者的响应。接收到的消息 id 与预期的 id 进行比较 - 如果相等 - 将消息作为 http 响应返回。

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

【问题讨论】:

  • 让我们假设,事件传递了名为 id 的第二个参数,但 id == message.id 将始终为 true。那么你到底期待什么?
  • @Oxi 我已将帖子编辑得更准确。

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


【解决方案1】:

您不能向回调添加参数。但我相信你可以在没有它的情况下实现你想要做的事情——只需引用一个在闭包范围内的变量。

例如,如果您有:

var id = 1001;

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

我相信这会如你所愿。

【讨论】:

  • 我想知道是否有不同的方法.. 但我想没有。我会尝试并更新..
猜你喜欢
  • 2021-08-28
  • 2020-08-03
  • 2015-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-29
  • 2020-12-27
  • 2012-10-17
相关资源
最近更新 更多