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();
}
}
Bienvenidos a mí blog, en éste espacio comparto mis experiencias y conocimientos relacionados con las tecnologías de integración de sistemas, lenguajes de programación, desarrollo de software, bases de datos y Agilismo. Sí tienes comentarios, inquietudes o sugerencias, no dudes en escribirlos...
Buscar en el Blog
Mostrando entradas con la etiqueta Apache ActiveMQ. Mostrar todas las entradas
Mostrando entradas con la etiqueta Apache ActiveMQ. 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:
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:
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();
}
martes, 4 de septiembre de 2012
Cómo instalar Apache ActiveMQ como servicio en Windows
En ésta publicación explico cómo instalar Apache ActiveMQ como servicio de un sistema operativo Windows.
1. Descargar la versión más reciente del siguiente link: http://activemq.apache.org/download.html
2. Descomprimir el archivo, por ejemplo: C:\apache-activemq-5.6.0
3. Ir al directorio C:\apache-activemq-5.6.0\bin\win32 y ejecutar el archivo InstallService.bat
NOTA: sí existen problemas ejecutando el archivo para versiones de Windows Vista o superior, dar clic derecho sobre el archivo wrapper.exe, Propiedades > Compatibilidad y seleccionar: Ejecutar este programa en modo de compatibilidad para Windows XP SP3 y seleccionar: Ejecutar este programa como administrador.
1. Descargar la versión más reciente del siguiente link: http://activemq.apache.org/download.html
2. Descomprimir el archivo, por ejemplo: C:\apache-activemq-5.6.0
3. Ir al directorio C:\apache-activemq-5.6.0\bin\win32 y ejecutar el archivo InstallService.bat
NOTA: sí existen problemas ejecutando el archivo para versiones de Windows Vista o superior, dar clic derecho sobre el archivo wrapper.exe, Propiedades > Compatibilidad y seleccionar: Ejecutar este programa en modo de compatibilidad para Windows XP SP3 y seleccionar: Ejecutar este programa como administrador.
miércoles, 7 de marzo de 2012
Cómo activar JMX en ActiveMQ
En ésta publicación explico el procedimiento para activar JMX (Java Management Extensions) en el bróker de mensajería Apache ActiveMQ v5.5.0 y poder monitoraearlo usando la herramienta jconsole
1. Ir al directorio de instalación de Apache ActiveMQ. En mi caso: c:\apache-activemq-5.5.0
2. Abrir el directorio conf y editar el archivo: activemq.xml
3. Ubicar el inicio de la etiqueta <broker... y agregar useJmx="true"
4. Ir a la etiqueta <managementContext... colocar lo siguiente:
5. Abrir una consola de comandos (cmd) y ejecutar jconsole
6. Colocar en Remote Process lo siguiente:
1. Ir al directorio de instalación de Apache ActiveMQ. En mi caso: c:\apache-activemq-5.5.0
2. Abrir el directorio conf y editar el archivo: activemq.xml
3. Ubicar el inicio de la etiqueta <broker... y agregar useJmx="true"
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.base}/data" destroyApplicationContextOnStop="true" useJmx="true">
4. Ir a la etiqueta <managementContext... colocar lo siguiente:
<managementContext> <managementContext createConnector="true"/> </managementContext>
5. Abrir una consola de comandos (cmd) y ejecutar jconsole
6. Colocar en Remote Process lo siguiente:
service:jmx:rmi:///jndi/rmi://localhost:1099/jmxrmi
miércoles, 15 de junio de 2011
Cómo integrar Apache ActiveMQ y Apache Tomcat
En ésta publicación explico el procedimiento para poder conectarnos a un broker de mensajería ActiveMQ desde el contenedor de servlets Tomcat.
Para ésta configuración usaré las siguientes versiones de ActiveMQ y Tomcat:
Suponiendo que TOMCAT_HOME=c:/Tomcat5.5 y ACTIVEMQ_HOME:c:/apache-activemq-5.5.0
Primero, se tiene que copiar las siguientes librerías al directorio TOMCAT_HOME/common/lib
En el archivo server.xml que se encuentra en TOMCAT_HOME/conf incluir lo siguiente dentro del elemento GlobalNamingResources:
En el archivo context.xml que se encuentra en TOMCAT_HOME/conf incluir lo siguiente:
En el descriptor de despliegue web.xml que se encuentra en TOMCAT_HOME/conf incluir lo siguiente:
Cabe mencionar que con ésta configuración, la conexión a ActiveMQ será visible para cualquier aplicación web desplegada sobre Tomcat.
A continuación explico cómo sería el código Java para conectarnos al bróker de mensajería y envíar un mensaje de texto.
Para ésta configuración usaré las siguientes versiones de ActiveMQ y Tomcat:
Librerías necesarias
Suponiendo que TOMCAT_HOME=c:/Tomcat5.5 y ACTIVEMQ_HOME:c:/apache-activemq-5.5.0
Primero, se tiene que copiar las siguientes librerías al directorio TOMCAT_HOME/common/lib
- activemq-all-5.5.0.jar (ACTIVEMQ_HOME)
- slf4j-log4j12-1.5.11.jar (ACTIVEMQ_HOME/lib/optional)
- log4j-1.2.14.jar (ACTIVEMQ_HOME/lib/optional)
Configuración del archivo server.xml
En el archivo server.xml que se encuentra en TOMCAT_HOME/conf incluir lo siguiente dentro del elemento GlobalNamingResources:
<GlobalNamingResources>
<Resource name="jms/ConnectionFactory"
auth="Container"
type="org.apache.activemq.ActiveMQConnectionFactory"
description="JMS Connection Factory"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
brokerURL="tcp://127.0.0.1:61616"
brokerName="activeMQBroker"/>
<Resource auth="Container"
name="jms/MiCola"
type="org.apache.activemq.command.ActiveMQQueue"
description="Cola de mensajes"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
physicalName="com.blogspot.ingmmurillo.queue"/>
</GlobalNamingResources>
Nótese que en brokerURL se especifica el servidor en dónde está corriendo Apache ActiveMQ, en este caso se encuentra en la misma máquina. Además, es necesario especificar todas las colas y tópicos a los cuáles se va a conectar, en este caso voy a conectarme a la cola com.blogspot.ingmmurillo.queueConfiguración del archivo context.xml
En el archivo context.xml que se encuentra en TOMCAT_HOME/conf incluir lo siguiente:
<Context>
<ResourceLink global="jms/ConnectionFactory" name="jms/ConnectionFactory" type="javax.jms.ConnectionFactory"/>
<ResourceLink global="jms/MiCola" name="jms/MiCola" type="javax.jms.Queue"/>
</Context>
Configuración del archivo web.xml
En el descriptor de despliegue web.xml que se encuentra en TOMCAT_HOME/conf incluir lo siguiente:
<resource-ref>
<description>JMS Connection</description>
<res-ref-name>jms/ConnectionFactory</res-ref-name>
<res-type>javax.jms.ConnectionFactory</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
<resource-ref>
<res-ref-name>jms/MiCola</res-ref-name>
<res-type>javax.jms.Queue</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
Cabe mencionar que con ésta configuración, la conexión a ActiveMQ será visible para cualquier aplicación web desplegada sobre Tomcat.
Código Java para conexión a ActiveMQ y envió de un mensaje
A continuación explico cómo sería el código Java para conectarnos al bróker de mensajería y envíar un mensaje de texto.
//...
Context initContext = new InitialContext();
Context jndiContext = (Context) initContext.lookup("java:comp/env");
ActiveMQConnectionFactory qFactory = (ActiveMQConnectionFactory)jndiContext.lookup("jms/ConnectionFactory");
QueueConnection qConnect = qFactory.createQueueConnection();
qConnect.start();
QueueSession qSession = qConnect.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
Queue requestQ = (Queue) jndiContext.lookup("jms/MiCola");
QueueSender qSender = qSession.createSender(requestQ);
ObjectMessage msg = qSession.createObjectMessage(new String("Hola, ActiveMQ"));
qSender.send(msg);
qConnect.stop();
Suscribirse a:
Entradas (Atom)
