我们正在使用托管在 .Net 4.6.1 Windows 服务中的 NServiceBus 5.2.14。我们通过 AuditConfig 为我们的服务添加了 NServiceBus 审计:
<AuditConfig QueueName="AuditService" />
当我们为包含 Sagas 的 windows 服务打开 Auditing 时,我们注意到一些新的订阅添加到我们的订阅 Sql 表中。像这些:
SubscriberEndpoint MessageType
ServiceThatIsPublishingEventTypeA@MyMachine MyAssembly.MessageTypeA,1.0.147.0
AuditService@MyMachine MyAssembly.MessageTypeA,1.0.147.0
似乎在对 Saga 服务启用审核后,正在发布事件(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.<>c__DisplayClass4_0.<InvokeNext>b__0() in C:\BuildAgent\work\3206e2123f54fce4\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 94
这是有道理的,因为ServiceThatIsPublishingEventTypeA服务中没有MyAssembly.MessageTypeA事件的处理程序(它只是发布这些事件),但审计已经添加了这个订阅。
所以我的问题是:递归订阅是否正确?通过 saga 审计流量的正确方法是什么(并避免引发错误)?
谢谢你的帮助