NServiceBus - Saga 审计 - 没有发现异常处理程序
NServiceBus - Saga Auditing - no handlers found exception
我们正在使用托管在 .Net 4.6.1 windows 服务中的 NServiceBus 5.2.14。
我们已经通过 AuditConfig 将 NServiceBus 审计添加到我们的服务中:
<AuditConfig QueueName="AuditService" />
当我们为包含我们的 Sagas 的 windows 服务打开审核时,我们注意到一些新订阅已添加到我们的订阅 Sql table 中。像这样:
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\work06e2123f54fce4\src\NServiceBus.Core\Unicast\Behaviors\LoadHandlersBehavior.cs:line 29
at NServiceBus.BehaviorChain`1.InvokeNext(T context) in C:\BuildAgent\work06e2123f54fce4\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 107
at NServiceBus.BehaviorChain`1.<>c__DisplayClass4_0.<InvokeNext>b__0() in C:\BuildAgent\work06e2123f54fce4\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 94
这是有道理的,因为 MyAssembly.MessageTypeA 服务中没有 ServiceThatIsPublishingEventTypeA 事件的处理程序(它只是发布这些事件) , 但审核已添加此订阅。
所以我的问题是:递归订阅是否正确?通过 saga 审计流量的正确方法是什么(并避免出现错误)?
感谢您的帮助
我猜终结点正在自动订阅它在程序集扫描中发现的事件,你可以尝试 disable auto subscribe 吗?
== 编辑
在 looking at the code on github 我创建了一个可用版本的拉取请求之后,主要问题是审计组件正在处理它通过审计通道收到的订阅消息...
我还清理了一些小的冗余代码
我们正在使用托管在 .Net 4.6.1 windows 服务中的 NServiceBus 5.2.14。 我们已经通过 AuditConfig 将 NServiceBus 审计添加到我们的服务中:
<AuditConfig QueueName="AuditService" />
当我们为包含我们的 Sagas 的 windows 服务打开审核时,我们注意到一些新订阅已添加到我们的订阅 Sql table 中。像这样:
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\work06e2123f54fce4\src\NServiceBus.Core\Unicast\Behaviors\LoadHandlersBehavior.cs:line 29
at NServiceBus.BehaviorChain`1.InvokeNext(T context) in C:\BuildAgent\work06e2123f54fce4\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 107
at NServiceBus.BehaviorChain`1.<>c__DisplayClass4_0.<InvokeNext>b__0() in C:\BuildAgent\work06e2123f54fce4\src\NServiceBus.Core\Pipeline\BehaviorChain.cs:line 94
这是有道理的,因为 MyAssembly.MessageTypeA 服务中没有 ServiceThatIsPublishingEventTypeA 事件的处理程序(它只是发布这些事件) , 但审核已添加此订阅。
所以我的问题是:递归订阅是否正确?通过 saga 审计流量的正确方法是什么(并避免出现错误)?
感谢您的帮助
我猜终结点正在自动订阅它在程序集扫描中发现的事件,你可以尝试 disable auto subscribe 吗?
== 编辑
在 looking at the code on github 我创建了一个可用版本的拉取请求之后,主要问题是审计组件正在处理它通过审计通道收到的订阅消息...
我还清理了一些小的冗余代码