I am trying to set up a connection to Kafka using Docker. When running the code locally everything is working correctly, but when trying to run it using Docker Compose, I am getting the following error:
Traceback (most recent call last):
File "alerts_monitor_service.py", line 23, in <module>
collect_data_from_db_and_alert()
File "alerts_monitor_service.py", line 11, in collect_data_from_db_and_alert
kafka_dic = kafka_set_up()
File "/monitor_service/src/logic.py", line 49, in kafka_set_up
producer = KafkaProducer(bootstrap_servers=["localhost:9092"])
File "/usr/local/lib/python3.8/site-packages/kafka/producer/kafka.py", line 381, in __init__
client = KafkaClient(metrics=self._metrics, metric_group_prefix='producer',
File "/usr/local/lib/python3.8/site-packages/kafka/client_async.py", line 244, in __init__
self.config['api_version'] = self.check_version(timeout=check_timeout)
File "/usr/local/lib/python3.8/site-packages/kafka/client_async.py", line 900, in check_version
raise Errors.NoBrokersAvailable()
kafka.errors.NoBrokersAvailable: NoBrokersAvailable
This is how I setup kafka in my docker-compose.yaml
file:
version: "3.6"
services:
zookeeper:
image: wurstmeister/zookeeper
ports:
- 2181:2181
depends_on:
- mongo
kafka:
image: wurstmeister/kafka
ports:
- 9092:9092
environment:
KAFKA_ADVERTISED_HOST_NAME: localhost
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
depends_on:
- mongo
- zookeeper
mongo:
container_name: mongo_db
image: mongo:latest
ports:
- "27017:27017"
volumes:
- "./data/mongo:/data/db"
This is where I am getting the bug:
producer = KafkaProducer(bootstrap_servers=["localhost:9092"])
producer = KafkaProducer()
producer = KafkaProducer(value_serializer=lambda v: json.dumps(v).encode('utf-8'))