2010-05-26 73 views

回答

3

NServiceBus的性質並不能保證郵件將它們發送的順序接收。每封郵件都是要獨立處理的。

如果操作後,才能兩條相關消息承擔到達,那麼你需要利用響應第一評Saga

編輯:

你提到你發送相同的消息大塊。這是否意味着你有一個大的有效載荷,你必須分成多個部分通過MSMQ傳輸?

如果是這樣,你有幾種選擇:

  1. Store中的有效載荷帶外,在數據庫或文件系統,並且只放足夠多的數據在一個消息(ID或文件系統路徑)從消息處理程序加載數據。

  2. 使消息成爲包含BundleID,PartNumber,TotalParts和PayloadChunk的MessagePart。然後,爲MessagePart創建一個傳奇,存儲每個部分,並在收到所有部分時,將這些塊重新組合在一起,然後執行所需的操作。當然,如果您需要將生成的大對象發送回總線,這會非常快速地讓人討厭,所以帶外選項看起來會更有吸引力。

在任何情況下,有一噸的原因,任何MSMQ消息,不只是NServiceBus的消息,可以到達的順序,所以你必須要能夠處理它。

+0

Thnx爲你的答案大衛,但在我的應用程序im發送相同的消息大塊。序列就像第一個消息thn第二等等。當yim想知道我們什麼時候發送相同的消息到同一隊列 soo按照MSMQ行爲,它應該按順序排列 – user349576 2010-05-26 17:17:08

1

Bus.Sending Imessages集合的工作? NServiceBus允許批量的消息

+1

每個MSMQ消息仍然有4MB的限制,無論其中有多少邏輯消息。 – 2010-07-15 21:31:51