当前位置: 首页 > 知识库问答 >
问题:

Kafka nodejs单线程模型-添加消费者

向修谨
2023-03-14

我开发了一个基于Java的Kafka消费者,其中每个消费者实例有100个线程,当消费过程开始时,每个线程都得到一个分区(因为有100个分区),然后消费就完成了。

var kafka = require('kafka-node');
var HighLevelConsumer = kafka.HighLevelConsumer;
var Client = kafka.Client;
var client = new Client('xx.xx.xx.xxx:6080');
var topics = [ { topic: "test_1" }];


var options = {
    groupId: 'group1',
    autoCommit: true,
    autoCommitMsgCount: 100,
    autoCommitIntervalMs: 5000,
    fetchMaxWaitMs: 100,
    fetchMinBytes: 1,
    fetchMaxBytes: 1024 * 10,
    fromOffset: false,
    fromBeginning: false
};

var consumer = new HighLevelConsumer(client, topics, options);

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

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

但这里的问题是这只是一个消费者。但是如果我添加多个nodejs进程,我可以完成100个消费者,但是添加每个消费者是一个成本很高的再平衡操作。

我想知道这是否正确的做法?有没有一种方法可以使用Kafka节点触发一个100线程的消费者?

共有1个答案

金宣
2023-03-14

我认为您可以使用supervisor来运行您的节点js代码。在supervisor configuration中,您可以指定需要运行的实例数(在您的情况下为100个)。

配置路径为:/etc/supervisor/conf.d/

 类似资料:
  • 我编写了一个Kafka消费者(使用Spring Kafka),它从单个主题读取并且是消费者组的一部分。一旦消息被消费,它将执行所有下游操作并继续下一个消息偏移量。我已将其打包为WAR文件,我的部署管道将其推送到单个实例。使用我的部署管道,我可能可以将此工件部署到我的部署池中的多个实例。 但是,当我希望多个消费者作为我的基础设施的一部分时,我无法理解以下内容- > 实际上,我可以在部署池中定义多个实

  • 生产者线程与消费者线程使用信号量同步 生产者线程与消费者线程使用信号量同步 源码/* * Copyright (c) 2006-2018, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * 2018-08-24 yangjie the f

  • 数据消费 Talos的高级Consumer为用户解决了数据消费的很多问题,其中一点就是“有记忆”的消费,保证用户在启动Consumer的时候能从“上次消费过”的地方开始消费; Commit Offset:TalosConsumer运行过程中,会不定时的对用户已经消费过的数据进行commit,我们叫做‘commit offset’,含义就是提交到server端记录已经消费的offset,请注意Com

  • 我正在使用Spring Kafka消费者。我已将并发设置为10,并创建了5个消费者(用于5个主题)。所以有50个Spring Kafka消费者线程。 Kafka消费者可以使用的最大线程数是多少?如何增加此线程池的大小?我查阅了spring文档,但没有发现任何相关内容。

  • pika使用的是多线程模型,使用多个工作线程来进行读写操作,由底层blackwidow引擎来保证线程安全,线程分为12种: PikaServer:主线程 DispatchThread:监听1个端口,接收用户连接请求 WorkerThread:存在多个(用户配置),每个线程里有若干个用户客户端的连接,负责接收用户命令,然后将命令封装成一个Task扔到ThreadPool执行,任务执行完毕之后由该线程

  •        LSV支持添加gcm,3ds,obj格式的模型,可以通过将其倒入LSV后进行一系列的操作。        首先,通过点击“添加模型”选择所需要添加的模型文件:        之后可以分别对模型的各项参数进行设置,如旋转、缩放以及其空间信息等。