我不确定如何应用逻辑来处理这个问题。
我有一个简单的流程,我在流程之间使用服务。我一直尝试直到成功,但它需要 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 直到成功为“-1”(以无限重试),但它不接受负值。尝试使用 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
请建议。