Diferencia entre revisiones de «JMSCorrelationID»

De Dos Ideas.
Saltar a: navegación, buscar
 
(No se muestran 2 ediciones intermedias de otro usuario)
Línea 1: Línea 1:
 +
[[Category:JMS]]
 
El JMSCorrelationID es un campo en los mensajes [[JMS]] que permite identificar un mensaje.
 
El JMSCorrelationID es un campo en los mensajes [[JMS]] que permite identificar un mensaje.
  
Línea 21: Línea 22:
 
     // Creamos el mensaje
 
     // Creamos el mensaje
 
     TextMessage msg = qsession.createTextMessage();
 
     TextMessage msg = qsession.createTextMessage();
     msg.setText("Gaz, quiero la tostada "+id);
+
     msg.setText("Gaz, quiero la tostada " + id);
 
     msg.setJMSCorrelationID(id);
 
     msg.setJMSCorrelationID(id);
  
Línea 31: Línea 32:
 
A la hora de ir a recuperar nuestro mensaje, lo unico que cambia es la forma de construir el receiver:
 
A la hora de ir a recuperar nuestro mensaje, lo unico que cambia es la forma de construir el receiver:
 
<code java>
 
<code java>
     String selector = "JMSCorrelationID = '"+id+"'";
+
     String selector = "JMSCorrelationID = '" + id + "'";
 
     QueueReceiver qreceiver = qsession.createReceiver(queue, selector);
 
     QueueReceiver qreceiver = qsession.createReceiver(queue, selector);
 
     qcon.start();
 
     qcon.start();
Línea 44: Línea 45:
  
 
==Ver también==
 
==Ver también==
* [JMS]
+
* [[JMS]]

Revisión actual del 18:28 26 ago 2009

El JMSCorrelationID es un campo en los mensajes JMS que permite identificar un mensaje.

Identificando un mensaje de una cola

Hasta ahora, mandabamos un mensaje a una cola, la cual se iba llenando, y al pedirle un mensaje tomaba el primero (como en toda cola).

Ahora necesitamos que un mensaje enviado, vaya identificado de tal forma que se lo pueda localizar.

El Mensaje cuenta con la posibilidad de setearle diferentes cosas asociadas a JMS:

setJMSCorrelationID(String correlationID)
setJMSExpiration(long expiration)
setJMSMessageID(String id)
setJMSPriority(int priority)
etc....

A primera vista parece que para identificar un mensaje lo mejor seria setearle el MessageID, pero este ID aunque se lo seteamos, al hacerle el send() lo cambia y pone un numero raro. Por esto, una forma de identificar a nuestro mensaje, es seteandole el JMSCorrelationID antes de hacerle el send:

   // Creamos el mensaje
   TextMessage msg = qsession.createTextMessage();
   msg.setText("Gaz, quiero la tostada " + id);
   msg.setJMSCorrelationID(id);
   // Enviamos el mensaje
   QueueSender qsender = qsession.createSender(queue);
   qsender.send(msg);

A la hora de ir a recuperar nuestro mensaje, lo unico que cambia es la forma de construir el receiver:

   String selector = "JMSCorrelationID = '" + id + "'";
   QueueReceiver qreceiver = qsession.createReceiver(queue, selector);
   qcon.start();
   TextMessage msg = (TextMessage) qreceiver.receive();

Las reglas para hacer el selector pueden ser encontradas en la API de Message

En el caso de mandar un selector null o vacio, tomara la primera posicion de la cola como si no estuviese dicho selector.

Con los selectores se pueden hacer una gran combinacion de sentencias para utilizar estas colas de diferentes formas.

Ver también