Mule请求回复和回滚异常策略
我有一个mule流,在这里我配置了请求-应答范围。流程如下所示:Mule请求回复和回滚异常策略,mule,Mule,我有一个mule流,在这里我配置了请求-应答范围。流程如下所示: <flow name="RequestReplyFlow"> <http:listener config-ref="HTTP_Listener_Configuration" path="/test" doc:name="HTTP" /> <set-payload value="#['Sample Payload']" doc:name="Set Payload" /> &
<flow name="RequestReplyFlow">
<http:listener config-ref="HTTP_Listener_Configuration" path="/test" doc:name="HTTP" />
<set-payload value="#['Sample Payload']" doc:name="Set Payload" />
<request-reply doc:name="Request-Reply">
<vm:outbound-endpoint exchange-pattern="one-way" path="request" doc:name="VM" />
<vm:inbound-endpoint exchange-pattern="one-way" path="reply" doc:name="VM" />
</request-reply>
</flow>
及
我在请求
VM入站端点上配置回滚异常策略
当组件org.ram.BusinessComponent抛出异常时,我所期望的是消息被重新传递到入站VM端点,但它没有发生。为什么?
有人能解决这个问题吗?如果您使用的是回滚异常策略而不是默认的异常策略,那么您只需在“回滚异常策略”中手动指定重定向,方法是添加带有“回复”路径的“vm:出站端点”,注意MaxRedeliveryAttentits已更改为“0”因为您的vm不是事务性的:
<flow name="RequestReplyFlow1">
<vm:inbound-endpoint exchange-pattern="one-way" path="request" doc:name="VM" />
<logger message="Executing with payload: #[payload]" level="INFO" doc:name="Logger" />
<component class="org.ram.BusinessComponent" doc:name="Java" />
<rollback-exception-strategy maxRedeliveryAttempts="0" doc:name="Rollback Exception Strategy">
<logger message="Will attempt redelivery" level="INFO" doc:name="Logger" />
<vm:outbound-endpoint exchange-pattern="one-way" path="reply" doc:name="VM" />
</rollback-exception-strategy>
</flow>
当vm为时,值maxredeliveryattens=5是有意义的,因为在这种情况下,Mule尝试消息重新传递五(5)次。然后,您可以在“回滚异常策略”中手动指定重定向,方法是添加“vm:outbound endpoint”,并在“超过重新交付尝试次数”子元素中添加“reply”路径:
<flow name="RequestReplyFlow1">
<vm:inbound-endpoint exchange-pattern="one-way" path="request" doc:name="VM" />
<logger message="Executing with payload: #[payload]" level="INFO" doc:name="Logger" />
<component class="org.ram.BusinessComponent" doc:name="Java" />
<rollback-exception-strategy maxRedeliveryAttempts="0" doc:name="Rollback Exception Strategy">
<logger message="Will attempt redelivery" level="INFO" doc:name="Logger" />
<on-redelivery-attempts-exceeded>
<logger message="redelivery attempt exceeded" level="INFO" doc:name="Logger" />
<vm:outbound-endpoint exchange-pattern="one-way" path="reply" doc:name="VM" />
</on-redelivery-attempts-exceeded>
</rollback-exception-strategy>
</flow>
<flow name="RequestReplyFlow1">
<vm:inbound-endpoint exchange-pattern="one-way" path="request" doc:name="VM" />
<logger message="Executing with payload: #[payload]" level="INFO" doc:name="Logger" />
<component class="org.ram.BusinessComponent" doc:name="Java" />
<rollback-exception-strategy maxRedeliveryAttempts="0" doc:name="Rollback Exception Strategy">
<logger message="Will attempt redelivery" level="INFO" doc:name="Logger" />
<on-redelivery-attempts-exceeded>
<logger message="redelivery attempt exceeded" level="INFO" doc:name="Logger" />
<vm:outbound-endpoint exchange-pattern="one-way" path="reply" doc:name="VM" />
</on-redelivery-attempts-exceeded>
</rollback-exception-strategy>
</flow>