我正在使用来自JMS队列的消息并将其提交给SOAP基本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队列/死信队列并从那里使用它。
感谢任何有用的提示或建议来处理这种情况。
答案 0 :(得分:-1)
如果您使用直到成功,则必须引用objectStore
。 Mule使用此对象在重试之间存储消息。此外,您应该使用持久对象存储来避免在Mule服务器或应用程序崩溃的情况下丢失邮件。
直到成功的路由器应该是此用例IMO的首选方法。与仅使用jms队列相比,它将使配置更易于阅读和维护。