Node.js ApacheKafka、NodeJS和点对点工作流

Node.js ApacheKafka、NodeJS和点对点工作流,node.js,apache-kafka,kafka-consumer-api,Node.js,Apache Kafka,Kafka Consumer Api,因此,我刚刚开始探索卡夫卡(使用节点js),并使用卡夫卡节点模块与卡夫卡进行交互 如何实现点对点工作流?i、 e.一个或多个消费者可以消费队列中的消息,但一个特定消息最多只能被一个消费者消费。一旦消费者读取队列中的消息,它就应该从该队列中消失 我刚刚编写了一些测试消费者代码(见下文)。当我运行此使用者代码的多个实例并将新消息推送到某个主题时,所有使用者实例都会拉取消息(并显示在控制台上)。我只希望其中一个消费者能够提取消息并对其进行处理 var kafka = require("kafka-no

因此,我刚刚开始探索卡夫卡(使用节点js),并使用卡夫卡节点模块与卡夫卡进行交互

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

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

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);
});
任何帮助都将不胜感激


谢谢

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

由于组中的每个使用者都有不同的分区,因此您的主题中至少需要有与使用者组中的使用者相同数量的分区