0

最終的にSQL Server データベースに保存したい軽量のメッセージを保存するために、RabbitMQを使用しています。キューが空になることもあれば、トラフィックが急増することもあります (30,000 メッセージ)。

C# console app同じサーバーで実行しています。

コンソール アプリを約 1 分ごとに実行し、指定された数のアイテムをキューから取り出してデータベースに挿入しますか? (扱いやすい一口を取る)

また

コンソール アプリは常に "リッスン" し、アイテムが入ってくるとそれをデータベースに叩き込みますか? (より積極的なアプローチ)

4

4 に答える 4

0

私がすることは、コンソールアプリが常にrabbitmqをリッスンし、コンソールアプリでデータベースに挿入するための独自のキューを作成して、データベースの挿入を調整できるようにすることです。これを行うことで、一度に非常に多くのタスクのみを許可することで、忙しい時間にフローを制御できます。遅い時間には、頻繁にポーリングするよりも高速な反応が得られます。私がこれを行う方法は、イベントを発生させることです。キューに何かする必要があることがわかっているので、キューの長さをチェックして、処理するトランザクションの数を確認できます。

于 2013-07-30T18:09:31.193 に答える
0

コンソール アプリケーションを使用する代わりに、Windows サービスをセットアップし、 n 分ごとにポーリングするようにサービスにタイマーをセットアップすることができます。以下のリンクをご覧ください。

http://www.codeproject.com/Questions/189250/how-to-use-a-timer-in-windows-service

http://msdn.microsoft.com/en-us/library/zt39148a.aspx

Windows サービスを使用すると、サーバーが再起動された場合に、サービスを再起動するように設定できます。

于 2013-07-30T18:13:49.027 に答える