lunes, 19 de agosto de 2013

Utilizando el Azure Service Bus con Java - Queues

Una de las ventajas del Azure Service Bus, es que nos permite utilizarlo no solo con código .NET si no también con código Java, python, javascript, etc. En este post vamos a acceder queues en el Azure Service Bus desde una aplicación java hecha en netbeans y corriendo en Mac OS.
En primera instancia vamos a asumir que el namespace y el queue a utilizar ya están configurados, si no lo están pueden visitar los post anteriores al respecto.

Configurar la conexion

Lo primero que debemos hacer es configurar en el código la información necesaria para poder conectarnos al bus. Para esto procedemos a descargar las librerías java para tal propósito (jars) las cuales podemos  obtener desde este link.
Seguidamente procedemos a agregar dichos jars como una librería a nuestra solución - en este caso una aplicación de consola.
 
image
Luego procedemos importando las librerías que necesitamos para que el código compile y funcione:
 
image
 
El siguiente paso es configurar la conexión vía código; esto es, crear el objeto con la configuración de la conexión al bus y crear la clase que mantendrá esta comunicación. Como podemos ver en el siguiente código, esto lo logramos utilizando la clase Configuración en donde pasamos como parámetro el namespace, el usuario, la llave, el url del bus y el tipo de control de acceso. Seguidamente procedemos a crear la clase para conectarnos al service bus a partir de esta configuración.
image

Enviando un mensaje

Una vez configurada la conexión al bus, procedemos a enviar el mensaje. Para esto, vamos a proceder creando el mensaje - Brokered message como en los post anteriores de .NET. Seguidamente agregamos una propiedad al mensaje ( llamada Propiedad) y por ultimo procedemos a enviar el mensaje. El código lo podemos ver en el siguiente listado.
image
Si enviamos el mensaje desde la aplicación de consola, podremos ver que el mensaje se envía correctamente.
image
Si vamos a la consola de Windows Azure, podremos ver que el mensaje esta en la cola esperando a ser consumido por algún cliente.
image

Recibir un mensaje

Para recibir un mensaje vamos a reutilizar el código para la configuración de la conexión utilizado anteriormente y vamos a proceder creando las opciones para recibir el mensaje, que para este caso será recibir el mensaje y borrarlo de la cola, esto lo vamos a lograr con la clase ReceiveMessageOptions. Luego procedemos a recibir el mensaje utilizando el método receiveQueueMessage desde la instancia de la clase ServiceBusContract y procedemos a manipular el mensaje recibido.  Para este ejemplo, simplemente vamos a imprimir el id del mensaje, el cuerpo del mensaje, y la propiedad personalizada llamada Propiedad que agregamos en el envío del mensaje. El código de este método se puede ver en el siguiente listado.
image
El resultado a la hora de ejecutar la aplicación se ve en la siguiente figura:
image
Si vamos de nuevo al portal de Azure, veremos que el largo del queue ya no es 1, si no 0 ya que procedimos con la extracción del mensaje.

image