.Net 4.6.1 Windows サービス内でホストされている NServiceBus 5.2.14 を使用しています。AuditConfig を介してサービスに NServiceBus 監査を追加しました。
<AuditConfig QueueName="AuditService" />
Sagas を含む Windows サービスの監査を有効にしたとき、いくつかの新しいサブスクリプションがサブスクリプション 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イベントのハンドラーがない(これらのイベントを発行するだけである) ため、理にかなっていますが、監査によってこのサブスクリプションが追加されています。
私の質問は次のとおりです。その再帰サブスクリプションは正しいですか? サガを介してトラフィックを監査する正しい方法は何ですか (エラーが発生するのを回避します)?
ご協力いただきありがとうございます