Могу ли я запустить сагу NserviceBus и обработать то же сообщение? - PullRequest
3 голосов
/ 11 декабря 2011

Быстрый вопрос: у меня есть сага, в которой может быть сценарий, в котором она должна обработать сообщение, которое может появиться в двух ситуациях.Тот, где сага все еще открыта, и тот, где сага помечена как завершенная.

Если сага открыта, отлично, продолжайте как обычно.Если сага не открыта, она должна начать новую сагу.Как лучше всего справляться с этой ситуацией?IHandleMessages<> отлично работает, очевидно, если сага открыта.Но не приведет ли IAmStartedByMessages<> к открытию двух саг?Это было бы плохо.Спасибо

Ответы [ 3 ]

4 голосов
/ 21 декабря 2011

IAmStartedByMessages<> не приведет к открытию 2 саг, если разрешить уже открытую сагу. Вы можете использовать IAmStartedByMessages<> без необходимости IHandleMessages<>.

2 голосов
/ 12 декабря 2011

Вы по-прежнему можете обрабатывать сообщение с помощью IAmStartedByMessages <>, если вы уверены, что включили его в переопределение ConfigureMapping.Таким образом, в зависимости от того, как вы найдете существующие саги, вы либо вернете существующий экземпляр, либо создадите новый.НТН.

1 голос
/ 12 декабря 2011

Как я вижу из источников NserviceBus, новая сага не будет запущена, если найдена какая-то сага, которая обрабатывает сообщение.(Я проверил NBus 2.0)

Так что ваш сценарий должен работать правильно.Вы можете легко проверить это из примера приложения.

Тем не менее, описанная вами ситуация довольно странная.Я бы предпочел иметь два типа сообщений: один для запуска саги, другой для работы саги.

...