Что происходит в саге NServiceBus, когда сообщение IAmStartedBy приходит после сообщения IHandle?

У меня есть NServiceBus Saga, которая выглядит так

public class MySaga : Saga<MySagaData>,
                                IAmStartedByMessages<MyStartMessage>,
                                IHandleMessages<OtherMessage>

Но сообщения могут выходить не по порядку. Так что же происходит, когда сообщение IAmStartedBy приходит после сообщения IHandle? Для OtherMessage не будет SagaData. Проглотит ли NServiceBus сообщение или попытается повторно обработать его позже?


person Simon    schedule 03.06.2010    source источник


Ответы (1)


NServiceBus не сможет найти активную сагу для OtherMessage, повторит заданное количество раз, а затем поместит сообщение в очередь ошибок. Повторные попытки могут задержаться достаточно долго, чтобы MyStartMessage прибыл. Есть ли причина, по которой OtherMessage также не может начать сагу? (у вас может быть несколько сообщений, которые могут начать сагу)

person Andreas Öhlund    schedule 03.06.2010
comment
Андреас. Это был ответ, т.е. ожидаемый. Я хотел избежать нескольких IAmStartedByMessages, потому что это усложняет код для каждого обработчика. - person Simon; 04.06.2010
comment
Одной из областей использования Sagas является обработка таких ситуаций, как ваша, когда сообщения могут поступать не по порядку, поэтому я не буду беспокоиться о наличии нескольких IAmStartedBy. Удачи! - person Andreas Öhlund; 04.06.2010