2014-01-08 104 views
0

我們有一個存儲過程,將狀態記錄到我們的數據庫。對於現有的應用程序,用戶決定要將狀態寫入不同的服務器。BizTalk:多個請求響應訂閱

  • 我們複製的表和存儲過程的新服務器
  • 我創建了一個新的WCF定製發送端口上並將其配置爲使用新的數據庫。
  • 我更改了業務流程綁定以使用新的發送端口。

現在我得到以下錯誤:

The message found multiple request response subscriptions. A message can only be routed to a single request response subscription. 

我相信,雖然編排結合指定使用哪個端口的BizTalk也發現舊發送端口定義爲好。

業務流程綁定如何工作?任何想法爲什麼它感到困惑?

(原來的發送端口被其他應用程序使用,所以我不能刪除或編輯)

回答

1

當您將Orchestration綁定到端口時,Orchestration發佈的該端口的任何消息的SPTransportID的上下文屬性將設置爲該端口的GUID。當您向端口添加過濾器時,會將其添加爲OR。您可以通過轉到新建查詢,搜索訂閱和查找有問題的端口來查看此信息。例如,你會看到這樣

http: //schemas.microsoft.com/BizTalk/2003/system-properties.SPTransportID == {E1293B10-2763-4600-B795-A0C4B4D5E6EC} 
    Or 
http: //schemas.microsoft.com/BizTalk/2003/system-properties.ReceivePortName == ExamplePort 

訂閱因此,要解決這個問題要麼需要更新舊端口的篩選器,以便從您要重新指向業務流程排除消息。或者,如果其他應用程序業務流程綁定到舊端口,則可以刪除該過濾器並且它應該可以工作。

+0

感謝您的好解釋。我會盡快進行測試。 – Jay

+0

哇。沒想到那種行爲。非常感謝 – Jay

1

看來,無論是古老的港口依然入伍(它可能只是stopped),或者可能你需要重新啓動您的主機。

+0

其他BizTalk應用程序仍需要舊端口。我會嘗試重新啓動主機。好主意 – Jay

+0

這可能是一個問題 - 根據錯誤,「請求響應」消息不能有多個端口預訂,否則觸發協議可能會獲得多個回覆,可能會發生衝突。您能否使這兩個端口上的訂閱互斥,例如有上下文屬性過濾器? – StuartLC

+0

我同意。那麼,爲什麼兩個不同的端口,其中一個不受這個編排的約束,可能會成爲訂閱用戶呢?它使用什麼標準來決定使用哪個端口?除了綁定之外,它必須是一些東西。 – Jay

0

要完成您所描述的內容,您不需要創建新的發送端口。

只需將現有發送端口的URI更改爲指向新數據庫即可。

+0

其他BizTalk應用程序仍需要舊端口 – Jay