UNIDAD 12: Colas de mensajes
eugeniaperez.es
eugeniaperez.es
12.1 Utilidad de las colas de mensajes
Spring Fw proporciona 2 recursos habituales en aplicaciones empresariales como son las Message Queues y el envío de emails.
Las colas de mensajes permiten la comunicación asíncrona entre programas o sistemas. No solo permiten enviar mensajes, sino instancias de objetos.
eugeniaperez.es
12.1 Utilidad de las colas de mensajes
Se ejemplificará esta aplicación mediante el uso de dos proyectos que funcionan conjuntamente, y que podrían haberse desarrollado en uno solo. No obstante, resulta interesante ver cómo podemos realizar proyectos independientes para luego reutilizarlos a través de Maven.
eugeniaperez.es
12.1 Utilidad de las colas de mensajes
Caso práctico: el correo electrónico
En el ejemplo se dan pautas de configuración para utilizar una cuenta de Outlook válida. En caso de querer utilizar otro sistema, las configuraciones variarían.
No obstante, existen proyectos de servidores de correo falsos (Mock SMTP) que permiten llevar a cabo pruebas sin necesidad de utilizar una cuenta legítima...
eugeniaperez.es
Descarga el código en Bitbucket
Descarga el proyecto spring.email del repositorio de Bitbucket:
Usuario:
Psswd:
URL: https://eugenia_perez@bitbucket.org/eugenia_perez/spring.email.git
eugeniaperez.es
12.1 Utilidad de las colas de mensajes
Caso práctico: el correo electrónico
El proyecto es un proyecto de consola Spring con estructura Maven. Analizando sus ficheros:
<context:property-placeholder location="emailer.properties" />
eugeniaperez.es
12.1 Utilidad de las colas de mensajes
Caso práctico: el correo electrónico
La clase Email es prácticamente un POJO con un método añadido para mandar correos.
Internamente utilizar un helper para trabajar con adjuntos.
El atributo mailSender para enviar los correos le viene inyectado desde el beans.xml.
eugeniaperez.es
12.1 Utilidad de las colas de mensajes
Caso práctico: el correo electrónico
La clase Main carga el contexto de Spring.
Recupera el bean del email y finalmente le establece las propiedades a través del fichero previamente configurado.
Recuerda que el proyecto está pensado para ser probado con una cuenta de Outlook (hotmail) válida.
eugeniaperez.es
12.1 Utilidad de las colas de mensajes
Integración del correo electrónico y las colas de mensajería
Necesitaremos un servidor de colas de mensajes como Apache ActiveMQ.
Descarga: http://activemq.apache.org/activemq-5111-release.html
Se descomprime el zip y se lanza el activemq.bat dentro de /bin
y en función del sistema (win64 o win32)
Abre distintos puertos para varias tecnologías (websockets)
eugeniaperez.es
12.1 Utilidad de las colas de mensajes
Integración del correo electrónico y las colas de mensajería
Para monitorizar la interfaz web: http://localhost:8161/
El acceso por defecto para gestionar el ActiveBroker sería (user) admin y (password) admin.
El panel está actualmente vacío pero será donde podamos ver las colas activas y los mensajes intercambiados.
eugeniaperez.es
12.1 Utilidad de las colas de mensajes
Integración del correo electrónico y las colas de mensajería
El proyecto que vamos a analizar simula un sistema en el que se generan pedidos de un restaurante y se mandan a una cola de mensajes. Los mensajes son leídos y procesados, y por cada pedido se manda un email.
eugeniaperez.es
12.1 Utilidad de las colas de mensajes
Integración del correo electrónico y las colas de mensajería
Por lo tanto consiste en un proyecto Maven que intercambia mensajes entre dos hilos (Threads en Java) :
eugeniaperez.es
Descarga el código en Bitbucket
Descarga el proyecto spring.messagequeue del repositorio de Bitbucket:
Usuario:
Psswd:
URL: https://eugenia_perez@bitbucket.org/eugenia_perez/spring.messagequeue.git
eugeniaperez.es
12.1 Utilidad de las colas de mensajes
Integración del correo electrónico y las colas de mensajería
El proyecto consta de:
eugeniaperez.es
12.1 Utilidad de las colas de mensajes
Integración del correo electrónico y las colas de mensajería
El fichero de beans Spring:
eugeniaperez.es
12.1 Utilidad de las colas de mensajes
Dependencia de otro proyecto Maven
Para incluir otro proyecto Maven en el buildpath se hace referencia al artefacto Maven que declara el otro proyecto SpringEmail, y que estará identificado por sus coordenadas: grupo, artefacto, etc. Es decir, dentro del pom.xml:
<groupId>org.sistema.spring.email</groupId>
<artifactId>springEmail</artifactId>
<version>0.0.1-SNAPSHOT</version>
eugeniaperez.es
12.1 Utilidad de las colas de mensajes
Dependencia de otro proyecto Maven
Al ejecutar el Run As... > Maven install de ese proyecto en Eclipse, estaremos compilando, empaquetando en un JAR, etc, y lo más crucial, incluyéndolo en nuestro repositorio local de Maven: C:\Users\PORTATIL\.m2\repository a través del nombre de paquete: org.sistema.spring.email.
eugeniaperez.es
12.1 Utilidad de las colas de mensajes
Dependencia de otro proyecto Maven
Una vez hecho, este artefacto Maven ya está disponible para ser usado en otros proyectos, añadiendo la dependencia anterior en el pom.xml.
También habrá que incluir la dependencia de ActiveMQ entre otras.
eugeniaperez.es
12.1 Utilidad de las colas de mensajes
Dependencia de otro proyecto Maven
Para ejecutarlo:
Se debe tener configurado el from/to del Emailer. Nota: el from deberá coincidir con el del otro proyecto.
Se enviarán desde/hacia las cuentas que configuremos en el beans del springMessageQueue.
eugeniaperez.es
12.1 Utilidad de las colas de mensajes
Cada vez que se ejecute se enviará un correo a la cuenta configurada por pedido generado.
Además en la interfaz de activeMQ (Queues) veremos cuántos mensajes se envían y cuántos se reciben: