ゆりぃ、
RabbitMQ、Haxe、および as3: http://geekrelief.wordpress.com/2008/12/15/hxamqp-amqp-with-haxe/
RabbitMQ、Ruby、および ACL: http://pastie.org/pastes/368315
バックエンド グループを管理するために、 RabbitMQで Nanite を使用することも検討してください。
あなたはあなたが必要だと言います:
* broadcast messages by any client (1:N, N:N)
* (potentially) direct messages (1:1)
どちらも RabbitMQ を使用して簡単に実行できます。RabbitMQ は、1:N pubsub と 1:1 メッセージングの両方のケースを「直接」交換でサポートします。
直接交換のパターンは次のとおりです。
パブリッシャー (グループ メンバー) は、「yurii」などの「ルーティング キー」を使用してブローカーにメッセージを送信します。RabbitMQ は、このキーをルーティング テーブル (別名「交換」) のサブスクリプション バインディングと照合します。各バインディングはキューによってサブスクリプションを表し、特定のルーティング キーを持つメッセージへの関心を表します。ルーティング キーとバインディング キーが一致すると、メッセージはキューにルーティングされ、その後クライアント (グループ メンバー) によって消費されます。これは 1:N および 1:1 の場合に機能します。N:N の建物を 1:N で。
ルーティング モデルの概要: http://blogs.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 インターフェースもありますが、まだ HTTP フロントエンドと ACL コードを組み合わせていません。しかし、それはオユを引き留めるべきではありません。このトピックが最近話題になっているrabbitmq-discussリストに来てください.
以下も必要です。
* create groups (by some backend process)
* to be able to kick specific clients by backend process (or server plugin)
Nanite や Workling などのツールがこれをどのように行っているかを調べることをお勧めします。通常、グループの作成はメッセージング システムの一部ではありません。代わりに、RabbitMQ では、サブスクリプションを使用してルーティング パターンを作成します。消費キューを交換にバインドするために使用したキーを使用して、特定のクライアントにメッセージを送信することで、特定のクライアントをキックできます。
お役に立てれば!
アレクシス