Вот файл yml
, который используется для вызова докер-контейнеров в экземпляре AWS для kafka и zookeeper:
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
с указанным выше файлом, это приводит к созданию Docker-сети с именем kafka-docker
с контейнером kafka и контейнером zookeeper.
Теперь в докерной сети по умолчанию bridge
у меня есть другой контейнер со следующим фрагментом кода 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)
выдает мне ошибку «Брокер недоступен». Может кто-нибудь сказать, пожалуйста, что не так с моей настройкой?