在Mule 3.3.1中,在异步处理期间,当我的任何外部服务关闭时,我想将消息放在队列(retryQueue
)上,并在其中包含特定的“下一次重试”时间戳。处理来自这个retryQueue
的消息的流选择基于“下一个重试”时间的消息,如在“下一个重试”时间超过当前时间,选择要处理的消息。类似于以下链接中提到的内容。Mule中的JMS消息选择器使用日期
Retry JMS queue implementation to deliver failed messages after certain interval of time
能否请您提供的示例代码来实现这一目标?
我想:
<on-redelivery-attempts-exceeded>
<message-properties-transformer scope="outbound">
<add-message-property key="putOnQueueTime" value="#[function:datestamp:yyyy-MM-dd hh:mm:ssZ]" />
</message-properties-transformer>
<jms:outbound-endpoint ref="retryQueue"/>
</on-redelivery-attempts-exceeded>
,并在接收流
<jms:inbound-endpoint ref="retryQueue">
<!-- I have no idea how to do the selector....
I tried....<jms:selector expression="#[header:INBOUND:putOnQueueTime > ((function:now) - 30)]"/>, but obviously it doesn't work. Gives me an invalid message selector. -->
</jms:inbound-endpoint>.
另注:如果我设置使用
<add-message-property key="putOnQueueTime" value="#[function:now]"/>,
它不会结转出站属性作为标题的一部分。这就是为什么我把它改为:
<add-message-property key="putOnQueueTime" value="#[function:datestamp:yyyy-MM-dd hh:mm:ssZ]" />
你尝试过什么?分享您的配置和问题,以便我们为您提供帮助。 –
@DavidDossot你需要任何额外的信息吗? – Jeet