私は Sql Server Service Broker の初心者であり、Service Broker を (一見) 単純なユース ケースに設定するための最良の方法を把握しようとしています。1 つのアプリケーションが作業項目を別のアプリケーションがそのキューから作業項目を取得して処理します。最初のアプリケーションが 2 番目のアプリケーションからステータス メッセージを取得する必要はありません。キューを単一の Sql Server インスタンスに配置したい。
私を最も混乱させているのは、会話/ダイアログがこの状況にどのように関係しているかです。会話/ダイアログのコンテキストでのみメッセージを送受信できることは知っていますが、2 つのアプリケーション間でやり取りがないため、いつ新しい会話を作成するのが適切なのか迷っています。2つの極端な選択肢は次のようです。
- 作業項目をキューに入れるたびに、新しい会話を開始します。そのため、各会話には 1 つのメッセージしか含まれません。
- 展開時に、1 つの無期限の会話を手動で作成します。作業項目をキューに入れるときは、常にその単一の会話の一部として送信します。
これらのルートのいずれかを選択すると、どのような結果になるでしょうか?
また、最初のケースでは、Sql Server がリソースを内部的にクリーンアップできるようにするために、いくつかの END CONVERSATION を実行する必要があるようです。これらをいつ配置するのが正しいかについてのガイダンスはありますか? (または、最終的には会話がタイムアウトになることに依存する方が良い可能性があるでしょうか?)