1

我正在尝试按照此博客文章 ( http://blogs.mulesoft.org/meet-until-successful-store-and-forward-for-mule/ ) 中的示例为直到 -成功的范围元素。这是博客文章中不太有意义的片段:

<vm:endpoint name="dlqChannel" path="dlq" />

<until-successful objectStore-ref="objectStore"
    dlqEndpoint-ref="dlqChannel"
    maxRetries="3"
    secondsBetweenRetries="10">
    ...
</until-successful>

我不太明白 vm 端点在应用程序中的位置。我认为它与直到成功元素的流程不同。我试过把它放在自己的流程中,但我得到了 NoSuchBeanDefinitionException。

这是我的相关代码:

<flow ....>
   ....
    <until-successful objectStore-ref="objectStore" failureExpression="#[header:INBOUND:http.status != 201]" maxRetries="1" secondsBetweenRetries="5" doc:name="Until Successful" deadLetterQueue-ref="aggieFeedDestinedDeadLetterQueue">
   ....
</flow>

<flow name="edus-pubFlow1" doc:name="edus-pubFlow1">
    <vm:inbound-endpoint exchange-pattern="one-way"       path="aggieFeedDestinedDeadLetterQueue" doc:name="aggieFeedDestinedDeadLetterQueue"/>
    <logger message="DEAD DEAD DEAD LETTER LETTER LETTER #[message]" level="INFO" doc:name="Logger"/>
</flow>  
4

1 回答 1

2

dlqChannel属性是指一个全局端点。在您的情况下,请使用:

<vm:inbound-endpoint exchange-pattern="one-way"       path="aggieFeedDestinedDeadLetterQueue" />

<flow ....>
   ....
    <until-successful objectStore-ref="objectStore"
         failureExpression="#[header:INBOUND:http.status != 201]"
         maxRetries="1" secondsBetweenRetries="5"
         deadLetterQueue-ref="aggieFeedDestinedDeadLetterQueue">
   ....
</flow>

<flow name="edus-pubFlow1">
    <endpoint ref="aggieFeedDestinedDeadLetterQueue" />
    <logger message="DEAD DEAD DEAD LETTER LETTER LETTER #[message]" level="INFO" doc:name="Logger"/>
</flow>

此外,如果您使用 Mule 3.3.0 或更高版本,您可以使用 MEL:

failureExpression="#[message.inboundProperties['http.status'] != 201]"
于 2013-09-12T22:16:57.930 回答