我有这个代码在我的节点后端启动时加载,我只是通过使用针对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
});
}