2012-05-21 42 views
0

我是MSMQ 4.0的新手。我陷入了下面的情況; 服務A獲取用戶詳細信息並返回用戶標識。 然後服務B通過用戶標識取賬單退貨。 現在我必須排隊這些步驟。我打算使用事務隊列。 有人可以幫我 1)從第一條消息獲取ID並將其包含在第二條消息中。 2)如果至少有一個步驟失敗,我必須回滾(事務隊列爲我做)重試或5次,如果它仍然失敗,然後將其移動到VerifyAdminQueue由Admin.I驗證不喜歡使用DeadLetter隊列等,如何從send.Message獲取返回值,並將返回的值作爲MSMQ中第二條消息的一部分?

在此先感謝。

回答

1

使用MSMQ隊列構建的服務確實是單向的。這意味着沒有建立響應的概念。有許多方法可以使用MSMQ實現請求 - 響應通信模式,但您需要構建這些通信模式並將其自己發回給調用方。

使用單向動作,回滾非常簡單,事實上MSMQ將回滾消息傳輸中的任何失敗步驟。更復雜的操作(如請求響應)在MSMQ中缺少任何事務的概念,因此跨越多個消息傳輸步驟的任何回滾都需要您編寫補償代碼。