如何使用添加到数据库的新主题列表重新加载/重新初始化Kafka Consumer

时间:2018-06-27 15:19:26

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

我有这个代码在我的节点后端启动时加载,我只是通过使用针对Kafka Consumer的静态主题列表更改了此代码,现在它使用了从数据库读取的一系列主题。我不知道的是,当用户使用React前端添加主题时,如何初始化Kafka Consumer以从数据库中重新加载主题列表。我可以从前端到后端进行API调用,但是一旦到达后端,我就不知道要调用什么来让Kafka Consumer从数据库中重新读取列表,并开始使用该主题列表,已通过用户添加或删除而更改。

此代码使用node-rdkafka软件包。我确实看到了Consumer.disconnect函数,但不确定这是否是最好的方法,还是不确定是否可以重新加载init函数?

async init(success, error, services) {

    const client = new pg.Client(config.connectionString);
    var topicsList;

    await consumer.connect(); 
    await client.connect()
    await client.query('SELECT topic FROM public.job;').then(topics => {
        topicsList = Array.from(Object.keys(topics.rows), k=>topics.rows[k].topic)
    });
    await client.end(); 

   consumer.on('ready', function() {
      //consumer.subscribe(['some_Data', 'other_Data', 'and_more_Data', 'deez_Data', 'etc_Data', 'hooha_Data', 'mine_Data']);
      consumer.subscribe(topicsList);
      consumer.consume();
    })
    consumer.on('data', function(data) {
        const { container } = services;

        success(data, services, 7)  //write data to DB

    });

  }

0 个答案:

没有答案