您将在直到成功范围内定义的dlqEndpoint-ref的vm:endpoint定义在应用程序中的什么位置? [英] Where in the application would you define the vm:endpoint for a dlqEndpoint-ref defined in an until-successful scope?

查看:61
本文介绍了您将在直到成功范围内定义的dlqEndpoint-ref的vm:endpoint定义在应用程序中的什么位置?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试遵循此博客文章中的示例(

I'm trying to follow the example in this blog post (http://blogs.mulesoft.org/meet-until-successful-store-and-forward-for-mule/) for defining a dead letter queue for an until-successful scope element. This is the snippet from the blog post that doesn't quite make sense:

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

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

我不太了解vm终结点在应用程序中的位置.我认为它与直到成功的元素没有相同的流程.我尝试将其放入自己的流程中,但出现了NoSuchBeanDefinitionException.

I don't quite understand where the vm endpoint lives in the app. I don't think it goes in the same flow as the until-successful element. I've tried putting it in its own flow but I get a 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>  

推荐答案

dlqChannel属性引用全局端点.在您的情况下,请使用:

The dlqChannel attribute refers to a global endpoint. In your case, use:

<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:

Also if you're using Mule 3.3.0 or above, you can use MEL:

failureExpression="#[message.inboundProperties['http.status'] != 201]"

这篇关于您将在直到成功范围内定义的dlqEndpoint-ref的vm:endpoint定义在应用程序中的什么位置?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆