使用Docker,Kafka,Spring Cloud进行开发-容器中的某些服务

时间:2019-04-04 18:04:43

标签: java docker apache-kafka spring-cloud-stream

我有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配置问题。

有帮助吗?

0 个答案:

没有答案