我有Kafka,Zookeeper和其他一些服务都在Docker中运行,并由docker-compose文件管理。
所有这些服务都可以正常工作,并且可以连接到Kafka并按预期发送/接收。
我在IDE中也有一个本地Spring Cloud Stream项目,我想连接到在Docker中运行的kafka实例(用于开发)。
使用此配置,随机服务可以通过在其自身属性中将Kafka地址设置为ClassCastException
来与Kafka通信。
kafka:9092
但是在我的IDE中运行的服务无法连接。我在application.yml文件中唯一配置的是
version: '3'
services:
random-service:
container_name: random-service
links:
- kafka
- zookeeper
depends_on:
- kafka
zookeeper:
image: wurstmeister/zookeeper
ports:
- 2181:2181
kafka:
image: wurstmeister/kafka:0.11.0.0
ports:
- 9092:9092
depends_on:
- zookeeper
environment:
KAFKA_ADVERTISED_HOST_NAME: kafka
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
volumes:
- /var/run/docker.sock:/var/run/docker.sock
启动时,我得到spring:
cloud:
stream:
bindings:
input:
destination: testtopic
,这很有意义,因为它不在容器中运行。
如果我改变周围的环境并将java.io.IOException: Can't resolve address: kafka:9092
设置为KAFKA_ADVERTISED_HOST_NAME: kafka
,我的Spring服务便可以连接了,但是我在Docker容器中的其他服务却无法连接。
我不确定这是Docker,Kafka还是spring-cloud-stream配置问题。
有帮助吗?