3つのエンドポイントを持つWCFサービスが必要です
- 高い
- 普通
- 低い
ほとんどのメッセージは、通常のエンドポイントと低いエンドポイントを経由します。メッセージオンハイが表示される場合は、できるだけ早く処理する必要があります。
誰かがそれを行う方法を知っていますか?
MSDN Magazine の Michele Leroux Bustamante による次の 2 部構成の素晴らしいシリーズをご覧ください。
WCF ルーターの構築 (パート 1 ) および WCF ルーターの構築 (パート 2)
特にパート 1 は、あなたにとって興味深いでしょう。
クライアントとターゲット サービスの間に仲介サービスまたはルーター サービスを導入して、その間を流れるメッセージを受信し、ロギング、優先ルーティング、オンライン/オフライン ルーティング、負荷分散などの追加アクティビティを実行したり、セキュリティ境界を導入したりすると便利な場合があります。 . このような中間サービスが導入されると、対応するためにいくつかのアドレス指定とメッセージ フィルタリングの動作を微調整することが必要になります。
[私の強調を追加]
2 つの別々のエンドポイント プロセスを実行してみませんか。1 つは低/通常用、もう 1 つは高用です。容量があれば、別の (より良い?) ハードウェアに配置することもできます。それ以外の場合は、単一のプロセスで実行する必要がある場合は、優先キューが必要になるようです。
私が考える最も簡単な方法は、サービスを 2 回デプロイすることです。1 つは低/中エンドポイントを使用し、次に完全に異なるインスタンスを高エンドポイントでデプロイします。Endian が彼の回答 (私は BTW に投票しました) で述べたように、それらを物理的に分離することもできますが、同じボックスで実行することもできます。2 つのインスタンスが異なるポートを使用している場合です。これは、私がそうしなければならない場合に私がする方法です(または本当に強く求めます)。
他の(魅力的でない)オプションは、メッセージを操作して別の「VIP」ラインに入れることができるカスタムチャネルを作成し、サービス操作時に「VIP」ラインからプルできる対応する操作動作を作成することです。メッセージを受信する準備ができています。サービスが 1 つの「セット」のサービス インスタンスで実行されていることを確認するだけなので、最初のオプションよりもメリットはありません。あなたの状況では、これはあまり役に立たないと思います。
サービスの停止と再起動が優先度の高い要求である限り、ドラゴンがいます。可能であれば、私はそれを避けます。そうでない場合は、サービスを WF ワークフローとして作成し、そのプロセスの開始/停止機能の一部を使用することを検討することをお勧めしますが、それを機能させるには、いくつかのカスタム チャネルといくつかのカスタム動作が必要です。この時点で、BizTalk について考える必要があるかもしれません。
その優先順位を自分で実装する必要があると思います。
優先度が高い場合は、他のすべてを停止し (その状態などを保存する)、実行する必要があることは何でも開始する必要があります。
ちょっとした考え