Uso del almacenamiento de colas de RubyHow to use Queue storage from Ruby

Sugerencia

Probar el Explorador de Microsoft Azure StorageTry the Microsoft Azure Storage Explorer

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.Microsoft Azure Storage Explorer is a free, standalone app from Microsoft that enables you to work visually with Azure Storage data on Windows, macOS, and Linux.

Información generalOverview

Esta guía muestra cómo realizar algunas tareas comunes a través del servicio Microsoft Azure Queue Storage.This guide shows you how to perform common scenarios using the Microsoft Azure Queue Storage service. Los ejemplos están escritos usando la API Ruby de Azure.The samples are written using the Ruby Azure API. Entre los escenarios descritos se incluyen insertar, ojear, obtener y eliminar mensajes de la cola, así como crear y eliminar colas.The scenarios covered include inserting, peeking, getting, and deleting queue messages, as well as creating and deleting queues.

¿Qué es Queue Storage?What is Queue Storage?

El almacenamiento en cola de Azure es un servicio para almacenar grandes cantidades de mensajes a los que puede obtenerse acceso desde cualquier lugar del mundo a través de llamadas autenticadas con HTTP o HTTPS.Azure Queue storage is a service for storing large numbers of messages that can be accessed from anywhere in the world via authenticated calls using HTTP or HTTPS. Un único mensaje en 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.A single queue message can be up to 64 KB in size, and a queue can contain millions of messages, up to the total capacity limit of a storage account.

El almacenamiento en cola suele usarse para realizar las siguientes tareas:Common uses of Queue storage include:

  • Creación de trabajo pendiente para el procesamiento asincrónicoCreating a backlog of work to process asynchronously
  • Transferencia de mensajes de un rol web de Azure a un rol de trabajo de AzurePassing messages from an Azure web role to an Azure worker role

Conceptos del servicio ColaQueue Service Concepts

El servicio Cola contiene los siguientes componentes:The Queue service contains the following components:

Cola1

  • Formato de dirección URL: Las colas son direccionables mediante el siguiente formato de dirección URL:URL format: Queues are addressable using the following URL format:
    http://<storage account>.queue.core.windows.net/<queue>http://<storage account>.queue.core.windows.net/<queue>

    La siguiente dirección URL dirige a una cola del diagrama:The following URL addresses a queue in the diagram:

    http://myaccount.queue.core.windows.net/images-to-download

  • Cuenta de almacenamiento: Todo el acceso a Azure Storage se realiza a través de una cuenta de almacenamiento.Storage Account: All access to Azure Storage is done through a storage account. Consulte Objetivos de escalabilidad y rendimiento de Azure Storage para obtener información sobre la capacidad de la cuenta de almacenamiento.See Azure Storage Scalability and Performance Targets for details about storage account capacity.

  • Cola: una cola contiene un conjunto de mensajes.Queue: A queue contains a set of messages. Todos los mensajes deben encontrarse en una cola.All messages must be in a queue. Tenga en cuenta que el nombre de la cola debe ir en minúsculas.Note that the queue name must be all lowercase. Para más información, consulte Asignar nombres a colas y metadatos.For information on naming queues, see Naming Queues and Metadata.

  • Mensaje: un mensaje, en cualquier formato, de hasta 64 KB.Message: A message, in any format, of up to 64 KB. El tiempo máximo que un mensaje puede permanecer en la cola es de 7 días.The maximum time that a message can remain in the queue is 7 days.

Creación de una cuenta de Azure StorageCreate an Azure storage account

La forma más fácil de crear la primera cuenta de Azure Storage es a través de Azure Portal.The easiest way to create your first Azure storage account is by using the Azure portal. Para obtener más información, consulte Crear una cuenta de almacenamiento.To learn more, see Create a storage account.

Puede crear también una cuenta de Azure Storage mediante Azure PowerShell, la CLI de Azure o el proveedor de recursos de Azure Storage para .NET.You can also create an Azure storage account by using Azure PowerShell, Azure CLI, or the Azure Storage Resource Provider for .NET.

Si no desea crear una cuenta de almacenamiento en Azure en este momento, también puede utilizar el emulador de Azure Storage para ejecutar y probar el código en un entorno local.If you prefer not to create a storage account in Azure at this time, you can also use the Azure storage emulator to run and test your code in a local environment. Para más información, consulte Uso del emulador de Azure Storage para desarrollo y pruebas.For more information, see Use the Azure Storage Emulator for Development and Testing.

Creación de una aplicación de RubyCreate a Ruby Application

Cree una aplicación de Ruby.Create a Ruby application. Para obtener más instrucciones, consulte Creación de una aplicación de Ruby en App Service en Linux.For instructions, see Create a Ruby App in App Service on Linux.

Configuración de la aplicación para obtener acceso al almacenamientoConfigure Your Application to Access Storage

Para usar el almacenamiento de Azure tendrá que descargar y usar el paquete Ruby azure, que incluye un conjunto de útiles bibliotecas que se comunican con los servicios REST de almacenamiento.To use Azure storage, you need to download and use the Ruby azure package, which includes a set of convenience libraries that communicate with the storage REST services.

Uso de RubyGems para obtener el paqueteUse RubyGems to obtain the package

  1. Use una interfaz de línea de comandos como PowerShell (Windows), Terminal (Mac) o Bash (Unix).Use a command-line interface such as PowerShell (Windows), Terminal (Mac), or Bash (Unix).
  2. Escriba "gem install azure" en la ventana de comandos para instalar la gema y las dependencias.Type "gem install azure" in the command window to install the gem and dependencies.

Importación del paqueteImport the package

Con el editor de texto que prefiera, agregue lo siguiente al principio del archivo de Ruby en el que pretenda utilizar el almacenamiento:Use your favorite text editor, add the following to the top of the Ruby file where you intend to use storage:

require "azure"

Configuración de una conexión de Azure StorageSetup an Azure Storage Connection

El módulo azure leerá las variables de entorno AZURE_STORAGE_ACCOUNT y AZURE_STORAGE_ACCESS_KEY para obtener información necesaria para conectarse a su cuenta de Azure Storage.The azure module will read the environment variables AZURE_STORAGE_ACCOUNT and AZURE_STORAGE_ACCESS_KEY for information required to connect to your Azure storage account. Si no se establecen estas variables de entorno, debe especificar la información de la cuenta antes de usar Azure::QueueService con el siguiente código:If these environment variables are not set, you must specify the account information before using Azure::QueueService with the following code:

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

Para obtener estos valores desde una cuenta de almacenamiento de Azure Resource Manager o clásica en el Portal de Azure:To obtain these values from a classic or Resource Manager storage account in the Azure portal:

  1. Inicie sesión en Azure Portal.Log in to the Azure portal.
  2. Vaya a la cuenta de almacenamiento que desea utilizar.Navigate to the storage account you want to use.
  3. En la hoja Configuración que se encuentra a la derecha, haga clic en Claves de acceso.In the Settings blade on the right, click Access Keys.
  4. En la hoja Claves de acceso que aparece, verá la clave de acceso 1 y 2.In the Access keys blade that appears, you'll see the access key 1 and access key 2. Puede usar cualquiera de estas.You can use either of these.
  5. Haga clic en el icono de copia para copiar la clave en el Portapapeles.Click the copy icon to copy the key to the clipboard.

Instrucciones: Creación de una colaHow To: Create a Queue

El siguiente código crea un objeto Azure::QueueService , que permite trabajar con colas.The following code creates a Azure::QueueService object, which enables you to work with queues.

azure_queue_service = Azure::QueueService.new

Utilice el método create_queue() para crear una cola con el nombre especificado.Use the create_queue() method to create a queue with the specified name.

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

Instrucciones: Inserción de un mensaje en una colaHow To: Insert a Message into a Queue

Para insertar un mensaje en una cola, utilice el método create_message() para crear un nuevo mensaje y agregarlo a la cola.To insert a message into a queue, use the create_message() method to create a new message and add it to the queue.

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

Instrucciones: Inspección del siguiente mensajeHow To: Peek at the Next Message

Puede inspeccionar el mensaje situado en la parte delantera de una cola, sin quitarlo de la cola, mediante una llamada al método peek_messages() .You can peek at the message in the front of a queue without removing it from the queue by calling the peek_messages() method. De forma predeterminada, peek_messages() inspecciona un único mensaje.By default, peek_messages() peeks at a single message. También puede indicar cuántos mensajes desea inspeccionar.You can also specify how many messages you want to peek.

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

Instrucciones: Extracción del siguiente mensaje de la colaHow To: Dequeue the Next Message

Puede borrar un mensaje de una cola en dos pasos.You can remove a message from a queue in two steps.

  1. Al llamar a list_messages() , obtiene, de forma predeterminada, el siguiente mensaje en una cola.When you call list_messages(), you get the next message in a queue by default. También puede indicar cuántos mensajes desea obtener.You can also specify how many messages you want to get. Los mensajes devueltos por list_messages() se hacen invisibles para cualquier otro código que lea mensajes de esta cola.The messages returned from list_messages() becomes invisible to any other code reading messages from this queue. Usted proporciona el tiempo de espera de la visibilidad en segundos a modo de parámetro.You pass in the visibility timeout in seconds as a parameter.
  2. Para terminar quitando el mensaje de la cola, también debe llamar a delete_message() .To finish removing the message from the queue, you must also call delete_message().

Este proceso de extracción de un mensaje que consta de dos pasos garantiza que si su código no puede procesar un mensaje a causa de un error de hardware o software, otra instancia de su código puede obtener el mismo mensaje e intentarlo de nuevo.This two-step process of removing a message assures that when your code fails to process a message due to hardware or software failure, another instance of your code can get the same message and try again. El código llama a delete_message() justo después de que se haya procesado el mensaje.Your code calls delete_message() right after the message has been processed.

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

Instrucciones: Cambio del contenido de un mensaje en colaHow To: Change the Contents of a Queued Message

Puede cambiar el contenido de un mensaje local en la cola.You can change the contents of a message in-place in the queue. El código siguiente usa el método update_message() para actualizar un mensaje.The code below uses the update_message() method to update a message. Este método devolverá una tupla que contiene la recepción de confirmación del mensaje en cola y un valor de fecha y hora UTC que representa el momento en que el mensaje estará visible en la cola.The method will return a tuple which contains the pop receipt of the queue message and a UTC date time value that represents when the message will be visible on the queue.

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)

Instrucciones: Opciones adicionales para quitar mensajes de la colaHow To: Additional Options for Dequeuing Messages

Hay dos formas de personalizar la recuperación de mensajes de una cola.There are two ways you can customize message retrieval from a queue.

  1. En primer lugar, puede obtener un lote de mensajes.You can get a batch of message.
  2. En segundo lugar, puede establecer un tiempo de espera de la invisibilidad más largo o más corto para que el código disponga de más o menos tiempo para procesar cada mensaje.You can set a longer or shorter invisibility timeout, allowing your code more or less time to fully process each message.

El siguiente ejemplo de código utiliza el método list_messages() para obtener 15 mensajes en una llamada.The following code example uses the list_messages() method to get 15 messages in one call. A continuación, imprime y elimina cada mensaje.Then it prints and deletes each message. También establece el tiempo de espera de la invisibilidad en cinco minutos para cada mensaje.It also sets the invisibility timeout to five minutes for each message.

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

Instrucciones: Obtención de la longitud de la colaHow To: Get the Queue Length

Puede obtener una estimación del número de mensajes existentes en la cola.You can get an estimation of the number of messages in the queue. El método get_queue_metadata() solicita a Queue service que devuelva el recuento aproximado de mensajes y metadatos sobre la cola.The get_queue_metadata() method asks the queue service to return the approximate message count and metadata about the queue.

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

Instrucciones: Eliminación de una colaHow To: Delete a Queue

Para eliminar una cola y todos los mensajes contenidos en ella, llame al método delete_queue() en el objeto de cola.To delete a queue and all the messages contained in it, call the delete_queue() method on the queue object.

azure_queue_service.delete_queue("test-queue")

Pasos siguientesNext Steps

Ahora que está familiarizado con los aspectos básicos del almacenamiento de colas, utilice estos vínculos para obtener más información acerca de tareas de almacenamiento más complejas.Now that you've learned the basics of queue storage, follow these links to learn about more complex storage tasks.

Podrá encontrar una comparación entre Azure Queue Service, que se explica en este artículo, y Azure Service Bus Queues, que se explican en el artículo Utilización de las colas de Service Bus, en el documento Colas de Azure y Colas de Service Bus: comparación y diferencias.For a comparison between the Azure Queue Service discussed in this article and Azure Service Bus Queues discussed in the How to use Service Bus Queues article, see Azure Queues and Service Bus Queues - Compared and Contrasted