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.
Luego procedemos importando las librerías que necesitamos para que el código compile y funcione:
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.
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.
Si enviamos el mensaje desde la aplicación de consola, podremos ver que el mensaje se envía correctamente.
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.
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.
El resultado a la hora de ejecutar la aplicación se ve en la siguiente figura:
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.