Я пытаюсь найти помощь по разработке Saga в NServiceBus 5.x, который запускается двумя или более сообщениями. Это означает, что сага не начинается с одного сообщения, но все сообщения должны присутствовать до начала саги.Как создать саббу NServiceBus, начатую с получения нескольких сообщений
Я не совсем понимаю, как это будет работать, и нет никаких примеров или примеров, которые можно найти где угодно.
Я прочитал пару книг, в которых четко сказано, что это прекрасно, когда сага началась несколькими сообщениями.
То, что я не получаю, - это то, как сага будет найдена, когда вам нужно, например. 3 сообщения, чтобы начать сагу. Все 3 сообщения должны прибыть в любом порядке до того, как сага «начнет». Как это влияет на мой выбор атрибута [Unique]
?
Пример: мне нужна сага, который является "уникальным" LY определены три ИД "StoreID", "ComputerID", "Идентификатор_пользователь". Эти три идентификатора будут поступать в три различные команды: Message1
, Message2
, Message3
.
public class MySaga : Saga<MySagaData>,
IAmStartedByMessages<Message1>,
IAmStartedByMessages<Message2>,
IAmStartedByMessages<Message3>
{ ...
}
Должен ли MySagaData иметь атрибут [Unique] для трех свойств?
public class MySagaData
{
[Unique]
public int StoreId {get;set;}
[Unique]
public int ComputerId {get;set;}
[Unique]
public int UserId {get;set;}
}
Или мне нужно создать свойство readonly, связанное с этими тремя?
Когда Message1
и Message3
прибывают, сага не может быть запущена. Message2
отсутствует.
Затем прибывает еще Message1
.
Затем прибывает Message2
. (завершение первой саги, поэтому ее можно запустить)
Как насчет второго Message1
?
Как это будет обрабатываться?
Нет ничего, специально созданного для поддержки этого, насколько я знаю. Ваша сага должна начинаться при появлении * любых сообщений. Тогда вам нужно реагировать на другие сообщения, поступающие для создания вашего «полного» набора данных, определить, что сообщения связаны и т. Д. –
Какое постоянство данных вы используете? –
@ColinPear Nhibernate – John