我正在使用Websphere MQ并使用Mule连接器来消耗来自Queue.WE的消息已在Mule中实现了回滚异常策略块,以便在出现任何JMSException时重新传递消息。
<rollback-exception-strategy maxRedeliveryAttempts="3" when="exception.causeMatches('javax.jms.')" doc:name="Rollback Exception Strategy" />
因此该策略在消费消息之前尝试重做3次。这会导致邮件丢失。我希望将消息回滚到Websphere MQ并在一定延迟后重新进行重定向。我们是否有可用于Websphere MQ Connectors的配置(Active MQ有它)?基本上我希望避免消息丢失。还有其他方法我应该检查吗?
请建议最好的设计以避免邮件丢失?
答案 0 :(得分:0)
如果您只使用WMQ,则可以使用本地事务:
<wmq:inbound-endpoint queue="SOME.IMPORTANT.QUEUE">
<wmq:transaction action="ALWAYS_BEGIN" />
</wmq:inbound-endpoint>
如果您正在使用其他传输,则可以查看多个事务或XA:
<wmq:inbound-endpoint queue="SOME.IMPORTANT.QUEUE">
<xa-transaction action="ALWAYS_BEGIN" />
</wmq:inbound-endpoint>
请务必更新应参与交易的任何出站端点,以便他们使用action =&#34; ALWAYS_JOIN&#34;同样。