我的docker编写文件
version: '3'
services:
zookeeper:
container_name: zookeeper
image: confluentinc/cp-zookeeper
ports:
- "32181:32181"
environment:
ZOOKEEPER_CLIENT_PORT: 32181
ZOOKEEPER_TICK_TIME: 2000
ZOOKEEPER_SYNC_LIMIT: 2
kafka:
container_name: kafka
image: confluentinc/cp-kafka
ports:
- "9094:9094"
environment:
KAFKA_ZOOKEEPER_CONNECT: localhost:32181
KAFKA_LISTENERS: INTERNAL://localhost:9092,OUTSIDE://localhost:9094
KAFKA_ADVERTISED_LISTENERS: INTERNAL://localhost:9092,OUTSIDE://localhost:9094
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,OUTSIDE:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
ES_JAVA_OPTS: "-Xms512m -Xmx3000m"
生产商代码是
var kafka = require('kafka-node'),
Producer = kafka.Producer,
KeyedMessage = kafka.KeyedMessage,
client = new kafka.KafkaClient({kafkaHost:"localhost:9094"}),
producer = new Producer(client),
km = new KeyedMessage('key', 'message'),
payloads = [
{ topic: 'topic1', messages: 'hi', partition: 0 },
{ topic: 'topic1', messages: ['hello', 'world', km] }
];
client.createTopics(topicsToCreate, (error, result) => {
echo ("------------------------KAFAK--------------------")
console.log(error);
console.log(result);
});
在向主题发送付费负载之前创建主题时出现以下错误
{ BrokerNotAvailableError: Broker not available (loadMetadataForTopics)
at new BrokerNotAvailableError (C:\wamp64\www\ws-proxy\HOZ-KOG-WebSocket_NodeJS\node_modules\kafka-node\lib\errors\BrokerNotAvailableError.js:11:9)
at KafkaClient.loadMetadataForTopics (C:\wamp64\www\ws-proxy\HOZ-KOG-WebSocket_NodeJS\node_modules\kafka-node\lib\kafkaClient.js:891:21)
at KafkaClient.loadMetadata (C:\wamp64\www\ws-proxy\HOZ-KOG-WebSocket_NodeJS\node_modules\kafka-node\lib\kafkaClient.js:876:8)
at KafkaClient.getController (C:\wamp64\www\ws-proxy\HOZ-KOG-WebSocket_NodeJS\node_modules\kafka-node\lib\kafkaClient.js:267:8)
at KafkaClient.sendControllerRequest (C:\wamp64\www\ws-proxy\HOZ-KOG-WebSocket_NodeJS\node_modules\kafka-node\lib\kafkaClient.js:1219:8)
at KafkaClient.createTopics (C:\wamp64\www\ws-proxy\HOZ-KOG-WebSocket_NodeJS\node_modules\kafka-node\lib\kafkaClient.js:935:8)
at C:\wamp64\www\ws-proxy\HOZ-KOG-WebSocket_NodeJS\index_behind_kong.js:60:11
at C:\wamp64\www\ws-proxy\HOZ-KOG-WebSocket_NodeJS\node_modules\kafka-node\lib\baseClient.js:370:18
at KafkaClient.loadMetadataForTopics (C:\wamp64\www\ws-proxy\HOZ-KOG-WebSocket_NodeJS\node_modules\kafka-node\lib\kafkaClient.js:891:12)
at RetryOperation._fn (C:\wamp64\www\ws-proxy\HOZ-KOG-WebSocket_NodeJS\node_modules\kafka-node\lib\baseClient.js:360:12) message: 'Broker not available (loadMetadataForTopics)' }
undefined
在调用createtopic方法之前,我已经给出了5秒的延迟,但是没有发现任何问题。
请帮忙。
1条答案
按热度按时间vjhs03f71#
我很少尝试
Kafka\uZookeeper\u连接:localhost:32181 should 更改为kafka\u zookeeper\u connect:zookeeper:32181
对于“内部”侦听器:从internal://localhost:9092至internal://kafka:9092
你在Kafka集装箱里找不到zookeeper的dependson了
希望您已确保本地主机上的端口9094和32181上没有运行其他服务。
在使用java应用程序之前,请尝试使用kafka主题“sh或bat”脚本进行连接
我不认为这会是一个问题,但您仍然可以尝试在这两个服务下添加一个公共网络标记,也可以在compose文件下添加,例如:networks:-kafka network
有用的链接:https://www.confluent.io/blog/kafka-listeners-explained/ (查看“如何连接docker上的Kafka”一节)