繁体   English   中英

Kafka 节点 - BrokerNotAvailableError

[英]Kafka-node - BrokerNotAvailableError

我有一个 kafka-node ("kafka-node": "^2.6.1",)客户端,当我在 localhost 中运行 node app 并与remote_address:2181连接时,它成功地生成了消息。 但是在部署到测试服务器时,相同的代码会产生以下错误。

BrokerNotAvailableError: Broker not available
0|www      |     at new BrokerNotAvailableError (/var/www/backend/node_modules/kafka-node/lib/errors/BrokerNotAvailableError.js:11:9)
0|www      |     at Client.loadMetadataForTopics (/var/www/backend/node_modules/kafka-node/lib/client.js:371:15)
0|www      |     at Client.send (/var/www/backend/node_modules/kafka-node/lib/client.js:542:10)
0|www      |     at /var/www/backend/node_modules/kafka-node/lib/client.js:240:10
0|www      |     at /var/www/backend/node_modules/kafka-node/node_modules/async/dist/async.js:473:16
0|www      |     at iteratorCallback (/var/www/backend/node_modules/kafka-node/node_modules/async/dist/async.js:1064:13)
0|www      |     at /var/www/backend/node_modules/kafka-node/node_modules/async/dist/async.js:969:16
0|www      |     at buildRequest (/var/www/backend/node_modules/kafka-node/lib/client.js:256:24)
0|www      |     at /var/www/backend/node_modules/kafka-node/node_modules/async/dist/async.js:3110:16
0|www      |     at eachOfArrayLike (/var/www/backend/node_modules/kafka-node/node_modules/async/dist/async.js:1069:9)
0|www      |     at eachOf (/var/www/backend/node_modules/kafka-node/node_modules/async/dist/async.js:1117:5)
0|www      |     at Object.eachLimit (/var/www/backend/node_modules/kafka-node/node_modules/async/dist/async.js:3172:5)
0|www      |     at Client.sendProduceRequest (/var/www/backend/node_modules/kafka-node/lib/client.js:238:9)
0|www      |     at HighLevelProducer.BaseProducer.send (/var/www/backend/node_modules/kafka-node/lib/baseProducer.js:120:10)
0|www      |     at /var/www/backend/clients/3rdparty/kafka.js:104:16

可能的原因可能是 remoteServer 阻止了端口 2181 上的传入请求,但我能够在remote_address:2181进行 telnet。 这是我的代码:

const clientConfig = {
connectionString: process.env.KAFKA_HOST,
clientId: process.env.KAFKA_CLIENTID || 'nodejs-kafka-client'
}
client = new kafka.Client(clientConfig.connectionString, 
clientConfig.clientId)

producer = new kafka.HighLevelProducer(client, {})
bindListeners()

我在 kafka-node repo 上读到了一个类似的问题 提出这个问题的人似乎使用了一些 zookeeper 配置来解决它。 我使用zookeeper的默认配置。 我不确定这是否是原因之一,因为我能够连接到我的本地主机。

我在 /etc/hosts 中添加了 kafka IP

之后我能够解决这个问题

对于你们所有人,尝试 kafka-node。

尝试使用 kafka.KafkaClient() 而不是 kafka.client()。 它直接使用 Kafka-broker,而不是通过 zookeeper 连接。

虽然,我确信也可以更新 zookeeper 配置以支持 kafka.client() 方式。 但我不确定,实际配置是什么。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM