Buscar en el Blog

Mostrando entradas con la etiqueta JMS. Mostrar todas las entradas
Mostrando entradas con la etiqueta JMS. Mostrar todas las entradas

martes, 23 de julio de 2013

Cómo crear un explorador de colas (QueueBrowser) para JMS

En ésta publicación, comparto el código Java para crear un explorador de colas JMS:
package com.blogspot.ingmmurillo.jms;

import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.command.ActiveMQTextMessage;
import org.junit.Test;
import javax.jms.*;
import java.util.Enumeration;

public class JMSQueueBrowser {

    @Test
    public void test() throws JMSException {
        System.out.println("Explorador de Colas JMS (QueueBrowser)");
        String url = "tcp://localhost:61717";                
        String queueName = "test";

        ConnectionFactory connectionFactory =
                new ActiveMQConnectionFactory(url);
        Connection connection = connectionFactory.createConnection();

        connection.start();

        System.out.println(connection.getMetaData().getJMSProviderName() + " JMS " +
                connection.getMetaData().getJMSVersion());

        QueueSession session = (QueueSession) connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        Queue queue = session.createQueue(queueName);
        QueueBrowser browser = session.createBrowser(queue);

        Enumeration e = browser.getEnumeration();

        if (e != null) {

            int i = 0;
            while (e.hasMoreElements()) {
                Object msg = e.nextElement();
                ActiveMQTextMessage m = (ActiveMQTextMessage) msg;
                System.out.println(m.getText());
                i++;

            }
            System.out.println("Nro. Mensajes: " + (i));
        }

        browser.close();
        session.close();
        connection.close();
    }

}

martes, 29 de enero de 2013

Cómo purgar una cola de ActiveMQ usando el API de JMX

En ésta publicación explico el procedimiento para purgar (purge) una cola de Apache ActiveMQ usando el API de JMX.

1. Tener habilitado el soporte para JMX en  ActiveMQ, en la siguiente publicación se explica cómo hacerlo

2. Incluir las siguientes líneas de código Java que usan el API de JMX:

public void purgeQueue() throws NamingException, IOException, MalformedObjectNameException, InstanceNotFoundException, ReflectionException, MBeanException {
    String activeMQBrokerHost = "localhost"; //Dirección IP o nombre del servidor de ActiveMQ
    String queueToPurge = "test.queue"; //Nombre de la Cola

    JMXServiceURL jmxURL = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://" + activeMQBrokerHost + ":1099/jmxrmi");
    ObjectName queue = new ObjectName("org.apache.activemq:BrokerName=" + activeMQBrokerHost + ",Type=Queue,Destination=" + queueToPurge);
    JMXConnector jmxConnection = JMXConnectorFactory.connect(jmxURL);
    MBeanServerConnection mBeanConnection = jmxConnection.getMBeanServerConnection();
    mBeanConnection.invoke(queue, "purge", null, null);
    jmxConnection.close();
}