在我们的应用程序中,消费者在应用程序的负载下不断开始轮询,因此有时会影响其中一个应用程序的执行时间 方法通过在方法执行之间轮询。
方法(比如说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>
答案 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毫米,当然。