Architecture 通过重新发送来处理BizTalk中MSMQ的故障

Architecture 通过重新发送来处理BizTalk中MSMQ的故障,architecture,msmq,biztalk,Architecture,Msmq,Biztalk,如果来自长期运行的服务的响应失败,那么需要重新发送启动消息,是否有人对BizTalk编排中处理这种情况的良好做法/潜在设计提出了建议 在这种情况下,业务流程向MSMQ队列发送消息,然后等待另一个队列的响应。现在响应时间应该不到一分钟,但队列另一端的“服务”偶尔会失败。。。 而且这不是我能控制的,所以我不能改变/纠正它 我是否可以在BizTalk中使用某种设计模式来超时并重新发送启动消息?标准BPEL定义了一个“拾取”活动 BizTalk具有“倾听”的形状 因此,您基本上可以为回复队列上的接收活动

如果来自长期运行的服务的响应失败,那么需要重新发送启动消息,是否有人对BizTalk编排中处理这种情况的良好做法/潜在设计提出了建议

在这种情况下,业务流程向MSMQ队列发送消息,然后等待另一个队列的响应。现在响应时间应该不到一分钟,但队列另一端的“服务”偶尔会失败。。。
而且这不是我能控制的,所以我不能改变/纠正它

我是否可以在BizTalk中使用某种设计模式来超时并重新发送启动消息?

标准BPEL定义了一个“拾取”活动 BizTalk具有“倾听”的形状 因此,您基本上可以为回复队列上的接收活动定义超时时间 在这之后,您可能需要一个布尔标志来决定是返回/重试,还是接收成功,从而继续业务流程

  • 定义一个可用于重试发送消息的业务流程,这些要放置在队列中的消息将从消息框中拾取

  • 如果来自响应队列的响应延迟,请使用单例循环 重新发送消息

  • 旁注: 您可能必须在发送端口上启用传递通知属性,以便侦听可能出现的任何异常

    参考文章