您的位置:首页 > 编程语言 > Java开发

关于Java连接虚拟机中的Kafka时,无法发送、接收消息的问题

2018-03-08 15:14 1766 查看
自己在使用Java编写Kafka的Producer端和Consumer端时,Consumer端无法接收消息,而Producer端可以发送消息。参考网上大神的解决办法,总算得到解决。

开发环境:

JDK1.8
Kafka2.11
操作系统win 10
虚拟机Ubuntu 16.04

解决办法:

修改kafka目录->config->server.properties文件。找到当前位置
# The address the socket server listens on. It will get the value returned from
# java.net.InetAddress.getCanonicalHostName() if not configured.
#   FORMAT:
#     listeners = listener_name://host_name:port
#   EXAMPLE:
#     listeners = PLAINTEXT://your.host.name:9092
#listeners=PLAINTEXT://:9092
将当前位置去掉注释,修改your.host.name为当前虚拟机的ip地址。我当前的地址为192.168.22.131。
修改后为:advertised.listeners=PLAINTEXT://192.168.22.131:9092之后重启kafka。Producer和Consumer就能够通信了。
Hostname and port the broker will advertise to producers and consumers.If not set, it uses the value for "listeners" if configured.Otherwise, it will use the value returned from java.net.InetAddress.getCanonicalHostName().翻译为:代理会将主机地址和端口号广播给生产者和消费者。如果没有设置,它将会用“listeners”的值,如果”listeners“设置了的话。否则,他将返回java.net.InetAddress.getCanonicalHostName()的值。
所以第二中方法就是修改“listeners“这个地方,而上面就不需要修改了。
# The address the socket server listens on. It will get the value returned from
# java.net.InetAddress.getCanonicalHostName() if not configured.
#   FORMAT:
#     listeners = listener_name://host_name:port
#   EXAMPLE:
#     listeners = PLAINTEXT://your.host.name:9092
#listeners=PLAINTEXT://:9092
找到当前代码段,修改红色部分为listeners=PLAINTEXT://192.168.22.131:9092。192.168.22.131为当前主机的ip地址。作用与上面是一样的,大家根据喜好自行选择修改吧。

参考:http://blog.csdn.net/zhaominpro/article/details/79068141
十分感谢大神给的思路!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: