2014-01-27 154 views
2

我們目前有一個過程,其中包括向第三方發送包含我們系統內發生的更改的xml文件。使用NServiceBus如何處理多個消息作爲批處理?

我們正在使用NServiceBus,並將這些更改建模爲發送到端點的單個命令。

我們不想將這些更改作爲單個文件發送;相反,我們希望批量接收多個命令,將這些信息連接成一個文件。

如何才能將多個命令分批到一個導出文件?

+0

你爲什麼要批量接收一些命令?他們是否構成一個單一的原子單位,應該全部承諾還是一起回滾? –

+0

您是否使用這些命令通過電線傳輸文件?所以文件 - >命令 - >文件? –

+0

相當多;但我們會將這些命令映射到由我們的客戶端定義的xml格式。 –

回答

1

你看過薩加斯嗎?薩加斯允許您爲長時間運行的業務流程建模。因此,如果一個文件有多個部分,佐賀可以從第一部分開始,在完成所有需要的部分時完成。

http://cdn.nservicebus.com/sagas.aspx

+0

我試圖用佐賀解決這個問題。如果我一次提交一條消息,那麼它就可以工作。但是在負載下它有併發問題,我無法解決。這是一個要點:https://gist.github.com/anonymous/8664762 –

+0

你的批處理標識符是否應該硬編碼以便始終使用相同的Guid/Id,或者我誤解了這一點? –

+0

我不知道還有什麼可以使用的,因爲沒有自然的標識符將命令組合成一批;也不存在用於啓動該過程的不同類型的命令。相反,我們只是想一次處理100個批處理命令。理想情況下,我們只能在任何時候開放一個傳奇。 –

0

可以使用Bus.Send(即時聊天[]消息)發送的命令。注意它需要一個數組,消息將通過線路打包成一個隊列消息。在接收端,處理程序將在每條消息中調用一次。在你的處理程序中,你應該能夠繼續追加到你的文件。在處理程序中,您可以根據需要放置邏輯以確定何時「滾動」文件。

+0

請注意,此批處理功能已過時,將在未來版本的NSB –

+0

中刪除。此外,我們無法在發送期間對消息進行批量處理。相反,我們只想批量接收。 –

+0

刪除它的原因是什麼? –