Vous êtes sur la page 1sur 13

ESCUELA UNIVERSITARIA DE INGENIERA FACULTAD DE INGENIERA DE SISTEMAS

Arquitectura de Software

Laboratorio 2 - Implementacin de middleware orientado a mensajes

Prof. Ronnie del Mar Retegui

Este material de apoyo acadmico se hace para uso exclusivo de los alumnos de la Universidad de Lima y en concordancia con lo dispuesto por la legislacin sobre los derechos de autor: Decreto Legislativo 822

2013

INSTALACIN ACTIVE MQ
1.- Es necesario proceder a la instalacin del producto Apache MQ. Lo podemos obtener a partir de la siguiente direccin: http://activemq.apache.org/download.html

2. Obtener la ltima versin disponible.

3. Hacer click en el link de ActiveMQ 5.8.0 Release y en la siguiente pgina hacer el download seleccionando la versin para Windows.

4. Hacer click en alguno de los mirrors disponibles.

5. Guardar el archivo apache-activemq-5.8.0-bin.zip en la carpeta c:\opt (crearla si es que no existe). 6. Desempaquetar el archivo en la carpeta c:\opt y obtendremos la carpeta c:\opt\apache-activemq5.8.0

EJECUCIN ACTIVE MQ 7. Posicionarse en la carpeta c:\opt\apache-activemq-5.8.0\bin y ejecutar el archivo activemq.bat y comenzar a ejecutarse el producto

8. Para verificar la correcta instalacin y ejecucin podemos ingresar a la pantalla de administracin con la siguiente direccin URL: http://localhost:8161/admin Si nos solicitan las credenciales ingresar el usuario admin y la clave admin

CREACIN DE COLAS CON EL ACTIVE MQ 9. Procederemos a crear una cola de ejemplo, con el nombre DemoQueue. Para ello vamos a ingresar a la consola de administracin del Active MQ (http://localhost:8161/admin) y nos vamos a la opcin Queues. Encontramos una caja de texto en donde escribiremos el nombre de la cola y presionamos el botn Create.

10. Finalmente podemos observar la cola creada en el servidor.

UTILIZACIN DE LA COLA COMO MEDIO DE COMUNICACIN Vamos a utilizar la Cola creada anteriormente para poder implementar una comunicacin asncrona entre dos programas escritos en Java para poder simular un intercambio de mensajes. Para este escenario ser importante recordar que las implementaciones estn basadas en el estndar de Java JMS (Java Message Service). La implementacin de este estndar se encuentra en el Active MQ. Los programas los escribiremos y ejecutaremos desde el entorno de eclipse. Para ello utilizaremos las libreras que se encuentra en el directorio c:/opt/apache-activemq-5.8.0.

Vamos a importar las libreras necesarias al proyecto en el IDE Eclipse para poder ejecutar sin problemas el programa que deja el mensaje, as como el programa que lee el mensaje. 11. Iniciar el IDE Eclipse Helios 12. Creamos un proyecto Java mediante la opcin File New Other y luego seleccionar Java Project y hacer click en el botn Next.

13. Ingresar un nombre al proyecto y hacer click en el botn Finish.

14. Hacer click en el botn Yes para activar la perspectiva Java.

14. Creamos un nuevo paquete: ul.jsm.demo y las tres clases que vemos en la figura siguiente:

15. Para poder compilar y ejecutar las clases que interactan con el ActiveMQ es necesario agregar las siguientes libreras activemq-all-5.8.0.jar de la siguiente manera: Posicionarse en el proyecto Lab2ActiveMQ hacer click derecho New Build Path Add External Archives

16. Ubicar el archivo activemq-all-5.8.0.jar que se encuentra en la ruta c:\opt\apache.activemq-5.8.0 y hacer click en el botn Abrir.

17. Repetir los pasos 15 y 16 para aadir las libreras log4j-1.2.17.jar y slf4j-log4j12-1.6.6.jar que se encuentran en la carpeta C:\opt\apache-activemq-5.8.0\lib\optional

18. Vamos a generar el cdigo de la clase DemoServer.java de la siguiente manera:


package ul.jsm.demo; import org.apache.activemq.*; import javax.jms.*; public class DemoServer { private private private private private static static static static static ActiveMQConnectionFactory connectionFactory; Connection connection; Session session; Destination destination; boolean transacted = false;

public static void main(String[] args) { try { connectionFactory = new ActiveMQConnectionFactory( ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD, ActiveMQConnection.DEFAULT_BROKER_URL); connection = connectionFactory.createConnection(); connection.start(); session = connection.createSession(transacted,Session.AUTO_ACKNOWLEDGE); destination = session.createQueue("DemoQueue"); MessageProducer producer = session.createProducer(destination); producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT); TextMessage message = session.createTextMessage("<cliente><nombre>Pepito</nombre></cliente>");

//Enviamos un mensaje producer.send(message); javax.jms.Message message2 = session.createObjectMessage(new String("Hola Arq de SW...")); //Enviamos otro mensaje producer.send(message2); System.out.println("Se enviaron 2 mensajes..."); } catch (JMSException e) { System.out.print(e); } } }

19. Vamos a generar el cdigo de la clase Consumer.java


package ul.jsm.demo; import javax.jms.Message; import javax.jms.*; import javax.jms.MessageListener; public class Consumer implements MessageListener { public void onMessage(Message arg0) { try { if (arg0 instanceof TextMessage) { System.out.println("Mensaje Recibido = "+ ((TextMessage)arg0).getText()); } else if (arg0 instanceof ObjectMessage) { System.out.println("Mensaje Recibido : " +((ObjectMessage)arg0).getObject()); } } catch (JMSException e) { e.printStackTrace(); } } }

20. Finalmente creamos la clase DemoClient, con el cdigo necesario para poder conectarnos al Active MQ y consumir los mensajes de la cola DemoQueue.
package ul.jsm.demo; import org.apache.activemq.*; import javax.jms.*; public class DemoClient { private private private private static static static static ActiveMQConnectionFactory connectionFactory; Connection connection; Session session; Destination destination;

public static void main(String[] args) { try { connectionFactory = new ActiveMQConnectionFactory( ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD,

ActiveMQConnection.DEFAULT_BROKER_URL); connection = connectionFactory.createConnection(); connection.start(); session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); destination = session.createQueue("DemoQueue"); MessageConsumer consumer = session.createConsumer(destination); Consumer myConsumer = new Consumer(); consumer.setMessageListener(myConsumer); Thread.sleep(3000); session.close(); connection.close(); } catch(Exception e) { e.printStackTrace(); } } }

21. Ejecutar la clase DemoServer para poner los mensajes en la cola DemoQueue haciendo click derecho en la clase DemoServer y luego Run As Java Application

22. Visualizar la consola de mensajes donde se indica que se han enviado los mensajes exitosamente.

23. Ingresar a la consola de administracin del ActiveMQ y verificar que se hayan recibido los 2 mensajes.

24. Hacer click en DemoQueue y se puede observar los 2 mensajes recibidos.

25. Hacer click en el primer mensaje para ver el detalle del mismo.

26. Ejecutar la clase DemoClient y visualizar en la consola de mensajes los mensajes que ha ledo de la cola DemoQueue

27. Ingresar a la consola de Administracin del ActiveMQ y verificar que los mensajes hayan sido leidos.

28. Crear una cola llamada TestQueue y escribir un mensaje en la cola con el texto Prueba de nueva cola, sacarlo de la cola y mostrar el texto en la consola de salida.

BIBLIOGRAFA SUGERIDA Puede obtener ms informacin acerca del funcionamiento del Active MQ y del estndar JMS en las siguientes direcciones: http://activemq.apache.org/getting-started.html http://java.sun.com/javaee/5/docs/tutorial/doc/bncdq.html

Vous aimerez peut-être aussi