0


0

私はasp.netのWebサイトから一度に多数のSMSメッセージを送信し、またPOP3アカウントで受信メールをポーリングしてから、一度に1人ずつ多数の受信者に送信する必要があります。

私がこれをすることを考えている方法は私のsqlバックエンドに接続して送信されるべきSMSメッセージがあるかどうか確認するために、10〜20秒ごとのようにするWindowsサービスです。 そうであれば、リスト内のすべてのメッセージを取得し、それらをテーブルから削除してから送信してください。

ポップアカウントでも同じです。

asp.netのWebページが開始されたときにブロックされることなく、このサービスを最適に提供する方法に関するアイデア(例: SQL Serverに追加されたメッセージ)

プラットフォームは、Windows Server 2003 R2、SQL 2008標準、asp.net 3.5 SP1です。

アドバイスありがとうございます。

2 Answer


2


SQL Serverサービスブローカーのキューイングメカニズムを使用して同様のシナリオを実装しました。 考えは、挿入されたすべてのSMSレコードがSmsIDを含むメッセージをサービスブローカーキューに挿入するトリガーによって捕捉されるということです。

その場合は、キューからメッセージを受け取るストアドプロシージャが必要です。 メッセージがない場合は、次のエントリが挿入されるまでプロシージャは実行されます。 キューをリッスンするのにリソースを消費しないので、それは問題ありません。

次に、STPを継続的に(再帰的に)呼び出し、SMSを組み立てて送信するWindowsサービスが必要です。

テーブル内のフラグに対するサービスブローカキューの利点は、スレッドセーフです。 この方法で、同時実行性の問題についてあまり心配しなくても、サービスのインスタンスをいくつでも持つことができます。

あなたはここで素晴らしいService Brokerのtutoialを見つけることができます:http://www.developer.com/db/article.php/3640771


1


Sql Serverをキューに使用する代わりに、これにMSMQ(Microsoft Message Queuing)を使用することができます。

MSMQは設定が非常に簡単で、一度起動して実行すると、Sql Serverよりもスケーラブルになります。

そのため、MSMQで送信したいメッセージを受信する新しいキューを設定することができました。 メッセージは通常、メッセージ、送信者、および受信者を記述するある種のMessageオブジェクトです。

次に、定期的にキューをポーリングするサービスを設定するか、新しいメッセージがキューに送信されるたびに選択したクラスを開始するようにMSMQを設定します。

メッセージのログが必要な場合は、メッセージが送信されたときにサービス/送信者オブジェクトにSQL Serverのログに書き込むようにできます。