如何在发送形状之前保留 BizTalk 编排 - 用于重新发送

Ben*_*ius 3 wcf biztalk biztalk-orchestrations

我有一个调用 WCF 服务的编排,它是一个 2 路请求/响应发送端口。就像这样:

编排

我一直在试图找出一种方法让编排保持在发送形状之前的状态。这是希望当出现异常或端点关闭时,我可以恢复编排并让它尝试重新发送到端点。

我尝试将发送/接收形状包装在各种范围形状中,以便使其持续高于发送形状,但无济于事。我仔细阅读了 Seroter 的博客,并尝试了他帖子中建议的所有内容:

http://seroter.wordpress.com/2007/01/02/orchestration-handling-of-suspended-messages/

例如,如果我取下端点并向其发送,我会得到一个

System.ServiceModel.ServiceActivationException:无法激活请求的服务“ https://my-service.svc ”。服务实例将保持暂停状态,直到以管理方式恢复或终止。如果恢复,实例将从其最后的持久状态继续,并可能重新引发相同的意外异常。

这是可以预料的。正如它所说,实例在恢复时可能会重新抛出相同的异常(无论我尝试过什么)。

我尝试过的事情:

  • 将发送形状包装在原子范围内,但在引发异常后它仍然会挂起。
  • 将发送和接收形状包装在原子范围内,但在编译时出现错误:

    错误 1 ​​原子作用域不能包含或调用包含“使用”端口或服务链接上的请求响应操作的发送和相应接收的服务或作用域

  • 尝试将发送和接收形状包装在长时间运行的范围中并捕获异常,然后使用挂起形状 - 但这只会导致等待 WCF 服务响应的脱水实例。

我不确定我还能尝试什么。基本上我要问的是,如何让编排保持在所包含图像中看到的“conWrapper”(或 sendRCMR... 上方的任何位置)形状?

Joh*_*305 5

对于您所描述的,您实际上并不需要强制编排持久性。

如果端点关闭,或者适配器抛出任何其他错误,消息传递实例将首先进入重试模式,然后挂起。这可能是您所包含的错误消息所指的“实例”。

一旦端点再次运行,您就可以恢复消息传递实例。

这是最常见的情况。