遇到的场景如下:
- kafka的consumer调用了某dubbo接口
- dubbo接口在运行期间报了一个java.lang.NoClassDefFoundError(不是Exception)
现象:
- consumer在broker中抓取消息的线程当场挂掉,这个consumer也就停在了当时的状态,不再消费broker中的消息。
- 根据jstack出来的信息,抓取消息的线程在经历上述场景后被锁住了,锁的位置是:java.util.concurrent.locks.ReentrantLock$NonfairSync
- consumer中调用该dubbo接口是有配置超时时间的,但是在这个情况下超时时间没有起作用,也没有抛出超时的异常。
dubbo接口的provider方如果报Error,对dubbo的consumer方造成的影响未知,如果真的出现了Error的话java自己也处理不了。
现在能想到的就只能是尽量减少Error的出现了。
本文探讨了Kafka Consumer在消费消息过程中调用Dubbo接口时遇到的NoClassDefFoundError问题,详细分析了该错误导致Consumer挂起的原因,并讨论了Dubbo接口Provider端出现Error时对Consumer端可能产生的影响。
1万+

被折叠的 条评论
为什么被折叠?



