Kafka - Docker - 从主机向容器发送消息时出错(批量过期)

hba*_*hba 9 apache-kafka docker

我很难排除故障,应该是一个简单的kafka问题.

我正试图发布一些消息kafak-console-producer.当我输入'hi'时,我得到:

/opt/kafka/bin/kafka-console-producer.sh --topic test --broker-list 172.17.0.21:9092
hi
[2016-01-25 12:56:19,839] ERROR Error when sending message to topic test with key: null, value: 2 bytes with error: Batch Expired (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)
Run Code Online (Sandbox Code Playgroud)

我似乎无法找到任何kafka-log4j-logs ...

我正在以快速启动中描述的方式运行kafka服务器

我可以创建主题并描述它.

一个可能很重要的注意事项是kafka和zookeeper在docker-container(172.17.0.21)中运行我正在创建主题并从主机发送消息.


请注意,(kafka-server)9092和(zk)2181都是开放的,可以从主机访问,我已经使用netstat和telnet确认了这一点.

hba*_*hba 13

原来是更多的Docker问题......

好的,在运行客户端时,kafka-console-consumer.sh我看到它正在尝试使用容器的名称(这是GUID的前几个字符)连接到代理.

我的主机无法使用主机名解析与docker-container的连接.

由于我已将端口映射到主机,因此我将kafak-server配置更改advertised.host.name为指向主机的IP地址.

这样一旦每次查询zk我的主机的IP地址被返回,然后通过端口转发我连接到docker中的代理.