kafka无法发送消息问题处理
2017-11-14 12:49
204 查看
在服务器上搭建了一个单机环境的kafka broker,在服务器上使用命令生产消息时,一切正常。当在本地使用JAVA程序发送消息时,一直出错。
抛出的错误为:
后来查看kafka日志,发现TCP连接可以正常关闭,而且IP也是客户端的IP,证明网络没问题,客户端确实可以连上kafka服务器。
那到底是什么问题呢?
通过查看kafka配置,发现有个属性:advertised.host.name。官方文档里的备注信息表明,该字段的值是生产者和消费者使用的。如果没有设置,则会取host.name的值,默认情况下,该值为localhost。思考一下,如果生产者拿到localhost这个值,只往本地发消息,必然会报错(因为本地没有kafka服务器)。
另外,在配置生产者时,metadata.broker.list会设置成kafka服务器的IP和地址。但这个只是获取一些元信息,后续发送消息时会根据获取的元信息来发送,而获取得元信息中,由于advertised.host.name被默认为localhost,所以本地当然会把消息发到本地,结果导致问题出现。
抛出的错误为:
Exception in thread "main" Failed to send requests for topics test with correlation ids in [0,12] kafka.common.FailedToSendMessageException: Failed to send messages after 3 tries.
问题追踪
最初怀疑是防火墙限制了端口,因此在本地使用telnet连接服务器端口,发现无法连接,因此关闭服务器防火墙。重试,还是抛同样的问题。后来查看kafka日志,发现TCP连接可以正常关闭,而且IP也是客户端的IP,证明网络没问题,客户端确实可以连上kafka服务器。
那到底是什么问题呢?
通过查看kafka配置,发现有个属性:advertised.host.name。官方文档里的备注信息表明,该字段的值是生产者和消费者使用的。如果没有设置,则会取host.name的值,默认情况下,该值为localhost。思考一下,如果生产者拿到localhost这个值,只往本地发消息,必然会报错(因为本地没有kafka服务器)。
问题处理
将advertised.host.name设置为服务器IP地址,经测试,消息顺利发送。总结
其实,在生产者的日志中,也看到先连接kafka服务器,然后关闭;然后又连接了本地,再关闭。Connected to 192.168.56.101:9092 for producing Disconnecting from 192.168.56.101:9092 Connected to localhost:9092 for producing Disconnecting from localhost:9092但是因为不了解kafka的配置信息,所以也没仔细分析。
另外,在配置生产者时,metadata.broker.list会设置成kafka服务器的IP和地址。但这个只是获取一些元信息,后续发送消息时会根据获取的元信息来发送,而获取得元信息中,由于advertised.host.name被默认为localhost,所以本地当然会把消息发到本地,结果导致问题出现。
相关文章推荐
- kafka无法发送消息问题处理
- 关于Java连接虚拟机中的Kafka时,无法发送、接收消息的问题
- 使用AppDelegate单例,解决子视图无法给父视图发送消息的问题
- kafka发送消息问题,could not be resolved
- 使用AppDelegate单例,解决子视图无法给父视图发送消息的问题
- windows server 2008 中网络中断后出现MSMQ消息队列无法远程发送的问题
- CLR 无法从 COM 上下文 0x1a2740 转换为 COM 上下文 0x1a28b0,这种状态已持续 60 秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的情况下处理一个运行时间非常长的操作
- 无法向某些窗口发送模拟键盘鼠标消息的问题
- 【转】解决Maxwell发送Kafka消息数据倾斜问题
- 异常信息:CLR无法从COM 上下文0x645e18 转换为COM上下文0x645f88,这种状态已持续60秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的情况下处理一个运行时间非常长的操作.这种情况通常会影响到
- 使用Bot Framework遇到WebChat无法发送消息的问题解决
- 自定义View想使用Scroller实现滑动效果,但是事件接收出现问题,只收到ACTION_DOWN,而无法收到ACTION_MOVE, ACTION_UP等消息的处理
- java日志通过Kafka发送给elk问题处理(1)
- kafka 0.10.2 解决java无法生产消息到指定topic问题
- kafka producer发送消息 Failed to update metadata after问题
- 关于采用默认方式处理WM_NCLBUTTONDOWN消息而“无法”产生WM_NCLBUTTONUP消息的问题
- 片段中初始化Umeng反馈,客户端发送消息无法传送到服务端问题解决
- 异常信息:CLR无法从COM 上下文0x645e18 转换为COM上下文0x645f88,这种状态已持续60秒。拥有目标上下文/单元的线程很有可能执行的是非泵式等待或者在不发送 Windows 消息的情况下处理一个运行时间非常长的操作.这种情况通常会影响到
- Kafka consumer处理大消息数据问题
- kafka发送消息出现的问题KafKa error java.nio.channels.UnresolvedAddressException