docker - kafka 生产者 docker 无法连接到代理 docker - AWS
问题描述
这yml
是用于在 AWS 实例中为 kafka 和 zookeeper 启动 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
使用 kafka 容器和 zookeeper 容器调用的 docker 网络。
现在,在默认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)
给了我错误“经纪人不可用”。有人可以告诉我我的设置有什么问题吗?
解决方案
注意这一行:
const client = new kafka.Client("<machines private ip>:2181");
这不是 Kafka 正在侦听的端口。Kafka 正在侦听端口 9092 上的连接:
const client = new kafka.Client("<machines private ip>:9092");
它应该在此更改后工作。
推荐阅读
- python - 如何将 Jupyter 的 python 版本从 3.7 更改为 3.8?
- unit-testing - Flutter Android Studio 单元测试 - 需要删除运行/调试配置以获取更改的代码
- javascript - sapper 中的索引链接创建第二个索引页面
- r - 如何在 R 中复制每个组级别的特定行数
- android - Kotlin 测试套件:注释参数必须是编译时常量
- c# - 使用适用于 C# 的 Kubernetes 客户端重新启动 Kubernetes pod
- git - 远程拒绝主 -> 主(不允许浅更新)错误:未能推送一些参考
- node.js - 在数据库或后端进行比较?
- python - “找不到 html 模板”错误(VS 代码)
- python - 当数据无序时,熊猫从另一个数据框中复制值