2016-04-16 6 views
0

Мы используем NServiceBus 5.2.14, размещенные внутри .Net 4.6.1 служб Windows. Мы добавили NServiceBus аудита наших услуг через AuditConfig:NServiceBus - Saga Auditing - исключение из обработчиков

<AuditConfig QueueName="AuditService" /> 

Когда мы свернули аудит для обслуживания окон, содержащее наши Саги, мы заметили некоторые новые подписки, добавленные к нашей подписке Sql таблице. Как это:

SubscriberEndpoint        MessageType 
[email protected] MyAssembly.MessageTypeA,1.0.147.0 
[email protected]       MyAssembly.MessageTypeA,1.0.147.0 

кажется, что после включения аудита на службе Saga, сервис, который издательское событие (что сага подписавшись), теперь получает рекурсивную подписку на себя.

Когда сообщение обрабатывается, копия успешно помещается в очередь аудита.

Однако, проблема, которую я имею, что я также получить копию сообщения проталкивается в ServiceThatIsPublishingEventTypeA.Error очереди и исключения поднятого в моем журнале.

Исключение:

System.InvalidOperationException: No handlers could be found for message type: MyAssembly.MessageTypeA 
at NServiceBus.LoadHandlersBehavior.Invoke(IncomingContext context, Action next) in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Unicast\Behaviors\LoadHandlersBehavior.cs:line 29 
at NServiceBus.BehaviorChain`1.InvokeNext(T context) in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 107 
at NServiceBus.BehaviorChain`1.&lt;&gt;c__DisplayClass4_0.&lt;InvokeNext&gt;b__0() in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 94 

Это имеет смысл, поскольку нет обработчиков для MyAssembly.MessageTypeA события в ServiceThatIsPublishingEventTypeA обслуживания (это просто публикует эти события), но аудит добавил эту подписку ,

Так что мой вопрос: Правильно ли это рекурсивная подписка? каков правильный способ проверки трафика через сагу (и избежать возникновения ошибок)?

Спасибо за вашу помощь

+0

Является ли ваша аудиторская служба конечной точкой NServiceBus? Если он настроен? Я имею в виду, какие сообщения он обрабатывает? –

+0

Да AuditService - конечная точка NSB. Он обрабатывает все сообщения, проходящие через наши различные сервисы. Он имеет обработчик , который находится на всех наших сообщениях. – jonho

+0

записывает эти сообщения в наш db. – jonho

ответ

1

Я предполагаю, что конечная точка является автоматической подписки на события, которые он находит в сканировании сборки, вы можете попробовать и disable auto subscribe?

== EDIT

После looking at the code on github я создал запрос тянуть с версией, которая работает, основной вопрос о том, что компонент аудита обрабатывал подписки сообщения, принятого через канал аудита ...

I также очистил некоторый небольшой избыточный код

+0

Хорошо, я попробую это. спасибо – jonho

+0

Привет, Шон, извините за задержку в ответе. Отключить автоматическую подписку не удалось устранить проблему. Я создал репо здесь: https://github.com/seantarogers/AuditingIssue, если у вас есть возможность взглянуть на него. Спасибо – jonho

+0

Я посмотрю и вернусь к вам –

 Смежные вопросы

  • Нет связанных вопросов^_^