我遇到与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
流程如下:
当我不更改BTS.EpmRRCorrelationToken
属性时,它在流程中流动的所有消息中都是相同的,但是如果它无法正确关联消息,那么为什么地球上没有BizTalk更改它?
答案 0 :(得分:1)
在您的情况下,更改此属性是可以的。
问题是直接绑定。当你使用它时,你实际上采用了更“低级”的方式,并且必须处理BTS发布 - 订阅机制的工作原理。
发送 - 接收端口订阅接收具有特定BTS.EpmRRCorrelationToken的消息。因此,当您在消息框中再次发送接收消息时(对于第二个orch),接收端口也会抓取它并取消订阅。当你最终尝试发送回复时 - 没有人在等待它。因此,您必须更改该属性,直到将响应发送回端口。