2014-10-09 63 views
0

我是新來的Biztalk和我有一個關於我的消息的狀態無疑會發生什麼事我MQ。例如,我的應用程序(A)從客戶端讀取輸入,格式化並將其放置到MQ(IBM).Biztalk服務器將從我的MQ讀取消息並可能將其發送到其他客戶端(B)。我的問題是如果我的應用程序(A)和我的MQ服務器在將消息推送到Biztalk之後關閉了,那麼消息仍駐留在Biztalk中,還是會被拒絕?如果我申請下來後發送消息到BizTalk

如果biztalk在擁有該消息後停機,結果如何?它仍然會持有這個信息嗎?

如果biztalk擁有該消息但消費者應用程序(B)停機,結果如何?將biztalk

持有的消息,直到應用程序(B)一旦它讀取消息了?

這可能是專家的簡單問題,但作爲新手我很擔心。感謝您提前澄清。

回答

0

如果應用程序A成功地將消息推送到隊列,然後崩潰,消息仍在隊列中。此時,應用程序A所處的狀態並不重要,該消息現由WMQ擁有,並將傳送到目標。

BizTalk仍然會讀取消息,完全不知道應用程序A可能已經崩潰。

0

我的問題是,如果我的應用程序(A)和我的MQ服務器關閉 後推消息到BizTalk

一旦消息在隊列中,應用程序A不再擁有控制信息。因此,如果A崩潰,消息將被推送到隊列中。

如果biztalk在擁有該消息後停機,結果如何?將 它仍然持有的消息?

Microsoft BizTalk Server實際上在SQL Server中安裝了多個數據庫,其中一個名爲MessageBox數據庫,負責路由,排隊,實例管理以及其他各種任務。

當BizTalk Server收到一條消息時,它將在管道中處理該消息,並將該消息放入MessageBox數據庫中。當進程訂閱此消息時,MessageBox數據庫將消息發送給進程,進而處理主機實例上的消息。

MessageBox數據庫保存主機實例的狀態(以及其他數據)。因此,如果您的主機實例崩潰或更糟糕,Biztalk服務器崩潰,實例的狀態在該數據庫中得到保護。當Biztalk恢復時,主機實例將根據MessageBox數據庫上的信息恢復。

因此,在這種情況下,回答您的問題,Biztalk服務器中永遠不會丟失消息。

如果biztalk擁有該消息但消費者 應用程序(B)關閉,結果如何? biztalk會持有這個消息,直到 應用程序(B)讀取消息一旦啓動?

這實際上可以在Biztalk服務器中配置。您可以將其配置爲重試發送請求(基於重試次數,時間等)。

您可以找到以下鏈接(MSDN庫)此主題的更多信息:

MessageBox數據庫:http://msdn.microsoft.com/en-us/library/aa562016.aspx

BizTalk數據庫:http://msdn.microsoft.com/en-us/library/aa578342.aspx

Biztalk的Subscrition架構:http://msdn.microsoft.com/en-us/library/aa560414.aspx

+0

謝謝尋求幫助...現在我能夠理解我發佈的情景的結果。 – 2014-10-10 05:50:46