【发布时间】:2017-05-14 02:16:18
【问题描述】:
在我的 IDE 中,我可以使用一个 spring-boot 应用程序,该应用程序会向外部 kafka 代理生成消息(使用 Kafkaproducer)。但是一旦我在 docker 容器中托管了我的 spring-boot 应用程序,我的应用程序就不能再提交给代理。 这是错误消息:
o.s.k.support.LoggingProducerListener: Exception thrown when sending a message with key='null' and payload='....' to topic Category:
org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.
org.springframework.kafka.core.KafkaProducerException:
Failed to send; nested exception is org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.
我用来运行 docker 的是:docker run -p 9001:9001 -d image_name 其中 9001 是我的 spring-boot 端口,我可以发布到该端口,只是一旦我的消息发布,它就不会到达外部代理.
我认为我有一个一般概念,即 Docker 容器生活在孤立的土地上,您必须打开/映射端口才能访问它(比如我的 -p 9002:9002),但它的工作方式是否与从容器?如果是这样,有人可以告诉我如何运行 docker 容器以便能够访问外部代理(假设代理 URL 是“192.168.1.1:9000”)?我认为我现在无法修改代理上的任何内容,但我的假设是,如果我可以通过我的 IDE 访问,为什么不能在 docker 中进行访问?感谢大家的帮助!
【问题讨论】:
标签: docker apache-kafka kafka-producer-api