0

我正在使用来自 JMS 队列的消息并将其提交到基于 SOAP 的 Web 服务。我想确保向我提交消息的 Web 服务提供有保证的消息传递。

我正在考虑两个选项 1. 使用直到成功的路由器(首选),如果无法传输消息,则将其放入死信队列。2. 使用 JMS 事务,如果向 Web 服务的消息传输失败,则回滚事务并且 JMS 消息留在队列中。

<jms:inbound-endpoint queue="ws.message"/>
<until-successful objectStore-ref="objectStore"
              dlqEndpoint-ref="dlqChannel"
              maxRetries="3"
              secondsBetweenRetries="10">
...
</until-successful>

我更倾向于使用直到成功的路由器,但我担心的是它需要一个强制性的 ObjectStore。我不想将消息存储在数据库/对象存储中,而是将其推送到某个 JMS 队列/死信队列并从那里使用它。

任何有用的提示或建议来处理这种情况表示赞赏。

4

1 回答 1

-1

如果您使用 until-successful,则必须引用 an objectStore。Mule 使用此对象在重试之间存储消息。此外,您应该使用持久对象存储来避免 Mule 服务器或应用程序崩溃时的消息丢失。直到成功的路由器应该是这个用例 IMO 的首选方法。与仅使用 jms 队列相比,它将使配置更易于阅读和维护。

于 2013-03-28T15:57:04.753 回答