Websphere MQ和mule避免消息丢失
问题描述:
我正在使用Websphere MQ并使用Mule连接器来使用来自Queue.WE的消息已经实现了Mule中的回滚异常策略块,以在发生任何JMSException时重新传递消息。Websphere MQ和mule避免消息丢失
<rollback-exception-strategy maxRedeliveryAttempts="3" when="exception.causeMatches('javax.jms.')" doc:name="Rollback Exception Strategy" />
因此,在消费消息之前,策略会尝试重新进行3次重新刷新。这会导致信息丢失。我希望消息被回滚到Websphere MQ并在延迟一段时间后重新缓存。我们是否有这样的配置可用于Websphere MQ连接器(Active MQ有它)?基本上我希望避免消息丢失。我应该检查其他方法吗?
请建议最好的设计,以避免消息丢失?
答
如果你只使用了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 =“ALWAYS_JOIN”。