下面是yml文件,用于在一个用于kafka和zookeeper的AWS实例中调出docker容器:
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- "2181:2181"
kafka:
build: .
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOSTNAME: <machines private ip>
KAFKA_LISTENERS: PLAINTEXT://:9092
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://<machines private ip>:9092
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock当我对上面的文件运行docker-compose命令时,它会导致创建一个名为kafka-docker的docker网络,其中包含一个kafka容器和一个zookeeper容器。
现在,在默认的bridge docker网络中,我有了另一个容器,其中包含以下nodejs代码:
const Producer = kafka.Producer;
const client = new kafka.Client("<machines private ip>:2181");
const producer = new Producer(client);
const kafka_topic = 'hello-topic';
event = ...
event_payload = ...
let payloads = [{topic:kafka_topic ,messages:JSON.stringify(event_payload), partition: 0 }]
let push_status = producer.send(payloads, (err, data) => {
if (err) {
console.log(err);
} else {
console.log('[kafka-producer -> '+kafka_topic+']: broker update success');
}
});console.log(err)给我的错误是‘代理不可用’。有人能告诉我我的设置出了什么问题吗?
发布于 2019-06-26 18:44:50
请注意这一行:
const client = new kafka.Client("<machines private ip>:2181");这不是Kafka正在监听的端口。Kafka正在监听端口9092上的连接:
const client = new kafka.Client("<machines private ip>:9092");经过修改后,它应该可以工作。
https://stackoverflow.com/questions/56768689
复制相似问题