我在EC2上安装了Kafka软件 . 我的问题是从AWS外部连接到代理 . 这一切都适合我 .
所以我可以启动代理,kafka-console-producer和consumer工作(来自同一台服务器) . 我有端口2181和9092向远程位置开放,朝向我想要使用 生产环境 者的地方 . 所以从我的开发(本地)机器..如果我做telnet 9092 - 它连接我 . 如果我尝试使用kafka-console-producer我会收到此错误 .
[2017-03-09 15:04:44,971] ERROR Error when sending message to topic topic2 with key: null, value: 5 bytes with error: (org.apache.kafka.clients.producer.internals.ErrorLoggingCallback) org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s) for topic2-0: 1521 ms has passed since batch creation plus linger time
我尝试了各种与server.properties文件的组合 - 使用键 listeners
和 advertised.listeners
.
我真的很感激一些帮助......
1 回答
这可能是由于AWS机器的公共主机名/ IP无法在AWS内部使用而引起的 . 如果是这样你需要稍微捏一下 . 需要2件事:
确保将
advertised.listeners
设置为您的私人地址在本地/ etc / hosts中,将aws的本地主机名(例如ip-10-0-0-1.eu-west-1.compute.internal)绑定到公共IP
然后确保始终只使用私有主机名 . 对于我来说,这是导致许多奇怪问题没有给出任何日志的根本原因 .