您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

无法从容器外部运行的Spring Boot应用程序连接到容器中运行的Kafka

无法从容器外部运行的Spring Boot应用程序连接到容器中运行的Kafka

如果我从docker容器内部运行spring boot(使用一个docker compose文件),那么它确实起作用

实际上,它不应该工作。Kafka并未作为应用程序的一部分运行,因此本节未针对Kafka容器。

kafka:
    bootstrap-servers: localhost:9092

它必须kafka:9092在Docker网络中。

在Docker网络的内部和外部,通过指定KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092,表示您的客户端收到的Kafka引导程序连接为localhost:9092,该连接仅在您进行端口转发并且您的容器在localhost上运行时才在Docker网络外部起作用,然而,多克尔网络内部,如前所述,本地主机将意味着 应用程序容器,而不是经纪人。

解决方案是通过该属性创建两个端口映射,如本博客文章中详细讨论的那样

另外,Confluent提供了一个完整配置的Docker Compose,其中包含适用于Docker内部和外部的适当映射

ports:
  - "9092:9092"
  - "29092:29092"
environment:
  KAFKA_BROKER_ID: 1
  KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
  ALLOW_PLAINTEXT_LISTENER: "yes"
  KAFKA_LISTENER_Security_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
  KAFKA_LISTENERS: PLAINTEXT://:9092,PLAINTEXT_HOST://:29092
  KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092

对于Docker网络中的应用程序,请使用kafka:9092,对于外部的应用程序,请使用

Java 2022/1/1 18:13:41 有845人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶