Сага о Ребусе разделена между несколькими обработчиками
Можно ли разделить сагу Rebus на несколько классов обработчиков?
У меня есть рабочий процесс саги Rebus, который инициируется многими типами сообщений и дополняется только двумя типами сообщений.
Вместо того, чтобы иметь один класс, реализующий все различные IAmInitiatedBy<T>
а также IHandleMessage<T>
Я хотел бы разделить их на один класс для каждого сообщения, которое инициирует рабочий процесс. И один класс, который обрабатывает сообщения, которые завершают рабочий процесс.
Поэтому, если появятся какие-то новые требования, которые также могут запустить рабочий процесс, я просто создаю новый обработчик, а не обновляю существующий.
Это действительный вариант использования Rebus Sagas? Разделить обработчики по нескольким классам, работающим с одним и тем же типом SagaData.
Начальные тесты этого, кажется, работают, но наши существующие модульные тесты рабочего процесса используют SagaFixture, которую я не могу заставить работать вместе через несколько приборов.
1 ответ
Это должно работать просто отлично, но, как вы правильно обнаружили, SagaFixture
на самом деле не предназначен для обслуживания нескольких типов обработчиков саги.
Если это то, с чем вам было бы интересно помочь, я советую вам перейти к репозиторию Rebus.TestHelpers. Я буду рад помочь вам представить PR.