所以我刚刚开始探索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);
});
任何帮助将不胜感激!
由于
答案 0 :(得分:0)
您需要在消费者中设置一个公共消费者群组,以便互相分发消息。
您的主题中至少需要与您的使用者组中的使用者一样多的分区,因为该组中的每个使用者都会获得不同的分区