【发布时间】:2018-01-04 23:03:33
【问题描述】:
我从 Apache Kafka 开始,当我尝试从外部机器连接时遇到问题。
使用下面的配置,如果应用程序和 docker 在同一台机器上运行,则一切正常。
但是当我将应用程序放在机器 A 和机器 B 的 docker 中时,应用程序无法连接。
我的 spring Kafka @Configuration 有这条线到 @Bean consumerFactory 和 producerFactory(想象我的机器使用 docker ip = 10.10.10.10)
props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "10.10.10.10:9092");
我的 docker 文件是这样的:
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper:3.4.6
ports:
- 2181:2181
kafka:
image: wurstmeister/kafka:0.10.1.1
environment:
KAFKA_ADVERTISED_HOST_NAME: 0.0.0.0
KAFKA_ADVERTISED_PORT: 9092
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_CREATE_TOPICS: "topic-jhipster:1:1,PROCESS_ORDER:1:1, PROCESS_CHANNEL:1:1"
JMX_PORT: 9999
KAFKA_JMX_OPTS: "-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote.rmi.port=9999"
ports:
- 9092:9092
- 9999:9999
kafka-manager:
image: sheepkiller/kafka-manager
ports:
- 9000:9000
links:
- zookeeper
environment:
ZK_HOSTS: zookeeper:2181
我得到这个错误:
org.springframework.kafka.core.KafkaProducerException: Failed to send;
nested exception is org.apache.kafka.common.errors.TimeoutException:
Expiring 1 record(s) for
编辑,添加一些信息..
我认为我缺少关于 zookeeper 的任何配置 .. 因为如果我只有 zookeeper 在我的机器 A 上启动 .. 和机器 B 中的 kafka .. 那工作.. 我只是不知道如何:(
【问题讨论】:
-
可能是防火墙?
-
@EvgeniDimitrov 不是,没关系。我认为我缺少关于 zookeper 的任何配置 .. 因为如果我只有 zookeeper 在我的机器 A 上启动 .. 和机器 B 中的 kafka .. 那工作.. 我只是不知道如何 :(
标签: spring docker apache-kafka spring-kafka