spring-boot - Spring Boot App 拒绝连接到 Kafka 代理
问题描述
所以我最近才开始使用 Kafka,出于某种奇怪的原因,尽管 kafka 和 zookeeper 服务器容器按照文档中的预期运行,并且使用命令 docker ps。我不断收到此特定错误
我一直在尝试使用不同的配置解决这个问题大约一个星期,但它仍然给我一个无限循环的错误。
我遵循了这两个教程: https ://rmoff.net/2018/08/02/kafka-listeners-explained/和https://www.youtube.com/watch?v=-0vrqMMGQbc
docker-compose up 运行得非常好并且代理启动但是当我启动 mvn spring-boot:run 命令时它失败了。
我也尝试通过我的本地机器更改地址,但仍然没有。将不胜感激一些帮助
这是我的 docker-compose.yml
version: '3.2'
services:
zookeeper:
container_name: zookeeper
image: wurstmeister/zookeeper
ports:
- "2181:2181"
environment:
ZOOKEEPER_CLIENT_PORT: 2181
kafka:
container_name: kafka
image: wurstmeister/kafka
ports:
- "9092:9092"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_LISTENERS: INTERNAL://:19092,EXTERNAL://:9092
KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka:19092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'false'
depends_on:
- zookeeper
volumes:
- /var/run/docker.sock:/var/run/docker.sock
这是我的 application.yml
# Server
server:
port: 8090
# Spring Kafka & H2
spring:
autoconfigure:
exclude: org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration
kafka:
bootstrap-servers: localhost:9092
h2:
console:
enabled: true
path: /h2
datasource:
url: jdbc:h2:mem:api;MODE=MySQL
username: api
password: root
driverClassName: org.h2.Driver
result:
topic.name: result
# Keycloak
keycloak:
auth-server-url: http://localhost:8080/auth
realm: demo
resource: demo-api
enabled: false
public-client: false
bearer-only : true
principal-attribute: preferred_username
allow-any-hostname: true
# credentials:
# secret:
# Logging
logging:
level:
org.springframework.web: DEBUG
org.hibernate: DEBUG
org: INFO
com.API.demo.Controllers: DEBUG
config: src/main/resources/logback-spring.xml
file:
path: logs/log
解决方案
未正确定义 Advertised Listener
代替
KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka:19092
你需要
KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka:19092,EXTERNAL://localhost:9092
另请注意,如果您希望代理自动创建主题,您需要设置
KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true'
推荐阅读
- java - 缩短代码 JDBC
- matlab - Matlab 无法导入矩阵市场文件
- c - MPI_Gatherv 内存问题 (MPI+C)
- json - 将嵌套的 SCSS 映射导出为 Json
- neo4j - guides.neo4j.com/wiki 的密码语句中的 ServiceUnavailable 错误
- c# - Itextsharp 段落更改第二行的缩进
- r - 布尔 AND 和 OR 在 R 中选择行/列,而不创建临时副本?
- php - 在 Wordpress 中加载依赖于 jquery 的脚本(导致问题)
- c# - 由于 Watson 的包问题引发异常
- angularjs - 使用Angularjs如何通过单击编辑按钮从表中绑定下拉值控件?