gpt4 book ai didi

spring - 在 Spring JMS 集成中配置基于时间间隔的 cron

转载 作者:行者123 更新时间:2023-12-02 02:19:17 26 4
gpt4 key购买 nike

我需要在指定的时间间隔内将消息从 Queue1 转发到 Queue2,而不是在消息到达 Queue1 之后才转发。下面是我的配置。

<int-jms:inbound-channel-adapter  id="inboundChannelAdapterId" connection-factory="connFactory" destination="jmsQueue1" channel="queueChannel" >
<int:poller send-timeout="2000" >
<!--
<int:interval-trigger initial-delay="60000" interval="60000"
fixed-rate="true"/>
-->
<int:cron-trigger expression="0 0/1 * * * ?" />
</int:poller>
</int-jms:inbound-channel-adapter>

<int-jms:outbound-channel-adapter channel="queueChannel" connection-factory="connFactory" destination="jmsQueue2" >
</int-jms:outbound-channel-adapter>

<int:channel id="queueChannel" />

上面的 xml 配置将消息立即从 Queue1 转发到 Queue2,忽略 配置。我已经尝试过基于时间间隔和基于 cron 的解决方案,它们的工作方式似乎相似(立即将消息从 Queue1 传递到 Queue2)。这里的“poller”配置有什么问题吗?任何帮助将不胜感激。

最佳答案

您需要适配器上的接收超时。否则它将阻塞在 receive() 上并立即获取消息。

编辑:查看下面的评论 - 自 2.0.4 以来,轮询队列的线程默认不再阻塞。

您可能还想考虑为您的轮询器使用 2.0+ 语法;您当前的语法在 2.0 中已弃用,并且在 2.1 中不允许...

<jms:inbound-channel-adapter id="in" channel="jmsinToStdoutChannel" destination="requestQueue">
<poller fixed-delay="30000"/>
</jms:inbound-channel-adapter>

澄清一下...如果在适配器上设置了接收超时,则轮询器线程将阻塞那么长时间或直到消息到达。这可能会使轮询器看起来没有遵守其时间表。默认(自 2.0.4 起)是不阻塞,这意味着消息将仅在轮询者的时间表上接收。

关于spring - 在 Spring JMS 集成中配置基于时间间隔的 cron,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9105366/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com