BizTalk中的异常与双向接收端口直接绑定

时间:2011-10-26 11:13:53

标签: biztalk correlation

我遇到与here所述相同的问题:

  

我正在使用两个编排。第一个业务流程使用直接绑定通过双向发送端口调用第二个。第二个orchestrion有一个双向接收端口,用于将结果发送回第一个。每件事都应该正常工作,但我得到以下例外。

     

A response message for two-way receive port "Unknown " is being suspended as the messaging engine could not correlate the response to an existing request message. This usually happens when the host process has been recycled.

建议的解决方案也可以工作(将BTS.EpmRRCorrelationToken值设置为随机值,在我的情况下为新GUID,在第一个编排之前发送到直接绑定端口然后在secod编排中复制从inputMessage到outputMessage的值,因此值保持不变。使用此方法,BizTalk知道如何将响应关联回调用者。但我无法理解为什么这有效,如果这是解决问题的好方法。 BTS.EpmRRCorrelationToken流程如下: UML

当我不更改BTS.EpmRRCorrelationToken属性时,它在流程中流动的所有消息中都是相同的,但是如果它无法正确关联消息,那么为什么地球上没有BizTalk更改它?

1 个答案:

答案 0 :(得分:1)

在您的情况下,更改此属性是可以的。

问题是直接绑定。当你使用它时,你实际上采用了更“低级”的方式,并且必须处理BTS发布 - 订阅机制的工作原理。

发送 - 接收端口订阅接收具有特定BTS.EpmRRCorrelationToken的消息。因此,当您在消息框中再次发送接收消息时(对于第二个orch),接收端口也会抓取它并取消订阅。当你最终尝试发送回复时 - 没有人在等待它。因此,您必须更改该属性,直到将响应发送回端口。