2015-03-03 2 views
1

У меня есть решение с 4 конечными точками узла NSB, которые были созданы с помощью ServiceMatrix, и я хочу использовать их в саге.В ServiceMatrix, возможно ли «ConvertToSaga» конечная точка, которая публикует/подписывает сообщения о событиях, а не командные сообщения?

Я знаю, как преобразовать в сагу из команды и отлично работает в тестовом проекте. Я не понимаю, как я могу сделать то же самое с опубликованными событиями, поскольку параметр меню недоступен. Можно ли это сделать, используя ServiceMatrix?

Я попытался выполнить изменения вручную, следуя this tutorial и наблюдая изменения, которые были внесены в мой тестовый проект, когда я преобразовал в сагу.

Он строит нормально, но выдает ошибку в рамках при запуске:

System.InvalidOperationException было необработанное Сообщение: необработанное исключение типа «System.InvalidOperationException» произошло в mscorlib.dll

Дополнительная информация: нет экземпляра IBus, пожалуйста, сконфигурируйте его, а также убедитесь, что вы не определяете свое собственное свойство Bus в своей саге, поскольку оно скрывает таковое в базовом классе

Я использую VS2013 и ServiceBus 5.

UPDATE: Я закомментирована унаследованный IHandleMessages <> интерфейса и общественный IBus Bus имущество из сгенерированного кода, и она работает без этой ошибки. Я не доволен этим, поскольку следующее изменение дизайна с помощью инструмента перезапишет эти исправления.

ответ

1

В вашем обработчике команд у вас обычно есть свойство типа IBus, которое вводится в класс обработчика либо путем инъекции свойств, либо путем впрыска конструктора.

Когда вы переходите от обработчика команд к саге, вам нужно удалить свойство IBus из обработчика. Базовый класс Saga имеет свойство Bus, которое вы должны использовать вместо этого. Это свойство заселено для вас автоматически, вам это не нужно. Это именно то, что говорит вам это исключение.

+0

Спасибо Alexey - это исправляет ошибку. Знаете ли вы, можно ли это сделать в инструменте ServiceMatrix или изменить код, который сгенерирован, чтобы мне не нужно было удалять (комментировать) свойство? – Justin

+0

Я не использую ServiceMatrix, но я считаю, что нет ничего плохого в удалении сгенерированного кода. Возможно, вы захотите отправить вопрос в Github, если вы считаете, что это ошибка в ServiceMatrix. –

+0

Принимается, потому что это устраняет проблему. Я думаю, что в настоящее время это ограничение Матрицы обслуживания, что это невозможно сделать с сообщениями о событиях. – Justin