我正在听我的spring-kafka(版本2.0.1)消费者中的NonResponsiveConsumerEvent事件,如下所示 -
@EventListener
public void eventHandler(NonResponsiveConsumerEvent event) {
LOG.info("Consumer has become non-responsive, no poll for " + event.getTimeSinceLastPoll() + " milliseconds");
}
我无法根据此事件的文档解释某些行为 -
- 此事件每30秒调用一次。为什么30?该文档说,当'poll不在pollInterval属性的3倍内返回时,它应该被调用。 max.poll.interval.ms = 300000供消费者使用。
- 如果此事件表明非响应消费者,为什么每30秒发出此事件的消费者会继续阅读消息?
Update - 1 (12/12)
我仔细看了一下spring-kafka代码,发现默认的pollTimeout = 1000L。基于此,我仍然对我所观察到的内容有一些疑问。
- 消费者启动后我立即收到此消息 - 消费者已无响应,没有轮询1513093440936毫秒。为什么?
- 为什么这个事件每30秒发出一次?我发布了一个关于该主题的消息,它被消费者成功消费,但我每30秒就会收到一次此事件。为什么?
10:48:51.081 [ThreadPoolTaskScheduler-1] INFO ctmerepkRequestMessageHandler - 消费者已经变得没有响应,在消费者10:49:21.083时没有轮询1513097331080毫秒// [ThreadPoolTaskScheduler-1] INFO ctmerepkRequestMessageHandler - Consumer has变得没有响应,没有轮询30002毫秒10:49:51.081 [ThreadPoolTaskScheduler-1] INFO ctmerepkRequestMessageHandler - 消费者已经变得没有响应,没有轮询60000毫秒//在这里发布消息,仍然得到以下事件10:50 :21.080 [ThreadPoolTaskScheduler-1] INFO ctmerepkRequestMessageHandler - 消费者已变为无响应,无轮询89999毫秒10:50:51.078 [ThreadPoolTaskScheduler-1] INFO ctmerepkRequestMessageHandler - 消费者已变为无响应,无轮询119997毫秒10 :51:21.077 [ThreadPoolTaskScheduler-1] INFO ctmerepkRequestMessageHandler - 消费者已变得无响应,没有对14999的民意调查6毫秒