クラウドに入れたいアプリケーションを作成しています。このアプリケーションには、主な機能が 1 つあります。
他のユーザーに代わってソケット CLIENT セッションをホストします (iPhone の Beejive IM を考えてみてください。クライアントがこれらの IM ネットワークで状態を維持するための IM セッションをホストし、IM ネットワーク接続を切断することなく、クライアントが自由に接続/切断できるようにします)。 )。
さて、私が現在計画している方法は、1 つの「ワーカー インスタンス」が処理できるクライアント セッションの数が限られている可能性が高いということです (議論のために 50,000 としましょう)。これらのセッションは、非常に長期間存続するワーカー タスクになります。
私が理解しようとしている問題は、特定のクライアント セッションに対してタスクを実行する必要がある場合があることです (例: クライアント セッションを切断する必要がある場合)。Azure では、特定のクライアント セッションをホストしているインスタンスのみがデキューできる小さなタスクをキューに入れることができますか?
現在、GoGrid をプロバイダーとして検討しており、Apache の Active Messaging Queue ソフトウェアを使用してこの問題を解決しています。私の Web アプリは、特定のインスタンス ID に割り当てられた「切断」タスクをキューに入れます。したがって、各クライアント セッションは特定のインスタンス ID に割り当てられます。次に、インスタンスは、割り当てられている「切断」タスクのみをデキューします。
Azure で同様のことを行うことが実現可能かどうか、また一般的にどのように行うかを考えています。スケールするために多くの異なる VM をセットアップする必要がなく、代わりに 1 つのパッケージをデプロイするだけというアイデアが気に入っています。また、Apache ActiveMQ や MSMQ などのサード パーティ製品を統合する代わりに、Azure のキューを利用するとよいでしょう。