Apache Kafka,节点js和点对点工作流程

时间:2017-06-10 00:14:57

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

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

如何实现点对点工作流程?即,一个或多个消费者可以使用队列中的消息,但是特定消息只能由一个消费者消费。消费者在队列中读取消息后,它应该从该队列中消失。

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

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);
});

任何帮助将不胜感激!

由于

1 个答案:

答案 0 :(得分:0)

您需要在消费者中设置一个公共消费者群组,以便互相分发消息。

您的主题中至少需要与您的使用者组中的使用者一样多的分区,因为该组中的每个使用者都会获得不同的分区