I'm having an issue with consuming messages from a queue.  When I go to
consume it (consumeMessageFromQueue()), there are no messages found.  But if
I read the messages (readMessageFromQueue()), I see the message in the
queue.  What is going on here?

Test.java:
    @Test
    public void receiveMessage () {
        ActiveMQModule module = new ActiveMQModule(URL, QUEUE);
        String messageText = module.consumeMessageFromQueue();
        module.closeConnections();
        assertEquals(MESSAGE, messageText);
    }


ActiveMQModule.java:

package backup;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQQueue;

import javax.jms.*;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;

public class ActiveMQModule {

    private static ActiveMQConnectionFactory connectionFactory;
    private Connection connection;
    private Session session;
    private Destination destination;
    private static final int TIMEOUT_MILLISECONDS = 5000;

    public ActiveMQModule(String url, String queueName) {
        try {
            connectionFactory = new ActiveMQConnectionFactory(url);
            connection = connectionFactory.createConnection();
            connection.start();
            session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
            destination = session.createQueue(queueName);
        } catch (Exception e) {
            handleException(e);
        }
    }


    public String consumeMessageFromQueue() {
        String messageText = null;
        try {
            MessageConsumer consumer = session.createConsumer(destination);
            TextMessage message =
(TextMessage)consumer.receive(TIMEOUT_MILLISECONDS);
            messageText = message.getText();
            consumer.close();
        } catch (Exception e) {
            handleException(e);
        }
        return messageText;
    }

    public String readMessageFromQueue() {
        String messageText = null;
        try {
            QueueBrowser browser =
session.createBrowser((Queue)destination);
            TextMessage message =
(TextMessage)browser.getEnumeration().nextElement();
            messageText = message.getText();
            browser.close();
        } catch (Exception e) {
            handleException(e);
        }
        return messageText;
    }

    private void handleException(Exception e) {
        System.out.println("Caught: " + e);
        e.printStackTrace();
    }
}






--
View this message in context: 
http://activemq.2283324.n4.nabble.com/Can-t-consume-messages-from-queue-tp4676065.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to