Partilhar via


Exemplos de código do Armazenamento de Filas do Azure usando bibliotecas de cliente Python versão 2

Este artigo mostra exemplos de código que usam a versão 2 da biblioteca de cliente do Armazenamento de Filas do Azure para Python.

Em 31 de março de 2023, desativamos o suporte para bibliotecas do SDK do Azure que não estão em conformidade com as diretrizes atuais do SDK do Azure. As novas bibliotecas do SDK do Azure são atualizadas regularmente para promover experiências consistentes e fortalecer a sua postura de segurança. É recomendável fazer a transição para as novas bibliotecas do SDK do Azure para aproveitar os novos recursos e as atualizações críticas de segurança.

Embora as bibliotecas mais antigas ainda possam ser usadas após 31 de março de 2023, elas não receberão mais suporte e atualizações oficiais da Microsoft. Para obter mais informações, consulte o anúncio de aposentadoria de suporte.

Para obter exemplos de código usando a versão mais recente da biblioteca de cliente 12.x, consulte Guia de início rápido: biblioteca de cliente do Azure Queue Storage para Python.

Criar uma fila

Aditar as seguintes import diretivas:

from azure.storage.queue import (
        QueueService,
        QueueMessageFormat
)

O código a seguir cria um QueueService objeto usando a cadeia de conexão de armazenamento.

# Retrieve the connection string from an environment
# variable named AZURE_STORAGE_CONNECTION_STRING
connect_str = os.getenv("AZURE_STORAGE_CONNECTION_STRING")

# Create a unique name for the queue
queue_name = "queue-" + str(uuid.uuid4())

# Create a QueueService object which will
# be used to create and manipulate the queue
print("Creating queue: " + queue_name)
queue_service = QueueService(connection_string=connect_str)

# Create the queue
queue_service.create_queue(queue_name)

As mensagens da fila do Azure são armazenadas como texto. Se você quiser armazenar dados binários, configure as funções de codificação e decodificação Base64 antes de colocar uma mensagem na fila.

Configure as funções de codificação e decodificação Base64 no objeto Queue Storage:

# Setup Base64 encoding and decoding functions
queue_service.encode_function = QueueMessageFormat.binary_base64encode
queue_service.decode_function = QueueMessageFormat.binary_base64decode

Introduzir uma mensagem numa fila

Para inserir uma mensagem em uma fila, use o put_message método para criar uma nova mensagem e adicioná-la à fila.

message = u"Hello, World"
print("Adding message: " + message)
queue_service.put_message(queue_name, message)

Espreite as mensagens

Você pode espiar mensagens sem removê-las da fila chamando o peek_messages método. Por padrão, esse método espia uma única mensagem.

messages = queue_service.peek_messages(queue_name)

for peeked_message in messages:
    print("Peeked message: " + peeked_message.content)

Alterar os conteúdos de uma mensagem em fila

O código a seguir usa o update_message método para atualizar uma mensagem. O tempo limite de visibilidade é definido como 0, o que significa que a mensagem aparece imediatamente e o conteúdo é atualizado.

messages = queue_service.get_messages(queue_name)

for message in messages:
    queue_service.update_message(
        queue_name, message.id, message.pop_receipt, 0, u"Hello, World Again")

Obter o comprimento da fila

O get_queue_metadata método retorna propriedades de fila, incluindo approximate_message_count.

metadata = queue_service.get_queue_metadata(queue_name)
count = metadata.approximate_message_count
print("Message count: " + str(count))

O resultado é apenas aproximado porque as mensagens podem ser adicionadas ou removidas depois que o serviço responde à sua solicitação.

Retirar mensagens da fila

Quando você chama get_messages, você recebe a próxima mensagem na fila por padrão. Uma mensagem retornada de get_messages torna-se invisível para qualquer outra mensagem de leitura de código dessa fila. Por predefinição, esta mensagem permanece invisível durante 30 segundos. Para concluir a remoção da mensagem da fila, você também deve chamar delete_message.

messages = queue_service.get_messages(queue_name)

for message in messages:
    print("Deleting message: " + message.content)
    queue_service.delete_message(queue_name, message.id, message.pop_receipt)

Existem duas formas através das quais pode personalizar a obtenção de mensagens a partir de uma fila. Em primeiro lugar, pode obter um lote de mensagens (até 32). Em segundo lugar, pode definir um tempo limite de invisibilidade superior ou inferior, dando mais ou menos tempo ao código para processar totalmente cada mensagem.

O exemplo de código a seguir usa o get_messages método para obter 16 mensagens em uma chamada. Em seguida, ele processa cada mensagem usando um for loop. Define também o tempo limite de invisibilidade para cinco minutos para cada mensagem.

messages = queue_service.get_messages(queue_name, num_messages=16, visibility_timeout=5*60)

for message in messages:
    print("Deleting message: " + message.content)
    queue_service.delete_message(queue_name, message.id, message.pop_receipt)

Eliminar uma fila

Para excluir uma fila e todas as mensagens contidas nela, chame o delete_queue método.

print("Deleting queue: " + queue_name)
queue_service.delete_queue(queue_name)