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