.NETクライアントアプリケーションからSQLServerテーブルに新しい行が表示されるのを待つにはどうすればよいですか?
背景:テーブルに基づいてメッセージキューを作成したいと思います。メッセージを構造化して強く型付けしたいので、ServiceBrokerを使用したくありません。通常のテーブルを使用すると、他のテーブルとも関係を持つことができます。
.NETクライアントアプリケーションからSQLServerテーブルに新しい行が表示されるのを待つにはどうすればよいですか?
背景:テーブルに基づいてメッセージキューを作成したいと思います。メッセージを構造化して強く型付けしたいので、ServiceBrokerを使用したくありません。通常のテーブルを使用すると、他のテーブルとも関係を持つことができます。
通常はポーリングを使用しますが、すぐにイベントが必要な場合SqlDependency
は、クエリの結果が変化したときにクラスを使用してイベントを取得できます。
ポーリングするか、通知を受け取る必要があります。
ポーリングでは、クライアントが述語またはforのいずれかを使用してテーブルを定期的にクエリする必要がありますcount(*)
。これはおそらく素晴らしい解決策ではありません。
テーブルにトリガーを設定し、クライアントのリスナーにメッセージを送信することは、安価ですが便利な通知システムである可能性があります。
このアプリケーションでは、System.Threading.Timer を使用してデータベース テーブルをポーリングします。新しいメッセージが利用可能になると、それは処理されます。処理が成功した場合、メッセージは DB から削除されます。