java kafka consumer不消费,报错marking the coordinator (id rack null) dead for group
问题描述:在linux系统,通过 kafka 命令行客户端测试消费正常,但通过Java consumer客户端无法正常接收队列消息,启动后输出如下日志信息:
15:21:34.864 [concurrentMessageListenerContainer-0-kafka-consumer-1] INFO org.apache.kafka.clients.consumer.internals.AbstractCoordinator - Marking the coordinator platform-010-030-050-167:16792 (id: 2147483647 rack: null) dead for group test-mengqa
最后一行 Marking the coordinator platform-010-030-050-167:16792 (id: 2147483647 rack: null) dead for group test-mengqa
被标记为死亡, 不能接收消息的原因可能就是消费者死亡导致的。
分析过程
从 log 可以分析这句是 AbstractCoordinator 类打印的, 我们找到打印这行信息的代码
显然coordinator 为null了
protected void coordinatorDead() {if (this.coordinator != null) {log.info("Marking the coordinator {} dead.", this.coordinator.id());this.coordinator = null;}}
打断点追踪
platform-010-030-050-167
是 Kafka 实例所在服务器的主机名,
16792
是 kafka 的端口,这玩意好像是 Kafka 的连接地址
乍一看, 觉得没什么问题
从堆栈追踪到上一调用方法处看看:
既然 coordinator 不为空, 那进入代码块一定是因为 client.connectionFailed(coordinator)
这个方法的返回结果为true了。
从语义分析是因为客户端连接 coordinator 失败
进入该方法看看:
看到形参名是 node, 这个对象应该就是 kafka 的节点信息,
点开查看一下对象的具体属性,知道问题原因在此。
问题定位
注意看上图的 host 属性, host 的意思一般是主机.
局域网内, 通过主机名是无法访问的。
一般是通过 IP 、域名、或者修改 hosts 文件把主机名和 IP 对应起来
定位后,我们尝试用最简单的方法解决问题.
解决
最简单的就是修改本机 hosts 文件
windows 系统 hosts 文件位于 C:\Windows\System32\drivers\etc\hosts
使用管理员权限打开, 追加 IP 和 主机名对应关系
10.30.50.167 platform-010-030-050-167
重启解决之。
方案总结
可能因为没有给 Kafka 设置监听地址导致的默认监听主机名
在配置中果然搜索到类似选项, 按照注释的意思就是会广播给消费者和生产者的地址.
我们按照要求改成 advertised.listeners=PLAINTEXT://10.30.50.167:16792
恢复本机 hosts 文件经测试同样解决了问题
最后
我们在 application.properties
中已经指定 spring.kafka.bootstrap-servers
为 IP, 为什么还会使用主机名链接呢?
推测客户端是先连接到 Kafka 实例后会从 zk 中获取配置
然后客户端 watch zk 节点得到配置地址后才开始监听队列。
java kafka consumer不消费,报错marking the coordinator (id rack null) dead for group相关推荐
- 记录kafka踩坑:marking the coordinator (id rack null) dead for group
工作中用java代码连接k8s集群中的kafka集群时消费者java代码一直报异常marking the coordinator (id rack null) dead for group.经过长时间 ...
- Spark消费kafka任务卡死:Marking the coordinator xxx:9092 (id: 2147483647 rack: null) dead for group xxx
1.背景 2. 问题出现 运行了一个spark任务,然后,发现有一个Job特别的慢,其他的最多用了30分钟,但是这个任务却运行了 1.1个小时,数据量是100万的数据. 2.1 任务 点击进入 2.2 ...
- kafka consumer 停止消费topic
现象 在kafka consumer (以 kafka1.0.0为例)消费 topic 时,常常会出现程序还在运行,但是已经不消费消息了(kafka producer正常生产消息),使用kafka命令 ...
- 【hadoop】java 获取 yarn app 信息 报错 ConfiguredRMFailoverProxyProvider - Failing over to rm2
文章目录 1.概述 1.概述 java 获取 yarn app 信息 报错 ConfiguredRMFailoverProxyProvider - Failing over to rm2 2022-0 ...
- JMETER java.net.SocketException: Connection reset 报错解决方案
JMETER java.net.SocketException: Connection reset 报错解决方案 参考文章: (1)JMETER java.net.SocketException: C ...
- JAVA类运行时,报错“Error occurred during initialization of boot layer”
JAVA类运行时,报错"Error occurred during initialization of boot layer" 网上查原因是由于JDK9及以上版本引入了模块,所以在 ...
- 记录一个bug 关于 java 解压缩包 写入本地报错 :java.io.FileNotFoundException(系统找不到指定的路径。)
记录一个bug 关于 java 解压缩包 写入本地报错 :java.io.FileNotFoundException(系统找不到指定的路径.) 第一想法是路径问题: 1.检查文件路径是否正确 2.另外 ...
- java项目如何启动tomcat服务器,Java web项目启动Tomcat报错解决方案
Java web项目启动Tomcat报错解决方案 点击运行项目时显示 A Java Exception has occurred. 'Starting Tomcat v9.0 Server at lo ...
- java.sql.SQLSyntaxErrorException: Unknown database报错问题
java.sql.SQLSyntaxErrorException: Unknown database报错问题 一.出现原因 笔者在测试接口启动项目Java连接MySQL数据库时,出现了如下报错:jav ...
最新文章
- prometheus--初见
- 什么是java序列化_什么是Java序列化?为什么序列化?序列化有哪些方式?
- mysql源码如何解析where字句_MySQL解析器源码分析--对select语句中子查询处理逻辑的分析(一)...
- Android-Spinner的使用以及两种适配器
- 类文件结构-访问标识和继承信息
- python机器学习---1. K近邻算法
- DM 源码阅读系列文章(七)定制化数据同步功能的实现
- phyton 100题(更新中)
- 编译原理学习笔记4(自上而下和自下而上语法分析)
- 什么是交互设计,为什么要进行交互设计
- android 插屏广告代码,插屏(Interstitial)广告样式
- 语音计算机音乐学猫叫,“杨钰莹学猫叫”上热搜,坤音四子自带流量……山东卫视春晚喜提全国收视第一...
- 外汇天眼:外汇市场为何在周末休市?为什么周末行情有波动?
- Python(arcpy) 根据站点经纬度(坐标)批量提取对应格点值
- javaweb网页上传图片并显示在页面上,并在服务端存到磁盘(base64编码解码)
- python 运行不过去SyntaxError: Non-ASCII character '\xc2' in file
- android 获取当前坐标,Android获取位置信息的方法
- 快讯:中粮联手维维出资1亿元设立置业公司
- 信捷8轴焊锡机程序,采用显控触摸屏加XD5-60T10 每个轴的电子齿轮比单独设置,转盘式
- ArrayList集合的常用方法
热门文章
- Cocos2d-x 3.x中解决无法打开文件:“extensions/ExtensionMacros.h”
- python社区微信群_30行Python代码,打造一个简单的微信群聊助手,简单方便
- html5 swf在线播放,html5怎样播放swf格式的视频
- 异常代码c0000005
- vim 文本编辑器 基本操作
- 微信公众平台开发 微信公众平台示例代码分析
- Android手机通讯录
- IDEA编译代码报错,找不到符号:找不到符号包
- 在 Java 中如何加快大型集合的处理速度
- 现代 Web 开发的现状与未来(JSDC 2019 演讲全文)