2011-12-11 63 views
3

快速的問題:我有一個傳奇,可以有一個場景,它需要處理一個消息,可能在兩種情況下進來。一個傳奇仍然開放,一個傳奇被標記爲完整的地方。可以通過AND處理同一個消息來啓動NserviceBus傳奇嗎?

如果傳奇是開放的,很棒,繼續照常。如果這個傳奇沒有打開,那就需要開始一個新的傳奇。處理這種情況的最佳做法是什麼?顯然,如果這個傳奇是開放的,那麼IHandleMessages<>很有效。但不會IAmStartedByMessages<>導致兩個傳說開放?這會很糟糕。謝謝

回答

4

IAmStartedByMessages<>如果已經打開的傳奇故事可以解決,將不會導致2傳奇故事開啓。你應該沒問題,只需使用IAmStartedByMessages<>而不需要IHandleMessages<>

2

只要確保將它包含在ConfigureMapping覆蓋中,您仍然可以使用IAmStartedByMessages> <>處理消息。這樣,根據您如何找到現有的傳奇,您將返回現有的實例或創建一個新的實例。 HTH。

1

正如我從NserviceBus來源看到的,如果發現一些處理消息的傳奇,新的傳奇將不會啓動。 (我檢查了NBus 2.0)

所以你的場景應該可以正常工作。您可以從示例應用程序中輕鬆查看。

不過,你描述的情況很奇怪。我寧願有兩種消息類型,一種用於傳奇開始,另一種用於傳奇作品。