Sobes.tech
Middle

Tell us about your experience with JMS and ActiveMQ. What does the code for reading messages from a queue look like?

sobes.tech AI

Answer from AI

JMS (Java Message Service) is a standard API for working with messages in Java, and ActiveMQ is a popular message broker implementing JMS.

To read messages from a queue using JMS and ActiveMQ, a connection, session, message consumer are typically created, and then messages are received.

Example code for reading messages from a queue:

import javax.jms.*;
import org.apache.activemq.ActiveMQConnectionFactory;

public class JMSConsumer {
    public static void main(String[] args) throws JMSException {
        // Create a connection factory
        ConnectionFactory factory = new ActiveMQConnectionFactory("tcp://localhost:61616");

        // Create a connection
        Connection connection = factory.createConnection();
        connection.start();

        // Create a session without transactions and with auto acknowledgment
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

        // Create a queue
        Destination queue = session.createQueue("exampleQueue");

        // Create a message consumer
        MessageConsumer consumer = session.createConsumer(queue);

        // Receive a message (wait up to 1 second)
        Message message = consumer.receive(1000);

        if (message instanceof TextMessage) {
            TextMessage textMessage = (TextMessage) message;
            System.out.println("Received message: " + textMessage.getText());
        } else {
            System.out.println("Received a non-text message");
        }

        // Close resources
        consumer.close();
        session.close();
        connection.close();
    }
}

This code connects to ActiveMQ, listens to the "exampleQueue" queue, and outputs the text of the received message.