1
resposta

Prioridade de Mensagem não funciona

Meu consumidor não está seguindo a ordem de prioridade que o produtor está enviando, não entendo o porque

Já foi adicionado a linha no activemq.xml

<policyEntry queue=">" prioritizedMessages="true"/>

Já foi reiniciado o activemq para conhecer as novas configurações.

Classe Consumidor:

package br.com.caelum.log;

import java.util.Scanner;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Destination;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.naming.InitialContext;

public class TesteConsumidorFila {

    public static void main(String[] args) throws Exception {

             InitialContext context = new InitialContext(); 
             ConnectionFactory factory = (ConnectionFactory) context.lookup("ConnectionFactory");

             Connection connection = factory.createConnection();
            connection.start();
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

            Destination fila = (Destination) context.lookup("LOG");
            MessageConsumer consumer = session.createConsumer(fila);

            consumer.setMessageListener(new MessageListener() {

                @Override
                public void onMessage(Message message) {

                    TextMessage textMessage  = (TextMessage)message;
                    try{

                        System.out.println(textMessage.getText());
                    } catch(JMSException e){
                        e.printStackTrace();
                    }


                }

            });            

            new Scanner(System.in).nextLine();

            session.close();
            connection.close();
            context.close();

    }

}

Classe Produtor

package br.com.caelum.log;


import java.util.Scanner;

import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.Message;
import javax.jms.MessageProducer;
import javax.jms.Session;
import javax.naming.InitialContext;

public class TesteProdutorFila {

    public static void main(String[] args) throws Exception {

             InitialContext context = new InitialContext(); 
             ConnectionFactory factory = (ConnectionFactory) context.lookup("ConnectionFactory");

             Connection connection = factory.createConnection();
            connection.start();
            Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

            Destination fila = (Destination) context.lookup("LOG");

            MessageProducer producer = session.createProducer(fila);

            Message message = session.createTextMessage("DEBUG");
            producer.send(message,DeliveryMode.NON_PERSISTENT,0,80000);

            session.close();
            connection.close();
            context.close();

    }

}

Não sei como resolver, ou o que estou fazendo de errado!

1 resposta
O post foi fechado por inatividade. Para continuar o assunto, recomendamos criar um novo tópico. Bons Estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software