Prioridad De Mensajes JMS

De Dos Ideas.
Saltar a: navegación, buscar

Como sabemos una cola de mensajes como su nombre lo indica va encolando mensajes que le van llegando, si agregamos en el envió de un mensaje una Prioridad, el mensaje con mayor prioridad se va a agregar primero en la cola de mensajes, o sea que va a ser el primero en salir.

JMS propone 10 niveles de Prioridad, de 0 a 9, la prioridad por defecto es 4, la mas alta es 9 y la mas baja es 0. O sea que si enviamos mensajes con diferentes números de prioridades estos se van a ir ordenando de mayor a menor

Cómo asignarle una Prioridad a un mensaje

Siguiendo con el ejemplo de Leo (el de las tostadas) ahora vamos a pedir tostadas pero con prioridad:

 import javax.jms.*;

 public class Dib {

     public final static String JNDI_FACTORY="weblogic.jndi.WLInitialContextFactory";
     public final static String PROVIDER_URL="t3://localhost";
     public final static String JMS_FACTORY="HeladeraCF";
     public final static String QUEUE="HeladeraQueue";

     public void pedirTostadas() {
         //Obtenemos el !InitialContext
         Hashtable env = new Hashtable();
	 env.put(Context.INITIAL_CONTEXT_FACTORY, JNDI_FACTORY);
         env.put(Context.PROVIDER_URL, PROVIDER_URL);
         InitialContext ctx = new InitialContext(env);

          //Buscamos el factory y la conexiona la col
          QueueConnectionFactory qconFactory = (QueueConnectionFactory) ctx.lookup(JMS_FACTORY)
          QueueConnection qcon = qconFactory.createQueueConnection();

           //Buscamos la cola
           QueueSession qsession = qcon.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
           Queue queue = (Queue) ctx.lookup(QUEUE);

           //Creamos el mensaje
           TextMessage msg = qsession.createTextMessage();
           msg.setText("Gaz, quiero 4 tostadas");

           QueueSender qsender = qsession.createSender(queue);

           //Asignamos Prioridad
           qsender.setPriority(9);

           //Enviamos el mensaje
           qsender.send(msg);

           //somos prolijos y cerramos todo
           qsender.close();
           qsession.close()
           qcon.close();
     }
}

Con esto hicimos que el mensaje de pedir tostadas que colocado primero en la cola, o por lo menos logramos que se ponga último en los mensajes con prioridad 9.

Ver también