无法从通过intellij运行的spring boot应用程序连接到我在docker上运行的kafka
Posted
技术标签:
【中文标题】无法从通过intellij运行的spring boot应用程序连接到我在docker上运行的kafka【英文标题】:Can't connect to my kafka running on docker from spring boot application running via intellij 【发布时间】:2022-01-04 16:48:43 【问题描述】:我有一个包含 Kafka、zookeeper 和 spring boot 应用程序的 docker-compose 文件。 当我运行整个文件时,一切正常。 当我在没有 Spring Boot 应用程序的情况下运行它以通过 intellij 对其进行调试时,它无法连接到 Kafka 并且无法正常工作。
我的 docker-compose 文件:
version: "3.5" services: # Install Zookeeper. zookeeper:
container_name: zookeeper
image: debezium/zookeeper:1.2
networks:
- mynetwork
ports:
- 2181:2181
- 2888:2888
- 3888:3888 # Install Kafka. kafka:
container_name: kafka
image: debezium/kafka:1.2
depends_on:
- zookeeper
ports:
- 9092:9092
- 29092:29092
networks:
- mynetwork
extra_hosts:
- "host.docker.internal:host-gateway"
environment:
- ZOOKEEPER_CONNECT=zookeeper:2181
- KAFKA_LISTENER_SECURITY_PROTOCOL_MAP= INTERNAL:PLAINTEXT,PLAINTEXT:PLAINTEXT,EXTERNAL_SAME_HOST:PLAINTEXT
- KAFKA_ADVERTISED_LISTENERS= INTERNAL://kafka:9092,EXTERNAL_SAME_HOST://localhost:29092
- KAFKA_LISTENERS= EXTERNAL_SAME_HOST://:29092,INTERNAL://:9092
- KAFKA_INTER_BROKER_LISTENER_NAME= PLAINTEXT # Install Postgres. postgres:
container_name: postgres
image: debezium/postgres:12
volumes:
- ./sql/init.sql:/docker-entrypoint-initdb.d/init.sql
ports:
- 5432:5432
networks:
- mynetwork
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=postgres kafka-ui:
container_name: kafka-ui
image: provectuslabs/kafka-ui:0.2.1
ports:
- 8080:8080
networks:
- mynetwork
environment:
- KAFKA_CLUSTERS_0_NAME=local
- KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka:9092 #Deploy a Consumer. consumer:
build:
context: .
container_name: pledge-consumer
environment:
- SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/postgres
ports:
- 8101:8080
networks:
- mynetwork
image: isber/ssm-pledgeservice:v1
depends_on:
- zookeeper
- kafka
- postgres
networks: mynetwork:
external: true
在我尝试过的应用程序中:
spring.kafka.bootstrap-servers=kafka:9092
当我通过 docker 运行它而不是从 intellij 运行它时有效
我也试过用intellij运行时:
spring.kafka.bootstrap-servers=localhost:9092
spring.kafka.bootstrap-servers=localhost:29092
【问题讨论】:
【参考方案1】:我发现问题了,我用的图:
image: debezium/kafka:1.2
有一个问题,它没有读取我添加的环境的任何参数。 我升级到:
image: debezium/kafka:1.4
一切正常。
【讨论】:
以上是关于无法从通过intellij运行的spring boot应用程序连接到我在docker上运行的kafka的主要内容,如果未能解决你的问题,请参考以下文章
Spring Boot无法使用intellij idea启动应用程序
从 IntelliJ 启动时无法激活 Spring 引导配置文件
当 spring-boot 运行时 IntelliJ 进程以退出代码 0 完成
从 IntelliJ Idea 运行/调试 Spring Boot 应用程序