Apache Kafka是一个非常流行的事件流平台,经常与Docker一起使用。通常,当客户端不在同一个Docker网络或主机上时,人们会遇到与Kafka建立连接的问题。这主要是由于Kafka的公开监听器配置不当造成的。
在本教程中,我们将学习如何配置监听器,以便客户端可以连接到在Docker中运行的Kafka代理。
2. 设置Kafka
在我们尝试建立连接之前,我们需要使用Docker运行一个Kafka代理。这是我们的docker-compose.yaml文件的一个片段:
version: '2'
services:
zookeeper:
container_name: zookeeper
networks:
- kafka_network
...
kafka:
container_name: kafka
networks:
- kafka_network
ports:
- 29092:29092
environment:
KAFKA_LISTENERS: EXTERNAL_SAME_HOST://:29092,INTERNAL://:9092
KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka:9092,EXTERNAL_SAME_HOST://localhost:29092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL_SAME_HOST:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
...
networks:
kafka_network:
name: kafka_docker_example_net