Diferencia entre revisiones de «JMS»

De Dos Ideas.
Saltar a: navegación, buscar
Línea 1: Línea 1:
[[Category:JMS]]
+
Java Messaging Service es un API de [[Java]] que permite interactuar con colas de mensajes.
Java Messaging Service es un API de [[Java]] que permite interactuar con colas de mensajes.
+
 
 +
== Qué son las colas de mensajes ==
 +
 
 +
Supongamos que existen 2 aplicaciones, Dib y Gaz. Dib sabe comer, y Gaz sabe hacer tostadas.
 +
 
 +
Cuando Dib tiene hambre, necesita realizarle un pedido a Gaz ("haceme 3 tostadas"). Usualmente, cuando Dib se levanta a la mañana le pide a Gaz las tostadas, y espera hasta que estén listas. Y este es el comportamiento que usamos generalmente en nuestras aplicaciones: al invocar a otra aplicacion nuestra, lo hacemos via un EJB, y esperamos una respuesta "en el momento" (sincrónica) de la operación.
 +
 
 +
Ahora bien, hace unas semanas que Gaz consiguió un trabajo, así que no está durante toda la mañana. Y Dib estudia de noche y vuelve tarde, cuando Gaz ya está durmiendo. ¿Cómo comunicar entonces a estas dos aplicaciones, si ambas pueden no estar online en el mismo momento?
 +
 
 +
La solución a esto sería que Dib dejara una "petición" en algún lado (¿un papelito en la heladera?), y Gaz lo leyera cuando tenga tiempo y pueda cocinar las tostadas para Dib.
 +
 
 +
Justamente, esta comunicación asincrónica es el principio de la cola de mensajes.  
  
==Qué son las colas de mensajes==
+
== La cola de mensajes ==
  
Supongamos que existen 2 aplicaciones, Dib y Gaz. Dib sabe comer, y Gaz sabe hacer tostadas.
+
Una cola de mensajes es un lugar común (la heladera) donde algunas aplicaciones publican mensajes, que son consumidos por otras. Existen así 4 componentes principales en un sistema de mensajería:
  
Cuando Dib tiene hambre, necesita realizarle un pedido a Gaz ("haceme 3 tostadas"). Usualmente, cuando Dib se levanta a la mañana le pide a Gaz las tostadas, y espera hasta que estén listas. Y este es el comportamiento que usamos generalmente en nuestras aplicaciones: al invocar a otra aplicacion nuestra, lo hacemos via un EJB, y esperamos una respuesta "en el momento" (sincrónica) de la operación.
+
*publicador, es decir, quien publica un Mensaje en una Cola
 +
*consumidor, quien consume Mensajes de una Cola
 +
*mensaje, que tiene algún formato que tanto publicador como consumidor conocen.  
 +
*cola, que es el lugar donde publicadores y consumidores se conectan y comunican a través de mensajes.
  
Ahora bien, hace unas semanas que Gaz consiguió un trabajo, así que no está durante toda la mañana. Y Dib estudia de noche y vuelve tarde, cuando Gaz ya está durmiendo. ¿Cómo comunicar entonces a estas dos aplicaciones, si ambas pueden no estar online en el mismo momento?
+
Es importante destacar que es un sistema asíncrono: el publicador y el consumidor no necesitan estar disponibles a la vez, ya que la cola actúa de intermediario, guardando y distribuyendo los mensajes a medida que el consumidor pueda atenderlos.
  
La solución a esto sería que Dib dejara una "petición" en algún lado (¿un papelito en la heladera?), y Gaz lo leyera cuando tenga tiempo y pueda cocinar las tostadas para Dib.
+
== El API de JMS ==
  
Justamente, esta comunicación asincrónica es el principio de la cola de mensajes.
+
=== Tipos de destinos ===
  
==La cola de mensajes==
+
En JMS existen dos tipos de destinos: Queue (colas) y Topic.
  
Una cola de mensajes es un lugar común (la heladera) donde algunas aplicaciones publican mensajes, que son consumidos por otras. Existen así 4 componentes principales en un sistema de mensajería:
+
==== Queue ====
  
* publicador, es decir, quien publica un Mensaje en una Cola
+
En las Queue, existen uno o varios publicadores, y un consumidor. Los publicadores van dejando sus mensajes en la cola, y son tomados en orden por el consumidor (y luego se van descartando). Si el consumidor no está disponible, la cola va guardando ("encolando") los mensajes, de manera que el consumidor pueda retomar su procesamiento cuando vuelva a estar online.  
* consumidor, quien consume Mensajes de una Cola
 
* mensaje, que tiene algún formato que tanto publicador como consumidor conocen.
 
* cola, que es el lugar donde publicadores y consumidores se conectan y comunican a través de mensajes.
 
  
Es importante destacar que es un sistema asíncrono: el publicador y el consumidor no necesitan estar disponibles a la vez, ya que la cola actúa de intermediario, guardando y distribuyendo los mensajes a medida que el consumidor pueda atenderlos.
+
==== Topic ====
  
== El API de JMS==
+
Los Topic siguen el modelo "publicador/subscriptor". Uno o varios consumidores se "suscriben" al Topic, y van recibendo los mensajes que se publican. Cuando se desconectan dejan de recibir esos mensajes, y los pierden.
  
===Tipos de destinos===
+
==== Otros tipos de mensaje  ====
  
En JMS existen dos tipos de destinos:  Queue (colas) y Topic.
+
En el ejemplo, utilizamos un objeto !TextMessage para enviar el mensaje, pero existen otros tipos de mensaje muy útiles. Uno en particular es !MapMessage, que parmite al mensaje agregarle varios pares de "clave-valor" para luego recuperarlos. Además, existe otro mensaje de tipo !ObjectMessage que permite enviar un objeto completo (serializable) dentro del mensaje.  
====Queue====
 
  
En las Queue, existen uno o varios publicadores, y un consumidor. Los publicadores van dejando sus mensajes en la cola, y son tomados en orden por el consumidor (y luego se van descartando). Si el consumidor no está disponible, la cola va guardando ("encolando") los mensajes, de manera que el consumidor pueda retomar su procesamiento cuando vuelva a estar online.
+
== Ver también ==
  
====Topic====
+
*[[Ejemplo De JMS]]
Los Topic siguen el modelo "publicador/subscriptor". Uno o varios consumidores se "suscriben" al Topic, y van recibendo los mensajes que se publican. Cuando se desconectan dejan de recibir esos mensajes, y los pierden.
+
*[[JMS Con GlassFish]]
 +
*[[Herramientas JMS]]
 +
*[[Prioridad De Mensajes JMS]]
 +
*[[JMSCorrelationID]]
 +
*[[Mensajeria Con Spring]]
 +
*[[SAF en WebLogic]]
 +
*[http://www.programacion.com/java/articulo/jms/ Tutorial sobre JMS ]
  
==== Otros tipos de mensaje ====
 
  
En el ejemplo, utilizamos un objeto !TextMessage para enviar el mensaje, pero existen otros tipos de mensaje muy útiles. Uno en particular es !MapMessage, que parmite al mensaje agregarle varios pares de "clave-valor" para luego recuperarlos. Además, existe otro mensaje de tipo !ObjectMessage que permite enviar un objeto completo (serializable) dentro del mensaje.
+
'''Texto en negrita'''
  
== Ver también==
+
[[Category:JMS]]
* [[Ejemplo De JMS]]
 
* [[JMS Con GlassFish]]
 
* [[Herramientas JMS]]
 
* [[Prioridad De Mensajes JMS]]
 
* [[JMSCorrelationID]]
 
* [[Mensajeria Con Spring]]
 
* [http://www.programacion.com/java/articulo/jms/ Tutorial sobre JMS ]
 
'''Texto en negrita'''
 

Revisión del 15:44 23 sep 2009

Java Messaging Service es un API de Java que permite interactuar con colas de mensajes.

Qué son las colas de mensajes

Supongamos que existen 2 aplicaciones, Dib y Gaz. Dib sabe comer, y Gaz sabe hacer tostadas.

Cuando Dib tiene hambre, necesita realizarle un pedido a Gaz ("haceme 3 tostadas"). Usualmente, cuando Dib se levanta a la mañana le pide a Gaz las tostadas, y espera hasta que estén listas. Y este es el comportamiento que usamos generalmente en nuestras aplicaciones: al invocar a otra aplicacion nuestra, lo hacemos via un EJB, y esperamos una respuesta "en el momento" (sincrónica) de la operación.

Ahora bien, hace unas semanas que Gaz consiguió un trabajo, así que no está durante toda la mañana. Y Dib estudia de noche y vuelve tarde, cuando Gaz ya está durmiendo. ¿Cómo comunicar entonces a estas dos aplicaciones, si ambas pueden no estar online en el mismo momento?

La solución a esto sería que Dib dejara una "petición" en algún lado (¿un papelito en la heladera?), y Gaz lo leyera cuando tenga tiempo y pueda cocinar las tostadas para Dib.

Justamente, esta comunicación asincrónica es el principio de la cola de mensajes.

La cola de mensajes

Una cola de mensajes es un lugar común (la heladera) donde algunas aplicaciones publican mensajes, que son consumidos por otras. Existen así 4 componentes principales en un sistema de mensajería:

  • publicador, es decir, quien publica un Mensaje en una Cola
  • consumidor, quien consume Mensajes de una Cola
  • mensaje, que tiene algún formato que tanto publicador como consumidor conocen.
  • cola, que es el lugar donde publicadores y consumidores se conectan y comunican a través de mensajes.

Es importante destacar que es un sistema asíncrono: el publicador y el consumidor no necesitan estar disponibles a la vez, ya que la cola actúa de intermediario, guardando y distribuyendo los mensajes a medida que el consumidor pueda atenderlos.

El API de JMS

Tipos de destinos

En JMS existen dos tipos de destinos: Queue (colas) y Topic.

Queue

En las Queue, existen uno o varios publicadores, y un consumidor. Los publicadores van dejando sus mensajes en la cola, y son tomados en orden por el consumidor (y luego se van descartando). Si el consumidor no está disponible, la cola va guardando ("encolando") los mensajes, de manera que el consumidor pueda retomar su procesamiento cuando vuelva a estar online.

Topic

Los Topic siguen el modelo "publicador/subscriptor". Uno o varios consumidores se "suscriben" al Topic, y van recibendo los mensajes que se publican. Cuando se desconectan dejan de recibir esos mensajes, y los pierden.

Otros tipos de mensaje

En el ejemplo, utilizamos un objeto !TextMessage para enviar el mensaje, pero existen otros tipos de mensaje muy útiles. Uno en particular es !MapMessage, que parmite al mensaje agregarle varios pares de "clave-valor" para luego recuperarlos. Además, existe otro mensaje de tipo !ObjectMessage que permite enviar un objeto completo (serializable) dentro del mensaje.

Ver también


Texto en negrita