ワークキューと SqlDependency がぴったりだと思う状況がありますが、すべてをつなぎ合わせるのに苦労しています。
1000 個のエンティティがあり、各エンティティを異なる間隔 (つまり、15 分、30 分、または 45 分) で「処理」する必要があるとします。より多くの作業を探すために SQL Server を毎分ポーリングすることなく、作業を複数のプロセスに分割したいと考えています。SqlDependency / クエリ通知に関連する多くの記事を読みましたが、作業をキューに入れる方法と、各プロセスを一連の作業項目に制限する方法がわかりません。
次のような SqlDependency クエリを作成しました。
select f1, f2, etc from dbo.entity where LastRunDt < datediff(minute, 15, @dt)
クエリは 0 の結果で実行されますが、15 分が経過すると、このレコードセットが変更されます (レコードセット内の項目が増えます)。通知は発生しません。この方法ではうまくいかないと思うので、作業項目をキューに入れる方法に行き詰まっています。
また、2 つのプロセスを同じ作業キューにアタッチすると、各プロセスに通知されますが ( select * from dbo.entity
SqlDependency クエリを実行してレコードを変更すると)、両方とも同じ作業項目を受け取ります。どのサーバーがオンラインで、どのサーバーがメンテナンスのためにオフラインであるかに応じて、リスナーの数が 2 または 12 になる可能性があるため、使用可能なプロセス間で作業項目を分割する必要があります。
クライアントは C# で記述されます。
既知のパターン、考え、または方向性は非常に高く評価されます。