在编排内部的某个时刻,需要在一段时间后重新发送事务。可以使用 Throw 形状使交易失败,所以它会在 Port retrial 一段时间后重试,
还是最好使用 Loop/Wait 形状?
您还没有真正阐明为什么(用例)需要重新发送消息。
客户端请求我们将事务重新发送到 Web 服务,以防 Web 服务返回“成功失败”错误。
在编排内部的某个时刻,需要在一段时间后重新发送事务。可以使用 Throw 形状使交易失败,所以它会在 Port retrial 一段时间后重试,
还是最好使用 Loop/Wait 形状?
您还没有真正阐明为什么(用例)需要重新发送消息。
客户端请求我们将事务重新发送到 Web 服务,以防 Web 服务返回“成功失败”错误。
您还没有真正阐明为什么(用例)需要重新发送消息,但在任何情况下我都不会使用Throw
编排来控制流程。
在错误场景中
如果您需要重新发送消息,因为它未能传递,那么第一站是配置发送端口进行重试,并具有合适的延迟间隔(并注意备份传输选项)。通常不需要使用编排循环进行手动重试。- 这里的例外情况包括当下游服务接受消息并发出自定义的可重试“NACK”状态时 - 例如指示死锁或超时的错误 - 然后需要检查,然后可能需要延迟 + 循环场景。
发送给多个消费者
如果您需要将相同的消息发送到另一个目的地(延迟后)作为编排的正常流程的一部分,那么我建议在流程发散的点使用并行操作形状,然后使用延迟形状在发送到第二个目的地之前的第二条腿。如果消息可以同时发送到多个目的地,我会考虑使用发送端口组来执行此操作。
消息生成器/触发器/调度器
如果编排的目的是在定义的时间间隔发布多条消息(例如触发消息),那么发布、延迟和循环(例如递减计数器)编排就可以正常工作。
在这篇博文中有一个很好的处理 Web 服务异常的场景大纲:http: //blog.codit.eu/post/2012/01/13/Best-Practices-for-sumption-Web-Services-from-内 BizTalk-Server.aspx
要实现重试,您可以将发送端口配置为自动重试,或者在错误处理程序中放置一个具有延迟的循环形状。