java - 如何将我的容器化项目连接到在本地主机上运行的 kafka?

标签 java spring-boot docker apache-kafka apache-zookeeper

我一直在尝试将我的容器化 spring-boot 项目与在我的本地主机上运行的 kafka 和 Zookeeper 连接,但当我运行 docker 镜像时,我似乎收到错误。

enter image description here

有谁知道什么可能导致此错误,如果是的话,修复它的最佳方法是什么?

我已经暴露了端口 9092 和 2021

编辑: 我被要求发布文本:

2020-04-15 06:55:34,872 [org.springframework.kafka.KafkaListenerEndpointContainer#0-0-C-1] DEBUG common.network.Selector.pollSelectionKeys - [Consumer clientId=consumer-1, groupId=message] Connection with /172.17.59.17 disconnected
java.net.NoRouteToHostException: No route to host
        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
        at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
        at org.apache.kafka.common.network.PlaintextTransportLayer.finishConnect(PlaintextTransportLayer.java:50)
        at org.apache.kafka.common.network.KafkaChannel.finishConnect(KafkaChannel.java:216)
        at org.apache.kafka.common.network.Selector.pollSelectionKeys(Selector.java:531)
        at org.apache.kafka.common.network.Selector.poll(Selector.java:483)
        at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:539)
        at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:262)
        at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:233)
        at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:212)
        at org.apache.kafka.clients.consumer.internals.AbstractCoordinator.ensureCoordinatorReady(AbstractCoordinator.java:249)
        at org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.poll(ConsumerCoordinator.java:326)
        at org.apache.kafka.clients.consumer.KafkaConsumer.updateAssignmentMetadataIfNeeded(KafkaConsumer.java:1251)
        at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:1216)
        at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:1201)
        at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.doPoll(KafkaMessageListenerContainer.java:993)
        at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.pollAndInvoke(KafkaMessageListenerContainer.java:949)
        at org.springframework.kafka.listener.KafkaMessageListenerContainer$ListenerConsumer.run(KafkaMessageListenerContainer.java:901)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.lang.Thread.run(Thread.java:748)
2020-04-15 06:55:34,874 [org.springframework.kafka.KafkaListenerEndpointContainer#0-0-C-1] DEBUG kafka.clients.NetworkClient.handleDisconnections - [Consumer clientId=consumer-1, groupId=message] Node -1 disconnected.

最佳答案

您需要使用正确的 advertized.listeners 配置您的 Kafka 代理。目前,您的 Spring 客户端正在连接到代理以进行初始连接,但随后从 Kafka 接收内部 IP/主机以进行后续连接,然后失败。

Here's an example of Docker and Zookeeper running in Docker为外部连接配置监听器。

您可以在这里阅读更多信息:https://rmoff.net/2018/08/02/kafka-listeners-explained/

关于java - 如何将我的容器化项目连接到在本地主机上运行的 kafka?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61223033/

相关文章:

windows - Golang Docker容器无法在Windows Home上启动

java - hibernate - 多个多对一到同一实体列

java - Spring Boot嵌入式tomcat将日志附加到每个tomcat请求

java - libgdx 带相机的视口(viewport)的用途

java - 如何使用spring data在elasticsearch中根据结果的最高精度对数据进行排序

javascript - Angular 和 Spring Boot App 上的奇怪图标

java - 如何在 Kubernetes 上将应用程序配置与容器中的 API 分离?

连接到 VPN 时,Docker 暴露端口停止工作

java - Spring react 堆 : How to wait for multiple Flux's by key?

windows - Docker Compose 构建失败 - 文件共享已被取消