Mule ESB:如何实现无限制重试,直到消费服务启动并运行

时间:2014-12-22 11:23:04

标签: mule mule-studio mule-el mule-component

我不确定如何应用逻辑来处理这个问题。

我有一个简单的流程,我在流程之间消费服务。我试过,直到成功,但它需要Max retries字段(但我不想通过给出任何数字来限制我的重试)。在我的场景中,我不确定我的消费服务何时启动,但需要重试直到服务启动并运行(不需要重试耗尽)。任何人都可以建议处理这种情况。

          <flow name="newFlow1" doc:name="newFlow1">
    <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="ttt" doc:name="HTTP"/>
    <byte-array-to-string-transformer doc:name="Byte Array to String"/>
    <logger message="**********test****#[payload]" level="INFO" doc:name="Logger"/>
    <until-successful doc:name="Until Successful">
        <http:outbound-endpoint exchange-pattern="request-response" host="localhost" port="8089" path="new"  method="POST" doc:name="HTTP"/>
    </until-successful>

    <set-payload value="'Return Response'" doc:name="Set Payload"/>

   </flow>

还尝试了Max Retries,直到成功为&#39; -1&#39;(进行无限制重试)但它不接受负值。    尝试使用HTTP连接器重试连接策略(但它似乎适用于JMS或JDBC)。 你能不能请任何人建议处理这个问题。 提前谢谢。

编辑:

 <http:connector name="HttpConnector" doc:name="HTTP-HTTPS">
<reconnect-forever    />
</http:connector>

<flow name="new1Flow1" doc:name="new1Flow1">
    <http:inbound-endpoint exchange-pattern="request-response"   doc:name="HTTP"   path="ttt" responseTimeout="30000" host="localhost" port="8081" />
    <logger message="***entered***" level="INFO" doc:name="Logger"/>
    <http:outbound-endpoint exchange-pattern="request-response" host="localhost" port="8089" path="new" connector-ref="HttpConnector" method="POST" doc:name="HTTP"/>
    <logger message="**Http StatusCode***#[message.inboundProperties['http.status']]" level="INFO" doc:name="Logger"/>  
</flow>

它没有重试,因为服务已关闭我只能在控制台中看到以下错误消息一次。(但我们应该在控制台中多次获取错误消息,直到服务完毕)

     Failed to route event via endpoint: DefaultOutboundEndpoint{endpointUri=http://localhost:8089/new, connector=HttpConnector

请建议。

1 个答案:

答案 0 :(得分:0)

您可以先定义一个具有永久重新连接属性的http连接器

<http:connector name="HttpConnector" >
    <reconnect-forever  frequency="2000"  />
</http:connector>

然后您可以让入站或出站端点使用该连接器引用 像这样

 <http:inbound-endpoint connector-ref="HttpConnector" .../>

<http:outbound-endpoint connector-ref="HttpConnector" .../>

希望这有帮助!

祝你好运!