有人可以解释使用NonResponsiveConsumerEvent spring-kafka事件看到的行为吗?

问题描述 投票:0回答:1

我正在听我的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");
}

我无法根据此事件的文档解释某些行为 -

  1. 此事件每30秒调用一次。为什么30?该文档说,当'poll不在pollInterval属性的3倍内返回时,它应该被调用。 max.poll.interval.ms = 300000供消费者使用。
  2. 如果此事件表明非响应消费者,为什么每30秒发出此事件的消费者会继续阅读消息?

Update - 1 (12/12)

我仔细看了一下spring-kafka代码,发现默认的pollTimeout = 1000L。基于此,我仍然对我所观察到的内容有一些疑问。

  1. 消费者启动后我立即收到此消息 - 消费者已无响应,没有轮询1513093440936毫秒。为什么?
  2. 为什么这个事件每30秒发出一次?我发布了一个关于该主题的消息,它被消费者成功消费,但我每30秒就会收到一次此事件。为什么? 10:48:51.081 [ThreadPoolTask​​Scheduler-1] INFO ctmerepkRequestMessageHandler - 消费者已经变得没有响应,在消费者10:49:21.083时没有轮询1513097331080毫秒// [ThreadPoolTask​​Scheduler-1] INFO ctmerepkRequestMessageHandler - Consumer has变得没有响应,没有轮询30002毫秒10:49:51.081 [ThreadPoolTask​​Scheduler-1] INFO ctmerepkRequestMessageHandler - 消费者已经变得没有响应,没有轮询60000毫秒//在这里发布消息,仍然得到以下事件10:50 :21.080 [ThreadPoolTask​​Scheduler-1] INFO ctmerepkRequestMessageHandler - 消费者已变为无响应,无轮询89999毫秒10:50:51.078 [ThreadPoolTask​​Scheduler-1] INFO ctmerepkRequestMessageHandler - 消费者已变为无响应,无轮询119997毫秒10 :51:21.077 [ThreadPoolTask​​Scheduler-1] INFO ctmerepkRequestMessageHandler - 消费者已变得无响应,没有对14999的民意调查6毫秒
apache-kafka spring-kafka
1个回答
0
投票

很抱歉延迟回答(SpringOne平台会议和休假)。

2.0.1中有一个错误,其中noPollThreshold默认为0而不是3.0;它是fixed in 2.0.2或您可以在2.0.1中明确设置属性。

© www.soinside.com 2019 - 2024. All rights reserved.