2009-02-16 7 views
6

Me siento un poco confundido - durante aproximadamente 24 horas he estado pensando qué tecnología de transmisión grupal usar en mi proyecto.¿Qué tecnología de mensajería grupal usar?

Básicamente, lo que necesito es:

  • crear grupos (por algún proceso de back-end)
  • mensajes de difusión por cualquier cliente (1: N, N: N)
  • (potencialmente) mensajes directos (1: 1)
  • (importante) autenticar/autorizar a los clientes con mi propio backend (por ejemplo, a través de algún tipo de API HTTP)
  • sea capaz de patear clientes específicos por proceso en segundo plano (o plug-in del servidor)

Esto es lo que voy a tener:

  1. relacionados backend proceso (s), ya sea en Rubí o Haxe
  2. Frontend en JS + Haxe (Flash9) - en el navegador, por lo idealmente comunicación a través de 80/443, pero no necesariamente.

Por lo tanto, esta tecnología tendrá que ser fácilmente accesible en Haxe para Flash y preferiblemente Ruby.

He estado pensando en: RabbitMQ (o OpenAMQ), RabbitMQ + STOMP, ejabberd, ejabberd + BOSH, juggernaut (con la necesidad de escribir una Haxe lib para ello).

¿Alguna idea/sugerencia?

Respuesta

1

Si va a hacer el desarrollo de Flash, ¿ha mirado SmartfoxServer? Tiene todo lo que desea y tiene bibliotecas nativas de clientes Flash. Utilicé un proyecto para administrar 10 de miles de usuarios conectados.

http://www.smartfoxserver.com/

+0

pero no tiene bibliotecas de Ruby, ¿verdad? –

+0

aunque parece realmente interesante –

+0

Puede escribir scripts de back-end en Actionscript, Python o Java, pero no parece que tenga enlaces JRuby. –

1

Bien comunicación de grupo es una bestia ligeramente diferente que la simple mensajería/colas.

mayoría de los sistemas de comunicación de grupo son comerciales, pero hay dos (que yo sepa) de código abierto/libre se puede echar un vistazo a:

Tanto de estos puede ser difícil encontrar enlaces Ruby sin embargo. Spread, y probablemente OpenAIS, ve a los clientes como de confianza, por lo que un cliente basado en navegador no tiene sentido. Necesitará que los frontales de su navegador hablen con un cliente (s) de grupo en el back-end.

+0

Sí, sabía de Spread, desarrollé una unión de Objective Caml hace años ... y parece que Spread 4.0 se lanzó hace aproximadamente 3 años. De todos modos, gracias :) –

3

Yurii,

RabbitMQ, Haxe y AS3: http://geekrelief.wordpress.com/2008/12/15/hxamqp-amqp-with-haxe/

RabbitMQ, Ruby y ACL: http://pastie.org/pastes/368315

También puede ser que desee buscar en el uso nanite con RabbitMQ para gestionar grupos backend: http://brainspl.at/articles/2008/10/11/merbcamp-keynote-and-introducing-nanite

Usted dice que necesita:

* broadcast messages by any client (1:N, N:N) 
* (potentially) direct messages (1:1) 

Puede hacer ambas cosas fácilmente con RabbitMQ. RabbitMQ admite ambos casos, 1: N pubsub y mensajes 1: 1, con intercambios "directos".

El patrón de intercambio directo es como sigue:

Cualquier editor (miembro del grupo) envía un mensaje al corredor con un 'clave de enrutamiento' tal como "yurii". RabbitMQ hace coincidir esta clave con los enlaces de suscripción en la tabla de enrutamiento (también conocido como "intercambio") por usted. Cada enlace representa una suscripción por una cola, que expresa interés en los mensajes con una clave de enrutamiento determinada. Cuando las claves de enrutamiento y enlace coinciden, el mensaje se enruta a las colas para su posterior consumo por los clientes (miembros del grupo). Esto funciona para 1: N y 1: 1 casos; con N: N construyendo en 1: N.

Introducción al modelo de enrutamiento: http://blogs.digitar.com/jjww/2009/01/rabbits-and-warrens/

introducción general: http://google-ukdev.blogspot.com/2008/09/rabbitmq-tech-talk-at-google-london.html

También requieren:

* (important) authenticate/authorize clients with my own backend (say, through some kind of HTTP API) 

Por favor ver el código ACL para esto (enlace anterior). También hay una interfaz HTTP para RabbitMQ, pero aún no hemos combinado la interfaz HTTP con el código ACL. Sin embargo, eso no debería retener a los oyu. Por favor, ve a la lista de rabbitmq-discuss donde este tema ha sido mencionado recientemente.

También requieren:

* create groups (by some backend process) 
* to be able to kick specific clients by backend process (or server plugin) 

Sugiero mirar cómo herramientas como nanite y Workling hacen esto. La creación de grupos generalmente no es parte de un sistema de mensajería, en cambio, en RabbitMQ, usted crea patrones de enrutamiento utilizando suscripciones. Puede expulsar clientes específicos enviándoles mensajes con la clave que hayan utilizado para vincular su cola de consumo al intercambio.

Espero que esto ayude!

alexis

0

Otros intermediarios de mensajes de código abierto que soportan el protocolo pisa fuerte son OpenMQ, que se incluye en GlassFish V3 y GlassFish 2.1.1, pero también funciona de forma independiente, y pronto el intermediario de mensajes de JBoss, HornetQ V2.1. OpenMQ admite colas temporales que son útiles para una comunicación de estilo RPC, pero ActiveMQ también ofrece algunas características interesantes en el adaptador Stomp.

Cuestiones relacionadas