2014-08-27 134 views
0

我正在使用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有它)?基本上我希望避免消息丢失。我应该检查其他方法吗?

请建议最好的设计,以避免消息丢失?

回答

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 =“ALWAYS_JOIN”。

更多信息on the Mule User Guide