Diferencia entre revisiones de «JMSCorrelationID»

De Dos Ideas.
Saltar a: navegación, buscar
(Página nueva: 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, l...)
 
Línea 9: Línea 9:
 
El Mensaje cuenta con la posibilidad de setearle diferentes cosas asociadas a JMS:
 
El Mensaje cuenta con la posibilidad de setearle diferentes cosas asociadas a JMS:
  
 +
<code java>
 
  setJMSCorrelationID(String correlationID)
 
  setJMSCorrelationID(String correlationID)
 
  setJMSExpiration(long expiration)
 
  setJMSExpiration(long expiration)
Línea 14: Línea 15:
 
  setJMSPriority(int priority)
 
  setJMSPriority(int priority)
 
  etc....
 
  etc....
 +
</code>
  
 
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:
 
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:
<pre>
+
<code java>
 
     // Creamos el mensaje
 
     // Creamos el mensaje
 
     TextMessage msg = qsession.createTextMessage();
 
     TextMessage msg = qsession.createTextMessage();
Línea 25: Línea 27:
 
     QueueSender qsender = qsession.createSender(queue);
 
     QueueSender qsender = qsession.createSender(queue);
 
     qsender.send(msg);
 
     qsender.send(msg);
</pre>
+
</code>
  
 
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>
 
     String selector = "JMSCorrelationID = '"+id+"'";
 
     String selector = "JMSCorrelationID = '"+id+"'";
 
     QueueReceiver qreceiver = qsession.createReceiver(queue, selector);
 
     QueueReceiver qreceiver = qsession.createReceiver(queue, selector);
 
     qcon.start();
 
     qcon.start();
 
     TextMessage msg = (TextMessage) qreceiver.receive();
 
     TextMessage msg = (TextMessage) qreceiver.receive();
 +
</code>
  
 
Las reglas para hacer el selector pueden ser encontradas en la API de Message
 
Las reglas para hacer el selector pueden ser encontradas en la API de Message

Revisión del 19:06 17 ago 2008

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

  • [JMS]