使用maxRedeliveryAttempts和VM inbound配置的回滚策略不会重新传递消息

时间:2015-05-12 09:37:46

标签: exception mule

我的流程如下所示,我希望将消息重新传递2次,然后重新传递

  

重新传递已经用完SAD

要打印的记录器。但是在组件抛出异常后,重新传递机制不会启动

Rollback with redelivery

<vm:connector name="VM" validateConnections="true" doc:name="VM" />


<flow name="TriggerFlow" >
    <http:listener config-ref="Orders_HTTP_Listener_Configuration" path="/rollback" allowedMethods="GET" doc:name="1080/rollback" />
    <vm:outbound-endpoint exchange-pattern="request-response" path="txFlow" doc:name="VM" connector-ref="VM" responseTimeout="60000">                      
    </vm:outbound-endpoint>
</flow>

<flow name="TxFlow" >
    <vm:inbound-endpoint exchange-pattern="request-response" path="txFlow" doc:name="case1" connector-ref="VM" responseTimeout="60000">
        <xa-transaction action="ALWAYS_BEGIN"/>
    </vm:inbound-endpoint>
    <scripting:component doc:name="Groovy">
        <scripting:script engine="Groovy"><![CDATA[throw new RuntimeException();]]></scripting:script>
    </scripting:component>
    <rollback-exception-strategy maxRedeliveryAttempts="3" doc:name="Rollback Exception Strategy">
        <logger message="Will rollback #[payload]" level="INFO" doc:name="Logger"/>
        <on-redelivery-attempts-exceeded>
            <logger message="Redelivery is exhaused SAD " level="INFO" doc:name="Logger"/>
        </on-redelivery-attempts-exceeded>
    </rollback-exception-strategy>
</flow>

1 个答案:

答案 0 :(得分:2)

在与MuleSoft交谈后,我终于得到了答案。更新的流程应如下所示,VM应该是单向的,并且TxFlow的处理策略应该是同步的。如果VM是请求响应,那么它的行为更像是一个没有队列的flow-ref,因此没有重新传递......

enter image description here