Consumir jms - nao encontra mensagem que existe na fila

1 resposta
pugnator

esta ocorrendo um erro aleatório, onde a mensagem nao é encontrada na fila, porém existe. Eu envio 5 mensagens, e as 5 ficam lá na fila( verifico no jboss-console), então começo e executar um a um o codigo para consumir, na terceira vez por exemplo o consumer.receive() retorna null, mas vou verificar na fila e existem mensagens lá.
Estou usando jboss5.1

// codigo que envia
MensagemJMS jms = new MensagemJMS();
ChaveValor[] cv = new ChaveValor[1];
cv[0] = new ChaveValor();
cv[0].setChave("cpf");
cv[0].setValor("1111");
jms.enviarMensagem(cliente, Cliente.class, "queue/minhaqueue", cv);

//codigo da chamada
cpf = "1111";
ObjectMessage om = jms.consumirMensagem("queue/minhaqueue", "cpf='" + cpf + "'");

//codigo que consome
public ObjectMessage consumirMensagem(String lookup, String messageSelector) {
		Session session = null;
		Connection connection = null;
		ObjectMessage om = null;
		try {
			ConnectionFactory factory = (QueueConnectionFactory) getInitialContext().lookup("/ConnectionFactory");
			connection = factory.createConnection();
			session = connection.createSession(false, QueueSession.AUTO_ACKNOWLEDGE);
			Destination destination = (Destination) getInitialContext().lookup(lookup);

			MessageConsumer consumer = session.createConsumer(destination, messageSelector);
			connection.start();
			Message message = consumer.receive(6000);//mudei aqui  mas nada aconteceu
			om = (ObjectMessage) message;
			System.out.println("teste jms");
		} catch (Exception e) {

1 Resposta

pugnator

Pelo que entendi, por algum motivo esta demorando para consultar a fila e ultrapassando o timeout de 6s.
Alguém sabe como teria como otimizar esse acesso na queue do jboss ?

Vou deixar como abaixo por eqto.

Message message = null;
			message = consumer.receiveNoWait();
			if(message == null)
				message = consumer.receive(15000);
Criado 9 de novembro de 2012
Ultima resposta 9 de nov. de 2012
Respostas 1
Participantes 1