我正在尝试为以下内容进行POC:
我在azure上托了一个kafka容器 . 当消费者在azure中时,我能够从消费者向此kafka实例发送消息 .
在docker-compose中
Kafka配置:
kafka:
image: confluentinc/cp-kafka:latest
depends_on:
- zookeeper
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: kafka
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://kafka:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_BROKER_ID: 1
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_HEAP_OPTS: "-Xmx256M -Xms128M"
KAFKA_LOG_DIRS: /var/lib/winkafka
生产环境 者应用程序配置在azure上与kafka交谈:
"Endpoint": "kafka:9092"
Kafka 与消费者之间在天蓝色之间的沟通正在发生 .
现在,我想让消费者在本地,而不是在天蓝色 . 所以我所做的只是从azure vm公开端口9092,并将 endpoints 更新为以下内容:
本地 生产环境 者应用程序配置与azure上的kafka交谈:
"Endpoint": "Azure Vm's Public IP:9092"
但是,它无法从我的本地应用程序连接到天蓝色的 Kafka .
你能否建议我在这里做错了什么以及我如何能够从本地应用程序连接到在天蓝色(或任何 Cloud )上的容器中运行的kafka?
1 回答
您需要为单独的网络配置Kafka侦听器(内部Azure与公共IP) . 有关详细说明,请参阅https://rmoff.net/2018/08/02/kafka-listeners-explained/ .
免责声明:我写了博客文章:)