【发布时间】:2017-11-06 08:22:49
【问题描述】:
stackoverflow 上有许多类似类型的查询,但没有一个与我看到的问题完全匹配。
我的服务器上有一个 zookeeper/kafka 设置,运行良好。一个人可以生产
bin/kafka-console-producer.sh --broker-list 192.168.2.80:9092 --topic test
消费
bin/kafka-console-consumer.sh --bootstrap-server 192.168.2.80:9092 --topic test --from-beginning
本地在 Linux Ubuntu 16.04 服务器上。
从一个 Docker 容器——也运行 Ubuntu 16.04——我想生产和消费。容器的 Kafka 代码是从服务器上复制的。 首先我可以创建一个新主题
bin/kafka-topics.sh --create --zookeeper 192.168.2.80:2181 --replication-factor 1 --partitions 1 --topic test2
从容器中,然后再次列出它
bin/kafka-topics.sh --list --zookeeper 192.168.2.80:2181
但是,当我尝试生成新消息时,使用上述 (kafka-console-producer.sh) 命令失败并显示以下消息:
[2017-06-05 13:59:05,317] ERROR Error when sending message to topic test2 with key: null, value: 2 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback)
org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s) for test2-0: 1526 ms has passed since batch creation plus linger time
在输入消息文本并按下回车后立即。
在同一主机上运行 Docker 容器可能看起来很奇怪,但一旦成功,我会将容器移动到单独的主机进行生产。
我的 kafka server.properties 文件:
listeners=PLAINTEXT://0.0.0.0:9092
卡夫卡版本:
2.12-0.10.2.1
Docker 版本:
Docker version 1.12.6, build 78d1802
【问题讨论】:
-
如果你在你的主机上使用mac和docker-machine,你必须做端口转发:docker-machine ssh default -L 9092:localhost:9092 -L 2181:localhost:2181
-
还有你用的什么卡夫卡图片?这个对我有用:hub.docker.com/r/wurstmeister/kafka
-
谢谢安迪,我正在努力让事情变得简单。所以我刚刚使用这个链接下载了它:wget apache.cs.utah.edu/apache.org/kafka/0.10.2.1/… 使用 tar 然后一次性解压 zookeeper 和 kafka。它似乎在我的主 Ubuntu 服务器上运行良好。然后我在我的 Ubuntu:latest docker 镜像中做了同样的事情。但是,我在容器内运行的只是 kafka bin 目录中的命令。我还没有启动 zookeeper 或 kafka 的守护进程。
标签: docker apache-kafka