Entradas

Mostrando entradas de mayo, 2014

Productor Java para ActiveMQ

Imagen
La forma más sencilla de conectarse con ActiveMQ y meter mensajes a las colas es casi como lo haríamos con la especificación JMS. Incluso es posible hacerlo, solo que perderíamos las características adicionales (mejoras) que ActiveMQ nos brinda. El siguiente código hace posible dicha conexión.
El proyecto lo he realizado en NetBeans, así que también incluyo el proyecto para su descarga.

Notar las librerías que se incorporan al proyecto.



 El código se puede mejorar, específicamente el tema de las conexiones, sería mejor incluirlo en un bloque finally, de tal suerte que se cierre la conexión sin importar que no se ejecute correctamente el bloque try.

Las palabras en negritas deben ser sustituidas por los parámetros de su ambiente.

He aquí:

try {
        ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("tcp://127.0.0.1:61613");

        javax.jms.Connection connection = cf.createConnection("admin","password");
        connection.start();
        Sess…

Apache Apollo

Imagen
Entrando en el tema de los brokers provistos por Apache, me hallo con Apollo. En su sitio hablan de la "próxima generación de mensajería", es decir, Apollo es una bifurcación con "mejoras" sobre ActiveMQ. De las principales diferencias es su manejo de hilos, ya que utiliza hawtdispatch.
La distribución de directorios, configuraciones, y directivas, son por completo distintas, inclusive la arquitectura del software varia entre ambos. Eso me lleva a preguntarme si tienen las mismas opciones en cuanto a redes o cluster de brokers, y la flexibilidad que conozco de ActiveMQ.
Estaré armando un vector de pruebas para confirmar qué producto es mejor en mi ambiente. Antes y después del tuning que puede aplicarse a ActiveMQ.
Ambos productos utilizan protocolos comunes, como STOMP o OpenWire (tcp), así que el código no debería variar a menos que se utilicen las características propias de ActiveMQ (transport options, client options, etc).
Una comparación rápida entre consola…

Instalación de ActiveMQ

Imagen
ActiveMQ nace como un proyecto necesario para Apache Geronimo. La filosofía de éste, es ser demasiado simple, tanto, que los desarrolladores no inviertan demasiado tiempo, ni personal, administrando la capa de brokers.
Como bien saben, el paradigma de la programación asíncrona es perfecta para hacer confiable el paso de mensajes entre sistemas, además de desacoplarlos para fácilmente agregar nuevos componentes a la arquitectura sin que ésta se modifique drásticamente.
La instalación es muy sencilla, tan solo hay que bajarse el empaquetado para su sistema operativo de la siguiente liga.
Download 5.9.1

Una vez descargado, procedemos a desempaquetarlo.

$ tar -zvxf apache-activemq-5.9.1-bin.tar.gz

Con estos pasos tenemos ya el esqueleto a utilizar. Esto, por sí solo, no nos sirve. Tenemos que crear instancias para poder utilizar las colas o tópicos.
Instancia
Una instancia es una copia de los archivos base, pero con la posibilidad de personalizarse para formar parte de una arquitectura más …

Búsqueda de cadenas en archivos de texto.

Cuando los incidentes surgen en las aplicaciones que generan demasiados logs, es necesario el filtrado por horas y eventos. Hay muchas formas de llegar a un mismo cometido, básicamente, depende de la habilidad de cada persona, además de su experiencia, y el conocimiento de los mensajes de alertas.
En lo personal, siempre he buscado hacer las busquedas de más de una forma, porque para cada caso, y conforme se avance en las necesidades, una resultará más flexible que la otra.
La primer fase de un filtrado es intuir, buscar los mensajes comunes y palabras que acompañan los problemas de forma genérica, por ejemplo, si se trata de un servidor de aplicaciones sería prudente buscar palabras como : SEVERE, Exception, ERROR, Timeout, 'Could not'. Si se tratase de un web server, la búsqueda es más simple, ya que podemos filtrar por los estatados de http.
A continuación, expongo dos comandos que sirven para la búsqueda de un patrón dentro de cada archivo que coincida con el criterio dad…