【问题标题】:Apache Kafka, node js and Point-to-point workflowApache Kafka、节点 js 和点对点工作流
【发布时间】:2017-06-10 00:14:57
【问题描述】:

所以我刚刚开始探索kafka(使用node js)并且我正在使用kafka-node模块与kafka进行交互。

如何实现点对点工作流?即一个或多个消费者可以消费队列中的消息,但特定消息最多只能被一个消费者消费。一旦消费者读取队列中的消息,它应该从该队列中消失。

我刚刚编写了一些测试消费者代码(见下文)。当我运行此消费者代码的多个实例并将新消息推送到主题时,所有消费者实例都会拉出消息(并显示在控制台上)。我希望只有 1 个消费者拉出消息并进行处理。

var kafka = require("kafka-node");
var client = new kafka.Client();
var Consumer = kafka.Consumer;

var consumer = new Consumer(
        client,
        [
            { topic: 'testtopic**strong text**', partition: 0 }
        ],
        {
            autoCommit: true,
        }
    )

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

任何帮助将不胜感激!

谢谢

【问题讨论】:

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


    【解决方案1】:

    您需要在您的消费者中建立一个共同的消费者组,以便获得互斥的消息分发。

    您的主题中还需要至少与消费者组中的消费者一样多的分区,因为组中的每个消费者都有不同的分区

    【讨论】:

      猜你喜欢
      • 2018-09-28
      • 2015-08-16
      • 2013-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-28
      相关资源
      最近更新 更多