【问题标题】:kafka consumer polling increase the method execution timekafka消费者轮询增加方法执行时间
【发布时间】:2015-11-05 20:49:13
【问题描述】:

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

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

在 spring 集成文档中看到名为 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>

【问题讨论】:

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


    【解决方案1】:

    你的场景不清楚。真的……

    我们这里只有一个 aggressive fixed-delay 的适配器,每个 10 MILLISECONDS 只用于少量消息。

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

    从另一方面看,您的 test() 方法是如何参与的尚不清楚......

    还可以考虑切换到&lt;int-kafka:message-driven-channel-adapter&gt; 以更好地控制消息。

    关于PollSkipAdvice...真的不知道你想用它达到哪个目标...

    还有一点。请记住,所有&lt;poller&gt;s 都使用与10 相同的ThreadPoolTaskScheduler 作为池。所以,也许其他一些长期存在的任务让线程忙起来......

    这是你的&lt;int-kafka:inbound-channel-adapter&gt; 只需要一个,但每个 10 毫,当然。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-26
      • 2019-01-16
      • 1970-01-01
      • 2022-10-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多