Настройка:
У меня есть 3 docker контейнеров
1) For Kafka
2) For Zookeeper
3) For JupyterLab
Я настраиваю сетевое взаимодействие между этими контейнерами и вижу, что производитель kafka может запускать и производить данные.
KafkaProducer.ipynb
KAFKA_BROKER = ['172.20.0.2:9093']
from kafka import KafkaProducer
from kafka.errors import KafkaError
producer = KafkaProducer(bootstrap_servers=KAFKA_BROKER)
for _ in range(100):
print("sending")
producer.send('my-topic', key=b'foo', value=b'bar')
print("success")
Здесь send () отправляет сообщение 100 раз.
KafkaConsumer.ipynb
KAFKA_BROKER = ['172.20.0.2:9093']
from kafka import KafkaConsumer
consumer = KafkaConsumer('my-topic',group_id='my-group',bootstrap_servers=KAFKA_BROKER)
print("Comm success")
for message in consumer:
# message value and key are raw bytes -- decode if necessary!
# e.g., for unicode: `message.value.decode('utf-8')`
print ("%s:%d:%d: key=%s value=%s" % (message.topic, message.partition,
message.offset, message.key,
message.value))
У указанного выше потребителя код строки print("Comm success")
никогда не исполняется. Основываясь на выполнении кода производителя, сеть открыта, и jupyter может общаться с брокером kafka. Но клиент не может подключиться к одному и тому же брокеру для потребления данных. Как мне начать отладку этого?