どのグループ メッセージング テクノロジを使用するべきですか?
質問
私は少し混乱しています。約 24 時間、自分のプロジェクトでどのグループ ブロードキャスト テクノロジーを使用するかを考えてきました。
基本的に、私が必要とするものは次のとおりです。
- グループを作成する (バックエンドプロセスによって)
- 任意のクライアントによるブロードキャスト メッセージ (1:N、N:N)
- (潜在的に) ダイレクト メッセージ (1:1)
- (重要) 独自のバックエンドでクライアントを認証/認可します (たとえば、ある種の HTTP API を介して)
- バックエンドプロセス(またはサーバープラグイン)によって特定のクライアントをキックできるようにする
これが私が持っているものです:
- Ruby または Haxe のバックエンド関連プロセス
- JS+Haxe(Flash9) のフロントエンド — ブラウザ内で 理想的には 80/443 経由で通信しますが、必ずしもそうではありません。
したがって、このテクノロジーは Haxe for Flash、できれば Ruby で簡単にアクセスできる必要があります。
私は次のことを考えてきました。RabbitMQ (または OpenAMQ)、RabbitMQ+STOMP、ejabberd、ejabberd+BOSH、juggernaut (Haxe ライブラリを作成する必要があります)。
何かアイデアや提案はありますか?
解決
あなたがSmartfoxServer見てきましたフラッシュdevのをやってしようとしている場合は?それはあなたが望むすべてを持っており、ネイティブのFlashクライアントライブラリを持っています。私は、接続しているユーザーの数千人の10Sを管理するためのプロジェクトで使用でます。
他のヒント
ユーリ、
のRabbitMQ、haXeのとAS3:ます。http:// geekrelief.wordpress.com/2008/12/15/hxamqp-amqp-with-haxe/する
RabbitMQの、RubyとのACL: http://pastie.org/pastes/368315する
また、バックエンドのグループを管理するためのRabbitMQとNaniteを使用して見たいかもしれません:<のhref =「http://brainspl.at/articles/2008/10/11/merbcamp-keynote-and-introducing-nanite」 rel = "nofollowをさnoreferrer"> http://brainspl.at/articles/2008/10/11/merbcamp-keynote-and-introducing-nanite の
あなたはあなたが必要と言ってます:
* broadcast messages by any client (1:N, N:N)
* (potentially) direct messages (1:1)
あなたは簡単のRabbitMQを使用して、両方を行うことができます。 RabbitMQのは、両方のケースをサポートしています1:Nのpubsubと1:1メッセージング、 '直接' の交流と。
次のように直接交換パターンである
任意の出版社(グループメンバー)は、「ユーリ」と「ルーティングキー」でブローカにメッセージを送信します。 RabbitMQのはあなたのためのルーティングテーブルに、サブスクリプション・バインディング(別名「為替」)と、このキーに一致します。各結合は、特定のルーティングキーとメッセージに関心を示し、キューによってサブスクリプションを表します。ルーティングと結合キーが一致した場合、メッセージは、クライアント(グループのメンバー)によって、その後の消費のためにキューにルーティングされます。これは、1のために働く:Nと1:1例。 N棟1上::NとN
ルーティングモデルの概要:ます。http://ブログ。 digitar.com/jjww/2009/01/rabbits-and-warrens/する
一般イントロ:ます。http: //google-ukdev.blogspot.com/2008/09/rabbitmq-tech-talk-at-google-london.htmlする
また、必要になります。
* (important) authenticate/authorize clients with my own backend (say, through some kind of HTTP API)
この(上記のリンク)のACLコードを参照してください。そこのRabbitMQへのHTTPインターフェースもあるが、我々はまだACLコードでHTTPフロントエンドを組み合わせていません。それはしかしオユを控えるべきではありません。このトピックは最近の話されたのRabbitMQ-議論リストに来てくださいます。
また、必要になります。
* create groups (by some backend process)
* to be able to kick specific clients by backend process (or server plugin)
私はNaniteとWorklingようなツールは、これを行う方法を見てお勧めします。グループの作成ではなく、RabbitMQの中で、サブスクリプションを使用してルーティングパターンを作成し、通常、メッセージングシステムの一部ではありません。あなたは、彼らが為替への消費キューをバインドするために使用している方のキーによってそれらにメッセージを送信することにより、特定のクライアントを蹴ることができます。
この情報がお役に立てば幸い!
アレクシス
良い グループコミュニケーション 単純なメッセージングやキューイングとは少し異なります。
ほとんどのグループ コミュニケーション システムは商用ですが、(私が知っている) オープンソース/無料のシステムが 2 つあります。以下を参照してください。
ただし、どちらも Ruby バインディングを見つけるのは難しいかもしれません。Spread、そしておそらく OpenAIS はクライアントを信頼できるものとして見なすため、ブラウザベースのクライアントは意味がありません。ブラウザのフロントエンドがバックエンドのグループ クライアントと通信できるようにする必要があります。
私たちは、ActiveMQのを使用してきました。当社の人事システムを提供する当社のベンダーが放送され、更新を受信するためのRuby / ActiveMQのを使用しています。
ストンププロトコルをサポートする他のオープンソースのメッセージブローカーは、GlassFishのV3とGlassFish 2.1.1に含まれてもスタンドアロンで動作し、すぐにJBossのメッセージ・ブローカー、HornetQのV2.1さOpenMQ、です。 OpenMQは、RPCスタイルの通信に役立つ一時キューをサポートしていますが、ActiveMQのは、あまりにもストンプアダプタでいくつかの興味深い機能を提供しています。