2011-07-12 85 views
1

我們有一個系統使用MLLP HL7加速器將HL7消息發送到BizTalk。然後,我們有幾個目標系統,都需要它們自己的HL7消息格式,所以我們使用每個目標的編排,每個目標都涉及不同的轉換。每個orchestrationi都使用一個過濾器來訂閱接收端口。此訂閱模式運行良好,但如果我們需要停止或取消部署某個業務流程,該怎麼辦?訂閱模型在推模式上的缺點是沒有內置排隊,所以如果刪除編排,接收端口拾取的消息不會排隊等待系統。或者這是一個問題?你如何處理升級到編排等等有沒有更好的設計模式?排隊Biztalk訂閱

回答

4

在我看來,稍微好一點的設計是將轉換(地圖)直接放在發送端口上。然後,您可以在不同的發送端口上將過濾器路由到目標系統。

這種設計會使更新變得更容易一些,因爲沒有編排首先需要刪除才能部署新版本的地圖。所有你需要做的就是停止端口(這使得訂閱處於活動狀態,消息將排隊等待其訂閱端口)。在端口停止後,您可以使用新版本的地圖修改資源(程序集),然後開始移植以開始轉換併發送排隊的消息。

這是usally一個好主意,使用編排時,你需要控制好一個更復雜的工作流 - 不僅僅是應用的地圖在你的情況。

+0

+1。良好的建議,並可以在我們的大部分場景中工作。在我們需要編排的一些更復雜的項目中,您是否知道我可以僱用的設計模式來緩解我描述的情況? – Jeremy

+0

由於您可以擁有多個訂閱者,所以您可以使用帶有出站地圖的發送端口和過濾器表達式。您可以在發送端口上使用過濾器,並與過濾的業務流程協同工作。當你停止編排(並且保持登記狀態)時,它仍然會排隊消息,這樣你就不會丟失任何東西,並且它會在重新啓動後處理排隊的東西。 – schellack