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)