如果使用 node-rdkafka 创建的消费者实例超过 3 个,则出现网络超时错误
Network timeout error if more than 3 consumer instances created using node-rdkafka
我正在使用 node-rdkafka 连接到云虚拟机上托管的 Kafka 实例。
我有多个消费者,每个消费者都使用以下 Kafka 配置:
"group.id": "librd-test",
"metadata.broker.list": `${process.env.KAFKA_HOST}:9092`,
"socket.keepalive.enable": true,
'enable.auto.commit': true,
"debug": "all"
只有 5 个主题,只有当我创建的消费者实例少于 4 个时,我的消费者代码才能正常工作。如果我添加超过 3 个,我的 nodejs express 服务器 returns 任何外部请求都会超时。
像例如。我正在其中一个消费者中进行虚拟 api 调用提取:
const tmp = await fetch('https://jsonplaceholder.typicode.com/todos/1', {timeout: 10000})
.then(response => response.json());
如果我创建了 3 个以上的消费者实例,这段代码会莫名其妙地超时。虽然,如果有 3 个或少于 3 个消费者实例,它工作得很好。上面的获取调用在消费者的数据事件中被调用:
consumer.on("data", async function (m) {
counter++;
consumer.commit(m);
// Fetch Call
const tmp = await fetch('https://jsonplaceholder.ty....
为什么我在添加更多消费者时出现这些网络超时?
我尝试过的事情:
- 正在更改消费者组名称。
- 正在为特定主题添加更多分区。
对于托管 Kafka:我正在使用 https://lenses.io/box/ 和免费许可证密钥。
我正在使用 node-rdkafka 连接到云虚拟机上托管的 Kafka 实例。 我有多个消费者,每个消费者都使用以下 Kafka 配置:
"group.id": "librd-test",
"metadata.broker.list": `${process.env.KAFKA_HOST}:9092`,
"socket.keepalive.enable": true,
'enable.auto.commit': true,
"debug": "all"
只有 5 个主题,只有当我创建的消费者实例少于 4 个时,我的消费者代码才能正常工作。如果我添加超过 3 个,我的 nodejs express 服务器 returns 任何外部请求都会超时。 像例如。我正在其中一个消费者中进行虚拟 api 调用提取:
const tmp = await fetch('https://jsonplaceholder.typicode.com/todos/1', {timeout: 10000})
.then(response => response.json());
如果我创建了 3 个以上的消费者实例,这段代码会莫名其妙地超时。虽然,如果有 3 个或少于 3 个消费者实例,它工作得很好。上面的获取调用在消费者的数据事件中被调用:
consumer.on("data", async function (m) {
counter++;
consumer.commit(m);
// Fetch Call
const tmp = await fetch('https://jsonplaceholder.ty....
为什么我在添加更多消费者时出现这些网络超时?
我尝试过的事情:
- 正在更改消费者组名称。
- 正在为特定主题添加更多分区。
对于托管 Kafka:我正在使用 https://lenses.io/box/ 和免费许可证密钥。