kafka无法发送消息问题处理
来源:互联网 发布:拉卡拉淘宝 编辑:程序博客网 时间:2024/06/07 19:45
在服务器上搭建了一个单机环境的kafka broker,在服务器上使用命令生产消息时,一切正常。当在本地使用JAVA程序发送消息时,一直出错。
抛出的错误为:
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 producingDisconnecting from 192.168.56.101:9092Connected to localhost:9092 for producingDisconnecting from localhost:9092但是因为不了解kafka的配置信息,所以也没仔细分析。
另外,在配置生产者时,metadata.broker.list会设置成kafka服务器的IP和地址。但这个只是获取一些元信息,后续发送消息时会根据获取的元信息来发送,而获取得元信息中,由于advertised.host.name被默认为localhost,所以本地当然会把消息发到本地,结果导致问题出现。
阅读全文
0 0
- kafka无法发送消息问题处理
- kafka无法发送消息问题处理
- Kafka producer无法发送消息解决办法
- kafka 发送消息
- kafka producer 发送消息
- kafka无法消费消息
- kafka发送消息问题,could not be resolved
- kafka学习 -- 消息处理
- Golang 处理Kafka消息
- kafka处理超大消息
- Kafka发送消息到HDFS
- 向kafka里发送消息
- kafka消息发送-消费流程
- kafka发送消息出现的问题KafKa error java.nio.channels.UnresolvedAddressException
- kafka消息发送和消息接受
- kafka消息可靠性问题
- kafka消息可靠性问题
- 分布式消息处理Kafka入门
- 快速排列
- 把中文分析器添加到solr工程中
- 使用 ApplicationInfo 读取 AndroidManifest.xml 中的meta-data信息
- 发放福利:原价135元/年的阿里云CDN流量包(500GB)免费送
- Code Refactor
- kafka无法发送消息问题处理
- C++ 引用和指针的区别
- BitConverter 类
- Java 通过JDBC连接并操作Mysql数据库
- 带头节点链表实例(C语言实现)
- Git使用-从一个git仓库迁移到另外一个git仓库
- grpc-golang在win7/8/10下的安装配置
- Halcon和visionPro的比较
- [Leetcode][python]Longest Consecutive Sequence