我有同樣的問題描述here:異常在BizTalk具有雙向接收端口直接結合
我使用兩個業務流程。第一次編排使用直接綁定通過雙向發送端口調用第二個編排。第二個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它,而不是沒有正確地關聯消息?
我再次檢查瞭解決方案,發現我甚至不需要在第二個編排中複製BTS.EpmRRCorrelationToken!我需要做的只是在第一次編排中用新生成的Guid填充「BTS.EpmRRCorrelationToken」。但爲什麼? –
不知道您是否閱讀過這篇文章:http://bveldhoen.wordpress.com/2010/09/05/messaging-only-request-response-correlation/。出於興趣,爲什麼不使用輸出消息(OK,儘管耦合)調用第二個業務流程,或者只是使用單獨的發送和接收端口(以及您自己的關聯)? – StuartLC
我已閱讀文章,謝謝。我不想做額外的工作來建立相關性。我只想要發佈一條消息,並使用專爲消息類型\ context設計的編排。例如,當我發佈帶有「NEW」狀態的消息時,我希望這條消息能被NewMessageOrchestration拾取並處理,而不是通過ProcessedMessageOrchestration或其他處理。 –