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

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

开发环境:

JDK
1.8
Kafka
2.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
十分感谢大神给的思路!
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值