我需要在Retry上实现逻辑。入站端点将邮件推送到Rest(Outbound)。如果REST不可用,我需要重试一次并将其放入队列中。但是第二个即将发布的消息不应该重试,它必须直接将消息放入队列,直到REST服务可用。
一旦服务可用,我需要通过批处理作业将所有消息从QUEUE推送到REST服务(在订购中)。
问题:
我如何知道第二条消息的服务不可用?如果我使用直到成功,它会为每条消息重试并放入队列。 Plm是第二条消息不应该重试。
对于批处理,我想到了使用poll,但是如何告诉poll,何时服务可用于开始批处理。 (bcz,Poll更多的是配置时序来运行批处理)?
其他让我困惑的是 - 这里必须保留订购。一旦服务可用。队列消息(i,e Batch)必须先实时移动到REST服务。我怀疑它是否适用。
实施逻辑的快速响应非常有用。
使用Mule:3.5.1
答案 0 :(得分:1)
我可以尝试以下内容:使用流量控制
答案 1 :(得分:0)
对于超时,我仍然会查看响应代码并捕获超时以确定呼叫是成功还是需要重试。实际上你通常会做多线程,所以无论如何你都有多个并行调用。或者只是一个呼叫在另一个结束之前开始。 这很正常。
但你可以简单地在超时的队列中重试调用。经过x次超时后,您可以跳过"跳过"或推迟重试。
但所有这些都是使用实际的Mule流程组件完成的,如:
队列的一种可能性是将其持久保存在数据库中。 Mule有数据库连接器,有"民意调查"功能,请参阅:http://www.mulesoft.org/documentation/display/current/JDBC+Transport+Reference#JDBCTransportReference-PollingTransport