2016-07-26 3 views
0

私のシステム(クラウドサービス)が利用できない場合やDBがビジー状態の場合、HTTPを介して送信されたメッセージ(ブローカ)を格納するAzureのAPIが必要です。正確なメッセージを送信する方法を変更することは容易ではありません。 Azureでこのようなブローカーを作るにはどうすればいいですか?匿名HTTP APIメッセージのためにAzureでブローカーを作成する方法はありますか?

サービスバスキューは面白そうですが、私が理解する限りShared Access Signaturesが必要です。

もう1つのWebRoleはソリューションである必要がありますが、実装には時間が必要です。

いくつかのツール(MSMQ?)を使用している仮想マシンは方法のようですが、メンテナンスが必要です。

あなたはどう思いますか?

+0

を使用することによって、あなたの質問にコメントで述べたように、プロキシは、簡単にfunction applicationに委任することができます – Aravind

+0

@Aravind @Aravindクライアントを変更できない場合は、最初にキューにどのように格納するのですか(サービスバス、そうですか?)ありがとう! – Artyom

+0

はサービスバスまたはストレージキューにすることができます。特定の新しいエンドポイントにメッセージを送信するためには、少なくともクライアントアプリケーションを変更する必要があります。 – Aravind

答えて

2

シナリオは、キュー中心ワークパターンを適用するための主要な候補です。

http://www.asp.net/aspnet/overview/developing-apps-with-windows-azure/building-real-world-cloud-apps-with-windows-azure/queue-centric-work-patternから:

Loosely Coupled

あなたの労働者(複数可)またはデータベースのいずれかが使用できなくなった場合、メッセージはまだ耐久性のあるストレージに配置され、後に消費されています。

タスクキューは、Azureストレージキューまたはサービスバスキューの形式をとります。すべての優れた設計では、仕事を行う最も複雑なコンポーネントが勝ちます。このケースではAzure Storage Queues、耐久性、信頼性が非常に低い可動部品です。正確なFIFOの順序が絶対に必要な場合を除き、この場合はサービスバスを使用します。

https://msdn.microsoft.com/en-us/library/dn568101.aspxから:

このソリューションは、次のような利点を提供しています:

  • これは、アプリケーションインスタンスによって送信された要求の量の幅広い変動を扱うことができ、本質的に負荷平準化システムを可能にします。キューは、アプリケーションインスタンスとコンシューマサービスインスタンス間のバッファとして機能し、アプリケーションとサービスインスタンスの両方の可用性と応答性への影響を最小限に抑えるのに役立ちます(キューベースの負荷分散パターンで説明)。長期実行処理が必要なメッセージを処理しても、他のメッセージがコンシューマサービスの他のインスタンスによって同時に処理されることはありません。

  • 信頼性が向上します。プロデューサがこのパターンを使用する代わりにコンシューマと直接通信し、コンシューマを監視しない場合、コンシューマが失敗した場合にメッセージが失われたり処理されなくなる可能性が高くなります。このパターンでは、メッセージは特定のサービスインスタンスに送信されず、失敗したサービスインスタンスはプロデューサをブロックせず、動作中のサービスインスタンスによってメッセージを処理できます。

  • これは、コンシューマ間、またはプロデューサとコンシューマインスタンスの間の複雑な調整を必要としません。メッセージキューは、各メッセージが少なくとも1回配信されることを保証します。

  • スケーラブルです。システムは、メッセージの量が変動すると、消費者サービスのインスタンスの数を動的に増減することができる。

  • メッセージキューがトランザクション読み取り操作を提供する場合は、回復力を向上させることができます。コンシューマサービスインスタンスがトランザクション操作の一部としてメッセージを読み込んで処理し、その後このコンシューマサービスインスタンスが失敗した場合、このパターンでは、メッセージがキューに戻され、そのキューの別のインスタンスによってピックアップされて処理されます。消費者サービス。あなたは、クライアント、私は希望プロキシの呼び出しを変更することはできません考えると

1

。 AzureでAPI管理サービスを使用してAPIを再作成し、API管理サービスプロキシを指すようにWeb URLを変更します。

Aravindは、あなたがキューにそれらのメッセージを保存したり、BLOBストレージとメッセージによってトリガーされた機能のアプリを持つことができますAPI Management Service policies.

+0

API管理サービスを参照し、アプリケーションを機能させていただき、ありがとうございます。これまでのところ、負荷はあまりありません。 API管理サービスは物事を複雑にし、コストを追加するようです。したがって、これらのコールのプロキシとして動作するwebroleが十分に見える場合、キュー中心のワークパターン。 – Artyom

+1

WebRoleを使用しないことをお勧めします。それはASM /クラシック・アズールなので、伝説を書いています。 AzureはARM/Resource Managerに移行しています。クラウドサービスはAppServiceになります。また、開発者SKUを実行できる場合は、App Serviceのコストよりも少なく実行できます。 WebロールをAPI管理サービスに置き換え、同じキュー中心ワークパターンを使用します。 Web管理者は、Webロールのコードを記述するよりも、API管理のポリシーを記述する方が簡単です。 (あなたはそれを学ぶのに数時間を費やさなければならない)。いずれにせよ、私はそれがうまくいくことを願っています。 –

関連する問題