Azure Service Bus Queues
Qué es
El Azure Service Bus Queues (ASBQ), al igual que el servicio Azure Queue Storage (se habló de el en este post) hace uso de una estructura de datos basada en cola para el envío de mensajes. A diferencia de este último, el ASBQ no requiere de una Storage Account para su funcionamiento.
Instalación
La instalación es bastante directa y sencilla. Hay que llevarla a cabo desde el portal clásico (ya que desde el portal nuevo, nos redirigirá al primero).
De este modo, en el portal clásico, hay que situarse en “Service Bus” y pinchar en “Create”. Hecho esto, aparecerá una pantalla donde se indicarán los datos del servicio.
Se dará un namespace, el tipo será ‘messaging’, se elegirá el nivel acorde a las necesidades, así como la región (el rendimiento será mejor cuanto más cerca). Una vez creado el servicio, aparecerá en el panel.
Lo último que quedaría por hacer sería anotar la cadena de conexión que posteriormente se empleará en el entorno de desarrollo elegido. Para ello, hay que pinchar en el icono “Connection information”, proporcionando dicha información.
Funcionamiento
Este servicio puede utilizarse mediante diversos lenguajes (Java, Node.js, .NET, etc), a modo de ejemplo se hará en Python.
La instalación de Python y su correspondiente SDK no presenta complicaciones, habiendo versión para Windows, Linux y MacOS.
Una vez instalado el SDK, ya se está en disposición de crear y eliminar colas, así como introducir mensajes y extraerlos. Cabe señalar que en el propio portal clásico se pueden crear y eliminar colas.
Un código de ejemplo en Python sería el siguiente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# Lo primero es incluir las librerias necesarios from azure.servicebus import ServiceBusService, Message, Queue # Conexión con el servicio. Los datos se extraen de la cadena de conexión bus_service = ServiceBusService( service_namespace='mmariniot-asm-ns', shared_access_key_name='RootManageSharedAccessKey', shared_access_key_value='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx') # Se crea una cola llamada 'taskqueue' queue_options = Queue() queue_options.max_size_in_megabytes = '1024' queue_options.default_message_time_to_live = 'PT1M' bus_service.create_queue('taskqueue', queue_options) # Envia un mensaje a la cola llamada 'taskqueue' msg_out = Message(b'Mensaje de test') bus_service.send_queue_message('taskqueue', msg_out) # Recibe mensaje de la cola 'taskqueue' msg_in = bus_service.receive_queue_message('taskqueue', peek_lock=False) # Imprime el mensaje recibido print(msg_in.body) # Borra la cola 'taskqueue' bus_service.delete_queue('taskqueue') |
Conclusiones
La modalidad que se ha visto aquí es la más simple (paso de mensajes), pero también presenta otras más elaboradas. Comparándola con la Azure Storage Queue, su utilización es si cabe más sencilla y directa, pero no tan potente y versátil. Todo depende en realidad del uso que se le dé.
Qué diferencias en detalle tienen Azure Storage Queue y Azure Service Bus, los dos se basan en colas, qué diferencias principales tienen?
Gracias