sql >> データベース >  >> RDS >> Sqlserver

SQLServerサービスブローカーの会話グループ

    会話グループは、ロックに使用されるローカルプリミティブです。会話グループ内のメッセージには順序の保証がなく、会話グループはネットワークを介して流れません。

    メッセージの順序は、会話内のServiceBrokerによって保証されます。したがって、処理中の相関メッセージの順序を維持するには、同じ会話でメッセージを送信します。

    会話グループは、相互に関連する一連の会話をグループ化するために必要です。両方のGET CONVERSATION GROUP およびRECEIVE 動詞は、会話グループ全体をロックすることを保証し、他のスレッドが関連メッセージを処理するのを防ぎます。たとえば、旅行サイトについて考えてみます。ホリデーパッケージの予約をリクエストするメッセージを受け取ります。その結果、ホテル予約サービスとの会話を開始し、部屋の予約要求を送信し、航空会社予約サービスとの会話を開始して旅行予約を要求し、レンタカー代理店サービスとの会話を開始して、車の予約。作成されたこれらの3つの新しい会話はすべて、リクエストが受信された最初の会話と同じグループにあります(アプリケーションはWITH RELATED_CONVERSATIONを使用しました 3つすべてのBEGINDIALOGの句)。次に、コミットして、キュー内のメッセージの処理に進みます。これらの3つの相関する要求からのその後の応答は、ほぼランダムな時間に開始されます。ホテルの応答が最初に来ると言います。メッセージはアプリケーションによってピックアップされ、ホテルからの応答でリクエストのステータスを更新します。同時に、航空会社の応答が届きます。別のスレッドがそれを取得することを許可された場合、同じのステータスを更新しようとします。 リクエストにより、ホテルの応答を処理しているスレッドがブロックされたり、デッドロックが発生したりします。ホテルの応答が処理されると、スレッドはコミットして会話グループ全体のロックを解除し、任意のスレッド(それ自体を含む)が航空会社の応答を取得して処理できるようにします。




    1. Javaを使用してPostgresqlで画像を保存および取得する

    2. SQLServer2012のプロセッサの選択

    3. データベースがeコマースビジネスをサポートする方法

    4. ベースラインの重要性