node.js - Kafka Node - BrokerNotAvailableError

标签 node.js apache-kafka apache-zookeeper

我有一个 kafka-node ("kafka-node": "^2.6.1",) 客户端,当我在本地主机中运行 Node 应用程序并与 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

可能的原因可能是远程服务器阻止了端口 2181 上的传入请求,但我能够通过 remote_address:2181 进行远程登录。这是我的代码:

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()

我读到了一个similar issue kafka-node 存储库上的问题。提出这个问题的人似乎使用一些动物园管理员配置来解决它。我使用zookeeper的默认配置。我不确定这是否是原因之一,因为我能够连接到我的本地主机。

最佳答案

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

之后我就能够解决这个问题

关于node.js - Kafka Node - BrokerNotAvailableError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50977184/

相关文章:

node.js - Lambda 始终返回 200

apache-kafka - Kafka 代理节点宕机并出现 "Too many open files"错误

postgresql - 查询模式下的kafka jdbc source connector错误

java - 处理器多次接收具有相同有效负载的多条消息

java - 使用 spring kafka 消费者恢复 kafka 稳定组

node.js - 通过 Postman 或 Karate 执行 HTTP 端点时如何使用 Istanbul 收集代码覆盖率

node.js - WebPack 捆绑变量

docker - 远程登录到正在运行的Zookeeper容器

hadoop - node/hbase-unsecure 不在 ZooKeeper 中。应该是大师写的

node.js - Express Passport failureRedirect 不工作