Compartir a través de


Uso de Queue Storage desde Ruby

Sugerencia

Pruebe el explorador de Microsoft Azure Storage

El Explorador de Microsoft Azure Storage es una aplicación independiente y gratuita de Microsoft que permite trabajar visualmente con los datos de Azure Storage en Windows, macOS y Linux.

Información general

En esta guía se muestra cómo realizar escenarios comunes mediante el servicio Microsoft Azure Queue Storage. Los ejemplos se escriben mediante la API de Azure de Ruby. Entre los escenarios descritos se incluyen la inserción, la visualización, la obtención y la eliminación de mensajes de cola, así como la creación y eliminación de colas.

¿Qué es Queue Storage?

Azure Queue Storage es un servicio para almacenar un gran número de mensajes a los que se puede acceder desde cualquier lugar del mundo a través de llamadas autenticadas mediante HTTP o HTTPS. Un único mensaje de cola puede tener un tamaño de hasta 64 KB y una cola puede contener millones de mensajes, hasta el límite de capacidad total de una cuenta de almacenamiento. Queue Storage se suele usar para crear un trabajo pendiente para procesar de forma asincrónica.

Conceptos del servicio de cola

Azure Queue Service contiene los siguientes componentes:

Componentes de Azure Queue Service

  • Cuenta de almacenamiento: Todo el acceso a Azure Storage se realiza a través de una cuenta de almacenamiento. Para más información sobre las cuentas de almacenamiento, consulte Introducción a las cuentas de Storage.

  • Cola: Una cola contiene un conjunto de mensajes. Todos los mensajes deben estar en una cola. Tenga en cuenta que el nombre de la cola debe ir en minúsculas. Para más información, consulte Asignar nombres a colas y metadatos.

  • Mensaje: un mensaje, en cualquier formato, de hasta 64 KB. El tiempo máximo que un mensaje puede permanecer en la cola es de 7 días. A partir de la versión del 2017-07-29, inclusive, el tiempo de vida máximo puede ser cualquier número positivo o -1, lo que indica que el mensaje no expira. Si se omite este parámetro, el tiempo de vida predeterminado es siete días.

  • Formato de dirección URL: Las colas son direccionables con el siguiente formato de dirección URL: http://<storage account>.queue.core.windows.net/<queue>

    La siguiente dirección URL direcciona una cola en el diagrama:

    http://myaccount.queue.core.windows.net/incoming-orders

Creación de una cuenta de Azure Storage

La manera más fácil de crear su primera cuenta de Azure Storage es mediante el uso de Azure Portal. Para obtener más información, consulte Crear una cuenta de almacenamiento.

También puede crear una cuenta de Azure Storage mediante Azure PowerShell, Azure CLI, o el Azure Storage Resource Provider para .NET.

Si prefiere no crear una cuenta de almacenamiento en Azure en este momento, también puede usar el emulador de almacenamiento de Azurite para ejecutar y probar el código en un entorno local. Para más información, consulte Uso del emulador de Azurite para el desarrollo local de Azure Storage.

Creación de una aplicación de Ruby

Cree una aplicación ruby. Para obtener instrucciones, consulte Creación de una aplicación ruby en App Service en Linux.

Configuración de la aplicación para acceder al almacenamiento

Para usar Azure Storage, debe descargar y usar el paquete de Azure de Ruby, que incluye un conjunto de bibliotecas de conveniencia que se comunican con los servicios REST de almacenamiento.

Uso de RubyGems para obtener el paquete

  1. Use una interfaz de línea de comandos como PowerShell (Windows), Terminal (Mac) o Bash (Unix).
  2. Escriba gem install azure en la ventana de comandos para instalar la gema y las dependencias.

Importación del paquete

Use su editor de texto favorito, agregue lo siguiente a la parte superior del archivo ruby donde quiere usar el almacenamiento:

require "azure"

Configuración de una conexión de Azure Storage

El módulo de Azure leerá las variables AZURE_STORAGE_ACCOUNT de entorno y AZURE_STORAGE_ACCESS_KEY para obtener información necesaria para conectarse a la cuenta de Azure Storage. Si no se establecen estas variables de entorno, debe especificar la información de la cuenta antes de usarla Azure::QueueService con el código siguiente:

Azure.config.storage_account_name = "<your azure storage account>"
Azure.config.storage_access_key = "<your Azure storage access key>"

Para obtener estos valores de una cuenta de almacenamiento clásica o de Resource Manager en Azure Portal:

  1. Inicie sesión en Azure Portal.
  2. Vaya a la cuenta de almacenamiento que desea usar.
  3. En la hoja Configuración de la derecha, haga clic en Claves de acceso.
  4. En la hoja Claves de acceso que aparece, verá la clave de acceso 1 y la clave de acceso 2. Puede usar cualquiera de estos.
  5. Haga clic en el icono de copia para copiar la clave en el Portapapeles.

Cómo: Crear una cola

El código siguiente crea un Azure::QueueService objeto , que permite trabajar con colas.

azure_queue_service = Azure::QueueService.new

Use el create_queue() método para crear una cola con el nombre especificado.

begin
  azure_queue_service.create_queue("test-queue")
rescue
  puts $!
end

Cómo: Insertar un mensaje en una cola

Para insertar un mensaje en una cola, use el create_message() método para crear un nuevo mensaje y agregarlo a la cola.

azure_queue_service.create_message("test-queue", "test message")

Procedimiento para ver el siguiente mensaje

Puede ver el mensaje situado en la parte delantera de una cola sin quitarlo de la cola mediante una llamada al método peek_messages(). De forma predeterminada, peek_messages() inspecciona un único mensaje. También puede especificar cuántos mensajes desea ver.

result = azure_queue_service.peek_messages("test-queue",
  {:number_of_messages => 10})

Cómo desencolar el siguiente mensaje

Puede quitar un mensaje de una cola en dos pasos.

  1. Al llamar a list_messages(), obtendrá el siguiente mensaje en una cola de forma predeterminada. También puede especificar cuántos mensajes desea obtener. Los mensajes devueltos de list_messages() se vuelven invisibles para cualquier otro código que lea mensajes de esta cola. Se pasa el tiempo de espera de visibilidad en segundos como parámetro.
  2. Para terminar de quitar el mensaje de la cola, también debe llamar a delete_message().

Este proceso de dos pasos para quitar un mensaje garantiza que cuando el código no procesa un mensaje debido a un error de hardware o software, otra instancia del código puede obtener el mismo mensaje e intentarlo de nuevo. Tu código llama a delete_message() justo después de que se haya procesado el mensaje.

messages = azure_queue_service.list_messages("test-queue", 30)
azure_queue_service.delete_message("test-queue",
  messages[0].id, messages[0].pop_receipt)

Cómo: Cambiar el contenido de un mensaje en cola

Puede cambiar el contenido de un mensaje directamente en la cola. El código siguiente usa el update_message() método para actualizar un mensaje. El método devolverá una tupla que contiene la recepción emergente del mensaje de cola y un valor UTC DateTime que representa cuándo el mensaje estará visible en la cola.

message = azure_queue_service.list_messages("test-queue", 30)
pop_receipt, time_next_visible = azure_queue_service.update_message(
  "test-queue", message.id, message.pop_receipt, "updated test message",
  30)

Cómo hacer: Opciones adicionales para desencolar mensajes

Hay dos maneras de personalizar la recuperación de mensajes desde una cola.

  1. Puede obtener un conjunto de mensajes.
  2. Puede establecer un tiempo de espera de invisibilidad más largo o más corto, lo que permite que el código tenga más o menos tiempo para procesar completamente cada mensaje.

En el ejemplo de código siguiente se usa el list_messages() método para obtener 15 mensajes en una llamada. A continuación, imprime y elimina cada mensaje. También establece el tiempo de invisibilidad en cinco minutos para cada mensaje.

azure_queue_service.list_messages("test-queue", 300
  {:number_of_messages => 15}).each do |m|
  puts m.message_text
  azure_queue_service.delete_message("test-queue", m.id, m.pop_receipt)
end

Cómo obtener la longitud de la cola

Puede obtener una estimación del número de mensajes en la cola. El get_queue_metadata() método devuelve el recuento aproximado de mensajes y otros metadatos de cola.

message_count, metadata = azure_queue_service.get_queue_metadata(
  "test-queue")

Cómo: Eliminar una cola

Para eliminar una cola y todos los mensajes contenidos en ella, llame al método delete_queue() en el objeto de cola.

azure_queue_service.delete_queue("test-queue")

Pasos siguientes

Ahora que ha aprendido los conceptos básicos de Queue Storage, siga estos vínculos para obtener información sobre tareas de almacenamiento más complejas.

Para ver una comparación entre Azure Queue Storage, que se describe en este artículo, y las colas de Azure Service Bus, que se describen en Cómo usar las colas de Service Bus, vea Azure Queue Storage y colas de Service Bus: comparadas y contrastadas