问题描述:在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相关推荐

  1. 记录kafka踩坑:marking the coordinator (id rack null) dead for group

    工作中用java代码连接k8s集群中的kafka集群时消费者java代码一直报异常marking the coordinator (id rack null) dead for group.经过长时间 ...

  2. 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 ...

  3. kafka consumer 停止消费topic

    现象 在kafka consumer (以 kafka1.0.0为例)消费 topic 时,常常会出现程序还在运行,但是已经不消费消息了(kafka producer正常生产消息),使用kafka命令 ...

  4. 【hadoop】java 获取 yarn app 信息 报错 ConfiguredRMFailoverProxyProvider - Failing over to rm2

    文章目录 1.概述 1.概述 java 获取 yarn app 信息 报错 ConfiguredRMFailoverProxyProvider - Failing over to rm2 2022-0 ...

  5. JMETER java.net.SocketException: Connection reset 报错解决方案

    JMETER java.net.SocketException: Connection reset 报错解决方案 参考文章: (1)JMETER java.net.SocketException: C ...

  6. JAVA类运行时,报错“Error occurred during initialization of boot layer”

    JAVA类运行时,报错"Error occurred during initialization of boot layer" 网上查原因是由于JDK9及以上版本引入了模块,所以在 ...

  7. 记录一个bug 关于 java 解压缩包 写入本地报错 :java.io.FileNotFoundException(系统找不到指定的路径。)

    记录一个bug 关于 java 解压缩包 写入本地报错 :java.io.FileNotFoundException(系统找不到指定的路径.) 第一想法是路径问题: 1.检查文件路径是否正确 2.另外 ...

  8. java项目如何启动tomcat服务器,Java web项目启动Tomcat报错解决方案

    Java web项目启动Tomcat报错解决方案 点击运行项目时显示 A Java Exception has occurred. 'Starting Tomcat v9.0 Server at lo ...

  9. java.sql.SQLSyntaxErrorException: Unknown database报错问题

    java.sql.SQLSyntaxErrorException: Unknown database报错问题 一.出现原因 笔者在测试接口启动项目Java连接MySQL数据库时,出现了如下报错:jav ...

最新文章

  1. prometheus--初见
  2. 什么是java序列化_什么是Java序列化?为什么序列化?序列化有哪些方式?
  3. mysql源码如何解析where字句_MySQL解析器源码分析--对select语句中子查询处理逻辑的分析(一)...
  4. Android-Spinner的使用以及两种适配器
  5. 类文件结构-访问标识和继承信息
  6. python机器学习---1. K近邻算法
  7. DM 源码阅读系列文章(七)定制化数据同步功能的实现
  8. phyton 100题(更新中)
  9. 编译原理学习笔记4(自上而下和自下而上语法分析)
  10. 什么是交互设计,为什么要进行交互设计
  11. android 插屏广告代码,插屏(Interstitial)广告样式
  12. 语音计算机音乐学猫叫,“杨钰莹学猫叫”上热搜,坤音四子自带流量……山东卫视春晚喜提全国收视第一...
  13. 外汇天眼:外汇市场为何在周末休市?为什么周末行情有波动?
  14. Python(arcpy) 根据站点经纬度(坐标)批量提取对应格点值
  15. javaweb网页上传图片并显示在页面上,并在服务端存到磁盘(base64编码解码)
  16. python 运行不过去SyntaxError: Non-ASCII character '\xc2' in file
  17. android 获取当前坐标,Android获取位置信息的方法
  18. 快讯:中粮联手维维出资1亿元设立置业公司
  19. 信捷8轴焊锡机程序,采用显控触摸屏加XD5-60T10 每个轴的电子齿轮比单独设置,转盘式
  20. ArrayList集合的常用方法

热门文章

  1. Cocos2d-x 3.x中解决无法打开文件:“extensions/ExtensionMacros.h”
  2. python社区微信群_30行Python代码,打造一个简单的微信群聊助手,简单方便
  3. html5 swf在线播放,html5怎样播放swf格式的视频
  4. 异常代码c0000005
  5. vim 文本编辑器 基本操作
  6. 微信公众平台开发 微信公众平台示例代码分析
  7. Android手机通讯录
  8. IDEA编译代码报错,找不到符号:找不到符号包
  9. 在 Java 中如何加快大型集合的处理速度
  10. 现代 Web 开发的现状与未来(JSDC 2019 演讲全文)