前言:
生产上最近出了个问题,RocketMQ 的消费者线程,因为某一topic消息挤压,
ConsumeMessageThread_* 线程的业务日志会只剩一个,比如原来业务日志打印有 ConsumeMessageThread_1 ConsumeMessageThread_2 ConsumeMessageThread_3 在消费,出现问题时候只有ConsumeMessageThread_1 打印日志了。看起来像是一个消费者把其他消费者也阻塞了。先看下源码,来了解下不同消费者使用的线程名是怎么来的。这里使用的是push并发消费,源码如下。
可以看到,不管起了几个消费者,最后线程名称都是 `ConsumeMessageThread_*` 格式,但是这样在一些场景就没法很直观的区分是哪个消费者了。
JVM的线程名称是允许相同的,那要怎样去区分哪个线程是哪个呢?线程id
输出结果如下,验证了同名的线程,线程ID是不一样的。
📎 参考资料
- 作者:Yibin
- 链接:https://yibin.dev/article/4b70aff3-6bf3-4770-8cfb-24ecc1a45f5d
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章







