使用 Mule 重新排队 JMS 请求
Posted
技术标签:
【中文标题】使用 Mule 重新排队 JMS 请求【英文标题】:Requeue JMS request with Mule 【发布时间】:2016-05-13 18:57:39 【问题描述】:我将 JMS component
与 Mule 一起用于带有 ActiveMQ
的队列,我希望如果 请求排队失败,它会返回队列以 重试最后。
我应该在 Anypoint Studio 中配置什么?
【问题讨论】:
嗨,你能说得更清楚点吗?您有一个消费者正在处理一条消息,如果该过程失败,您不想确认该消息并将其留给队列? 对不起,那条失败的消息,再次返回队列,不过是最后一个位置。 【参考方案1】:仅仅重新排队你的消息听起来不是一个好主意,想象你有一个总是失败的消息,那么在某种意义上这会在尝试处理消息时导致无休止的递归。
听起来您更感兴趣的是Rollback Exception Strategy。有了这个,您可以指定最大重新投递次数,当超过该数量时,您可以将消息放在DLQ
(死信队列)或类似的地方,并最好通知某人有关失败的消息。
您可以定义回滚异常策略,以确保在流中引发异常的消息被回滚以进行重新处理。当错误发生在流中时,如果您无法更正错误,请使用回滚异常策略。通常,您使用回滚异常策略来处理涉及事务的流中发生的错误。如果事务失败,即消息在处理过程中抛出异常,则回滚异常策略回滚流中的事务。如果入站连接器是事务性的,Mule 会将消息再次传递到父流的入站连接器以重新尝试处理(即消息重新传递)。
【讨论】:
你推荐还是更好用:Route the Initial-State Message to the Dead Letter Queue? @mikedev 如果消息处于无法传递的位置,您将需要通知某人。您还希望将消息保留在某处以便重新发送,这将是 DLQ 的目的。 @mikedev this 可能很有趣以上是关于使用 Mule 重新排队 JMS 请求的主要内容,如果未能解决你的问题,请参考以下文章
重新传递 Mule ESB 处理的失败的 activemq jms 消息时保留异常原因