1

キューに入れられたアイテムを処理するために SQL Server Service Broker を使用するプロトタイプを作成しています。これまでのところ、物事はうまくいっています。

私がやりたいことの 1 つは、異なるプロセスまたはスレッドでキューから複数のアイテムを並行して処理できるようにすることですが、特定のユーザーが一度に 1 つのアイテムしか処理できないように処理を制限して、1 人の熱心なユーザーを防ぐことです。他のすべてを飢えさせることから。

並列スレッドでの処理は簡単です。ユーザーごとの制限はそれほど単純ではありません。最初は、会話グループ ID をユーザーの ID に設定できると考えていたので、サービス ブローカーによってグループの処理が自動的にシリアル化されます。現時点では、このオプションをうまく実装する方法を見つけていません。

これは会話グループでできることですか?サービスブローカーの有無にかかわらず、より簡単な方法はありますか? Service Broker の外部で処理する必要がありますか?

私はかなりの調査を行いましたが、すべてが一緒に実行され始めているため、明らかな何かを見逃していたら申し訳ありません.

4

1 に答える 1

1

あなたが示唆したように、会話とユーザーの間に 1 対 1 の関係を持つことができ、会話グループ ロックの魔法により、SSSB は各ユーザーに対して一度に 1 つのことだけを処理します。

システムは会話自体の ID を生成するため、ID を設定することはできませんが、ユーザーを会話にマップするテーブルを使用できます。

于 2013-09-17T09:30:15.677 に答える