Как потреблять сообщения кафки из отдельного контейнера с запущенным кафка-узлом? - PullRequest
0 голосов
/ 10 июня 2019

У меня есть 2 отдельных док-контейнера.Один (openjdk:alpine) работает под управлением Apache Kafka.На другом (node:alpine) работает кафка-узел.Я был в состоянии создавать темы и создавать сообщения.Я также успешно использовал эти сообщения через java и kafka-node локально в контейнере, где запущен Kafka.Однако, когда я беру тот же код узла kafka и помещаю его в свой выделенный контейнер NodeJS, я больше не могу использовать ИЛИ генерировать сообщения.Однако мне кажется странным, что я могу перечислить все темы, используя KafkaAdmin.

Я просмотрел документы и прошел через многочисленные темы S / O, но не повезло.Я чувствую, как будто это что-то делать с комбинацией переменных среды и server.properties?Я также попытался включить отладчик и заметил, что как для потребителя, так и для производителя сокет будет закрываться почти сразу после каждого повторного соединения.

IP

My host-ip: host

My container-ip running Apache-Kafka: apachekafka

My container-ip running kafka-node: kafkanode

Server.Properties в контейнере Apache-Kafka

listeners=PLAINTEXT://:9092

advertised.listeners=PLAINTEXT://:9092

consumer.js

var kafka = require('kafka-node')

const client = new kafka.KafkaClient({kafkaHost:"apachekafka:9092"})
const consumer = new kafka.Consumer(
    client,
    [{ topic: 'topic1', partition: 0 }],
    {autoCommit: false}
)


consumer.on('message', function (message) {
    console.log(message);
});

consumer.on('error', function (err) {
    console.error(err)
})

Любая помощь или руководство очень ценится.

...