Юрий
RabbitMQ, Haxe и as3: http://geekrelief.wordpress.com/2008/12/15/hxamqp-amqp-with-haxe/
RabbitMQ, Ruby и ACL: http://pastie.org/pastes/368315
Возможно, вы захотите использовать Nanite с RabbitMQ для управления внутренними группами: 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, с «прямыми» обменами.
Схема прямого обмена выглядит следующим образом:
Любой издатель (член группы) отправляет брокеру сообщение с «ключом маршрутизации», таким как «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 для этого (ссылка выше). Существует также HTTP-интерфейс для RabbitMQ, но мы еще не объединили внешний интерфейс HTTP с кодом ACL. Это не должно сдерживать тебя. Пожалуйста, зайдите в список rabbitmq-обсуждения, где недавно обсуждалась эта тема.
Вам также требуется:
* create groups (by some backend process)
* to be able to kick specific clients by backend process (or server plugin)
Я предлагаю посмотреть, как это делают такие инструменты, как Nanite и Workling. Создание группы обычно не является частью системы обмена сообщениями, вместо этого в RabbitMQ вы создаете шаблоны маршрутизации с использованием подписок. Вы можете пнуть определенных клиентов, отправляя им сообщения с помощью любого ключа, который они использовали для привязки своей очереди потребления к обмену.
Надеюсь, это поможет!
Alexis