一部の NServiceBus サービスの開始/停止を自動化する取り組みの一環として、サービスが入力キュー内のすべてのメッセージの処理をいつ終了したかを知りたいです。
問題は、NServiceBus サービスの実行中に、私の C# コードが報告するメッセージが実際よりも 1 つ少ないことです。したがって、メッセージが 1 つ残っている場合、キューは空であると見なされます。サービスが停止している場合、「正しい」数のメッセージが報告されます。コンピュータ管理アプリケーションのプライベート キュー ビューを使用して自分でキューを調べると、「正しい」番号が表示されるため、これは紛らわしいです。
メッセージ数を見つけるために、次の C# コードのバリアントを使用しています。
var queue = new MessageQueue(path);
return queue.GetAllMessages().Length;
多くのメッセージがある場合、これはひどく実行されることを私は知っています。私が検査しているキューには、一度に少数のメッセージしかありません。
関連する他の 質問を見 ましたが、必要なヘルプが見つかりませんでした。
洞察や提案をいただければ幸いです。
更新:このサービスは、このサービスをシャットダウンしようとする前にシャットダウンされるディストリビューターの背後にあることに言及する必要がありました。したがって、新しいメッセージがサービスの入力キューに追加されないことは確実です。