Confluent_kafka Producer не публикует sh сообщений в теме - PullRequest
0 голосов
/ 24 апреля 2020

Я пытался установить Kafka на мой Raspberry. И протестируйте его на 'hello-kafka' topi c:

~ $ /usr/local/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic hello-kafka
>Test message 1
>Test message 2
>Test message 3
>^Z
[4]+  Stopped                 /usr/local/kafka/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic hello-kafka
$ /usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic hello-kafka --from-beginning
Test message 1
Test message 2
Test message 3
^CProcessed a total of 3 messages

Затем я попытался проверить, что сервер работает с другой машины. Проверка zookeeper:

(venv)$ telnet 192.168.1.10 2181
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.
srvr
Zookeeper version: 3.6.0--b4c89dc7f6083829e18fae6e446907ae0b1f22d7, built on 02/25/2020 14:38 GMT
Latency min/avg/max: 0/0.8736/59
Received: 10146
Sent: 10149
Connections: 2
Outstanding: 0
Zxid: 0x96
Mode: standalone
Node count: 139
Connection closed by foreign host.

И Кафка:

(venv) $ telnet 192.168.1.10 9092
Trying 192.168.1.10...
Connected to 192.168.1.10.
Escape character is '^]'.
tets
Connection closed by foreign host.

Затем я написал Python скрипт:

# -*- coding: utf-8 -*-

from confluent_kafka import Producer


def callback(err, msg):
    if err is not None:
        print(f'Failed to deliver message: {str(msg)}: {str(err)}')
    else:
        print(f'Message produced: {str(msg)}')


config = {
            'bootstrap.servers': '192.168.1.10:9092'
        }

producer = Producer(config)
producer.produce('hello-kafka', value=b"Hello from Python", callback=callback)
producer.poll(5)

Есть вывод скрипта (никаких отпечатков нет) ):

(venv) $ python kafka-producer.py 
(venv) $ python kafka-producer.py 
(venv) $ 

И никаких новых сообщений в Кафке:

$ /usr/local/kafka/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic hello-kafka --from-beginning
Test message 1
Test message 2
Test message 3
^CProcessed a total of 3 messages
$ ^C

Кто-нибудь может сказать мне, что я делаю неправильно?

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020

Правильное исправление заключается в обновлении конфигурации вашего брокера в server.properties для правильной настройки рекламируемого слушателя. Если ваш клиент не может разрешить raspberrypi, тогда измените объявленного слушателя на то, чего ваш клиент может достичь, то есть IP-адрес:

advertised.listeners=PLAINTEXT://192.168.1.10:9092

Изменение файла /etc/hosts на вашем клиенте Это обходной путь, который подходит для тестового проекта с Raspberry Pi, но, как правило, не рекомендуется (поскольку клиент сломается, как только он переместится на другую машину, которая не имеет /etc/hosts взломать)

0 голосов
/ 25 апреля 2020

Я включил журнал и увидел следующее сообщение:

WARNING:kafka.conn:DNS lookup failed for raspberrypi:9092, exception was [Errno 8] nodename nor servname provided, or not known. Is your advertised.listeners (called advertised.host.name before Kafka 9) correct and resolvable?
ERROR:kafka.conn:DNS lookup failed for raspberrypi:9092 (AddressFamily.AF_UNSPEC)

Затем я добавил в / etc / hosts на клиентской машине следующую строку:

192.168.1.10 raspberrypi

И это полностью исправило эту ситуацию .

...