Ahora que ya tenemos configurado un namespace en nuestra cuenta de Windows Azure, procedemos a programar un ejemplo de como utilizar el Bus de Servicio de Windows Azure. Lo primero que vamos a hacer es hacer una simple aplicación de consola desde donde vamos a poder interactuar con el bus de Windows Azure.
Agregando las Referencias
Para iniciar, tenemos que agregar las referencias a las librerías requeridas para poder desarrollar contra el Bus de Servicios. Esto lo podemos hacer buscando las librerías correspondientes o utilizando el paquete de NuGet – el cual utilizaremos en este ejemplo.
En la pantalla de administración de paquetes procedemos a buscar el paquete el cual se llama WindowsAzure.ServiceBus. Cuando lo encontramos seleccionamos instalar.
En la instalación vamos a requerir que aceptemos la licencia del software y listo, el proceso inicia.
Cuando termina la instalación, vamos a ver las referencias al paquete agregada a nuestro proyecto.
Creando Entidades en el Bus de Servicios
Para poder hacer nuestro primero demo, vamos a crear una cola desde el Explorador de Servidores; para esto, le damos botón derecho a el ítem llamado Queues en nuestro namespace y seleccionamos “Create New Queue”.
Aquí nos aparece la pantalla desde donde podemos establecer todos los valores de la nueva Cola. En nuestro caso solo vamos a ponerle nombre “TestQueue1” y procedemos a guardarla.
Una vez creada la cola, la misma aparece listada en el server explorer – El mismo proceso lo podemos utilizar para crear Topics.
Listando las Colas en el Bus de Servicios
Ahora vamos a programar nuestro primer ejemplo. Vamos a listar las colas disponibles en nuestro bus de servicios. Primero que todo en la aplicación de consola procedemos a crear una instancia del NamespaceManager, el cual nos da todo el acceso al namespace en el bus de servicios. Como requiero conocer conocer los datos para conectarme al bus, voy a requerir el string de conexión del mismo. Este lo consigo si le doy botón derecho al namespace en el server explorer y selecciono propiedades. En las propiedades tengo acceso al string de conexión del bus de servicios y del respectivo namespace.
Luego de esto procedemos a crear una constante con dicho valor – lo ideal es cambiar este connection string a un archivo de configuración, así podemos redireccionar el servicio a la nube o a una aplicacion on premises utilizando el mismo código pero con el Windows Service Bus en lugar del Windows Azure Service Bus.
const string connString = "Endpoint=sb://arc3labsdemocloud.servicebus.windows.net/;SharedSecretIssuer=owner;SharedSecretValue=IT4haj3NiSsZP/kGMTQDRiozTs49niEf9O8TzIZVg=";
Seguidamente agregamos el namespace del bus de servicios para tener acceso a la clase NamespaceManager.
using Microsoft.ServiceBus;
Ahora procedemos a crear el namespace, y luego de eso obtenemos las colas que existen en ese namespace.
var _namespaceManager = NamespaceManager.CreateFromConnectionString(connString);
var _listaDeColasDisponibles = _namespaceManager.GetQueues();
El siguiente paso es simplemente recorrer la colección y desplegar las colas que fueron encontradas en el namespace:
foreach (var _colaActual in _listaDeColasDisponibles)
{
Console.WriteLine(_colaActual.Path);
}
El resultado de la ejecución de este pequeño ejemplo es el siguiente:
Como podemos ver en la figura anterior, la cola llamada testqueue1 esta disponible.
Igualmente podemos crear una cola desde código utilizando la instrucción CreateQueue de la clase NamespaceManager.
_namespaceManager.CreateQueue("testQueue2");
Si agregamos la línea anterior antes de la instrucción para ejecutar las colas, el resultado de la ejecución nos muestra ahora dos colas en el namespace del bus de servicios.
Igualmente si refrescamos el server explorer podemos ver que existen ahora dos colas en el namespace.
Las colas se pueden crear con el método CreateQueueDescription, el cual nos permite agregar más parámetros para la creación de la cola. El mismo procedimiento aplica para los tópicos.