Kafka producer程序本地运行时发送信息失败解决方案
来源:互联网 发布:php curl rest son 编辑:程序博客网 时间:2024/06/06 00:44
今天运行kafka本地producer程序时,总是发送信息失败,经过查阅资料,最终发现是kafka集群的配置问题。
kafka 集群broker : broker1:9092,broker2:9092
配置解析:
config/server.properties文件中有几个参数:
# Hostname the broker will bind to. If not set, the server will bind to all interfaces
#host.name=localhost
# Hostname the broker will advertise to producers and consumers. If not set, it uses the
# value for "host.name" if configured. Otherwise, it will use the value returned from
# java.net.InetAddress.getCanonicalHostName().
advertised.host.name=10.12.50.12
其中host.name默认为null。如果hostname已经设置的话,broker将只会绑定到这个地址上;如果没有设置,它将绑定到所有接口,并发布一份到ZK
advertised.host.name默认为null。如果没有设置的话,并且如果host.name如果配置的了话,会使用hots.name的值,否则会使用 java.net.InetAddress.getCanonicalHostName()接口返回的值。这个hostname会通知给producers和consumers。
默认配置时,host.name和advertised.host.name都是null。非本机运行kafka producer时发送信息失败的原因就在这两个配置上。首先本地producer会和kafka集群通信,kafka集群会将集群元数据发送给producer,然后由producer连接broker发送信息。由于host.name和advertised.host.name都没有配置,所以通知给producer的advertised.host.name如说明中所示的,就是 java.net.InetAddress.getCanonicalHostName()返回的值。在kafka集群节点上, java.net.InetAddress.getCanonicalHostName()获得的值是当前节点的hostname或者IP,如果返回的是IP,那么是没有问题的。不幸的是,返回的是hostname。当返回kafka节点的hostname给producer时,producer程序会连接这个hostname。如果本地没有配置这个hostname对应的ip,那么自然是连接不到的。所以会信息发送失败。
解决办法:1.本地配置kafka集群中节点的hostname对应的ip => 不推荐。没有验证是否可行,原理上应该是没问题的。配置麻烦,而且工作节点可能会多种多样。
2.kafka集群配置时配置host.name或advertised.host.name为本机ip => 推荐,简单易实施。已验证可行。
- Kafka producer程序本地运行时发送信息失败解决方案
- kafka producer 发送消息
- Kafka:Producer生产者发送逻辑
- Kafka producer无法发送消息解决办法
- Kafka Producer
- kafka producer
- kafka--producer
- 关于服务器上发送邮件程序发送失败的解决方案
- kafka运行Producer和Consumer时出现Failed to load class org.slf4j.impl.StaticLoggerBinder错误
- Kafka Producer同步模式发送message源码分析
- Kafka Producer机制优化-提高发送消息可靠性
- microsoft office 2007 excel、word、ppt 向程序发送命令时失败 解决方案
- kafka: java生产者往kafka topic发送数据发送失败
- python kafka producer consumer redis数据从kafka发送写人redis
- kafka单条消息过大导致生产者程序发送到broker失败
- 查看程序运行失败后core文件给出的信息
- kafka 运行问题:ERROR Uncaught error in kafka producer I/O thread 的处理
- kafka producer的serializer
- Lex与Yacc
- aop之应用 时间记录器及日志
- table中th高度设置无效
- 亲自安装快速行进法(fast marching)MATLAB工具箱遇到的问题及解决
- 腾讯云服务器Ubuntu入门:搭建环境
- Kafka producer程序本地运行时发送信息失败解决方案
- 基于JSPatch的iOS应用线上Bug的即时修复方案,附源码.
- 内存中的 double 与 十六进制
- 开发中常见坑
- 78,id 动态类型
- 【Java数据结构】递归
- linux 安装nginx
- iOS开发系列--绘图 动画
- PyQt5 学习笔记