kafka消费者轮询增加了方法执行时间

时间:2015-11-05 20:49:14

标签: spring-integration apache-kafka kafka-consumer-api

在我们的应用程序中,消费者在应用程序的负载下不断开始轮询,因此有时会影响其中一个应用程序的执行时间 方法通过在方法执行之间轮询。

方法(比如说test())理想情况下需要几毫秒才能在junit情况下运行现在需要几秒钟才能在app中执行。因此,想跳过轮询  在这个时间点,如果可能的话。

在Spring集成doc中,我们看到了一个名为PollSkipAdvice / PollSkipStrategy的东西,它说PollSkipAdvice可以用来抑制(跳过)一个民意调查。

如果在上述情况下可以提供任何帮助,请你提出建议。如果用例子说明,那就太好了。谢谢。

示例配置:

 <int-kafka:inbound-channel-adapter
    id="kafkaInboundChannelAdapter" kafka-consumer-context-ref="consumerContext"
    auto-startup="false" channel="inputFromKafka">
    <int:poller fixed-delay="10" time-unit="MILLISECONDS"
        max-messages-per-poll="5" />
</int-kafka:inbound-channel-adapter>

1 个答案:

答案 0 :(得分:1)

你的情景不明确。真的...

我们这里只有一个适配器,每fixed-delay 10只有激进 MILLISECONDS,并且仅适用于少量消息。

考虑增加轮询时间并将max-messages-per-poll设为-1,以轮询所有这些轮询任务。

从另一方面来看,不清楚你的test()方法是如何涉及的......

另请考虑切换到<int-kafka:message-driven-channel-adapter>以更好地控制消息。

关于PollSkipAdvice ......真的不确定你希望用它达到哪个目标......

还有一点。请记住,所有<poller>使用与ThreadPoolTaskScheduler相同的10作为池。所以,也许其他一些长期存在的任务让线程忙碌......

这个<int-kafka:inbound-channel-adapter>只需要一个,但每个10毫米,当然。