У меня есть версия NServiceBus 3.3.8 Сага, что я работаю над миграцией из NServiceBus 2.6. После того, как я обновил его, я обнаружил, что одно сообщение в очереди обрабатывается дважды сагой. Самое странное в том, что NServiceBus рассматривает это как два отдельных транспортных сообщения, потому что моя реализация IMessageModule также вызывается дважды.Одно сообщение NServiceBus, обработанное Saga два раза
Сообщение, которое он получает, является сообщением, связанным с NServiceBus 2.6. Кто-нибудь видел это раньше? Сначала я подумал, что это проблема с вложением зависимостей, поскольку мы переходим из Unity в Autofac, но это, похоже, не объясняет проблему с вызовом MessageModule дважды.
Я ценю любую помощь, которую вы можете предоставить.
UPDATE
Оказывается, что этот вопрос был вопрос внедрения зависимостей, что я невольно создал. У саги есть некоторые дополнительные зависимости, которые требуют IBus, а IBus является свойством и устанавливается через инъекцию свойств. Использование модуля Autofac, я попытался упростить конфигурацию, перекрывая AttachToComponentRegistration и инъекционные свойства на все зарегистрированные элементы, как это:
protected override void AttachToComponentRegistration(IComponentRegistry componentRegistry, IComponentRegistration registration) {
registration.Activating += (s, e) => e.Context.InjectProperties(e.Instance);
}
Это, однако, вызвал вопрос выше. Чтобы исправить это, я удалил это переопределение и вручную настроить инъекции собственности через вызов:
builder.RegisterType<Implementation>().As<Interface>().PropertiesAutowired();
Это помогает устранить повторяющиеся проблемы обработки. Я все еще не уверен, почему это вызвало проблему, но удаление этого переопределения предотвратило дублирование обработки сообщений.
У меня была аналогичная проблема с обычным обработчиком, ошибка контейнера, а затем странное дублирующее сообщение. Что здесь происходит? – brumScouse