Eventos
31 de mar., 23 - 2 de abr., 23
O maior evento de aprendizado de Fabric, Power BI e SQL. 31 de março a 2 de abril. Use o código FABINSIDER para economizar $ 400.
Registre-se hoje mesmoNão há mais suporte para esse navegador.
Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.
Neste tutorial, você completa as seguintes etapas:
Observação
Este guia de início rápido apresenta instruções passo a passo para um cenário simples de enviar mensagens para uma fila Barramento de Serviço e recebê-las. Você pode encontrar exemplos do JavaScript e TypeScript predefinidos para o Barramento de Serviço do Azure no SDK do Azure para repositório do Python no GitHub.
Se não conhecer muito bem o serviço, confira a Visão geral do Barramento de Serviço antes de começar com este guia de início rápido.
Uma assinatura do Azure. Para concluir este tutorial, você precisa de uma conta do Azure. Ative seus benefícios de assinante do MSDN ou inscreva-se em uma conta gratuita.
Python 3.8 ou posterior.
Para usar este guia de início rápido com sua conta do Azure:
az login
.Observação
Este tutorial funciona com amostras que você pode copiar e executar usando Python. Para obter instruções de como criar um aplicativo Python, confira Criar e implantar um aplicativo Python em um site do Azure. Para obter mais informações de como instalar os pacotes usados neste tutorial, confira o Guia de instalação do Python.
Para começar a usar as entidades de mensagens do Barramento de Serviço no Azure, primeiro é necessário criar um namespace com um nome exclusivo no Azure. Um namespace fornece um contêiner de escopo para recursos do Barramento de Serviço (filas, tópicos, etc.) dentro de seu aplicativo.
Para criar um namespace:
Entre no portal do Azure.
Navegue até Página Todos os serviços.
Na barra de navegação à esquerda, selecione Integração na lista de categorias. Passe o mouse sobre Barramento de Serviço e, em seguida, selecione o botão + no bloco do Barramento de Serviço.
Na marca Informações Básicas da página Criar namespace, siga estas etapas:
Em Assinatura, escolha uma assinatura do Azure na qual criar o namespace.
Para Grupo de recursos, escolha um grupo de recursos existente ou crie um novo.
Insira um nome para o namespace. O nome do namespace deve estar de acordo com as convenções de nomenclatura abaixo:
-
.-sb
ou -mgmt
.Em Localização, escolha a região na qual o namespace deve ser hospedado.
Selecione o Tipo de preço (Básico, Standard ou Premium) do namespace. Para esse início rápido, selecione Padrão.
Se você escolher a camada Premium, selecione se pode habilitar a replicação geográfica para o namespace. O recurso de replicação geográfica garante que os metadados e os dados de um namespace sejam replicados continuamente de uma região primária para uma ou mais regiões secundárias.
Importante
Se você quiser usar tópicos e assinaturas, escolha Standard ou Premium. Não há suporte para os tópicos/assinaturas no tipo de preço básico.
Se você selecionou o tipo de preço Premium, especifique o número de unidades do sistema de mensagens. A camada Premium fornece isolamento de recursos no nível de CPU e memória, de modo que cada carga de trabalho seja executada isoladamente. Esse contêiner de recursos é chamado de unidade do sistema de mensagens. Um namespace premium tem pelo menos uma unidade do sistema de mensagens. Você pode selecionar 1, 2, 4, 8 ou 16 unidades do sistema de mensagens para cada namespace Premium do Barramento de Serviço. Para saber mais, confira Sistema de Mensagens Premium do Barramento de Serviço.
Selecione Revisar + criar na parte inferior da página.
Na páginaRevisar + criar,revise as configurações e selecioneCriar.
Depois que a implantação do recurso for bem-sucedida, selecione Ir para o recurso na página de implantação.
Você verá a home page do namespace do barramento de serviço.
Na página Namespace do Barramento de Serviço, expanda Entidades no menu de navegação à esquerda e selecione Filas.
Na página Filas, selecione + Fila na barra de ferramentas.
Insira um nome para a fila e deixe os outros valores com os padrões.
Agora, selecione Criar.
Este início rápido mostra duas maneiras de se conectar ao Barramento de Serviço do Azure: sem senha e cadeia de conexão.
A primeira opção mostra como usar sua entidade de segurança no Microsoft Entra ID e o RBAC (controle de acesso baseado em função) para se conectar a um namespace do Barramento de Serviço. Você não precisa se preocupar em ter uma cadeia de conexão embutida no código, em um arquivo de configuração ou em um armazenamento seguro, como o Azure Key Vault.
A segunda opção mostra como usar uma cadeia de conexão para se conectar a um namespace do Barramento de Serviço. Se você for novo no Azure, poderá achar a opção de cadeia de conexão mais fácil de ser seguida. É recomendável usar a opção sem senha em aplicativos do mundo real e ambientes de produção. Para obter mais informações, confira Autenticação e autorização. Você também pode ler mais sobre a autenticação sem senha na página de visão geral.
Ao desenvolver localmente, a conta de usuário que se conecta ao Barramento de Serviço do Azure deve ter as permissões corretas. Você precisará da função Proprietário de Dados do Barramento de Serviço do Azure para enviar e receber mensagens. Para atribuir essa função a si mesmo, você precisará da função Administrador de acesso do usuário ou de outra função que inclua a ação Microsoft.Authorization/roleAssignments/write
. É possível atribuir funções RBAC do Azure a um usuário usando o portal do Azure, a CLI do Azure ou o Azure PowerShell. Saiba mais sobre os escopos disponíveis para atribuições de função na página de visão geral do escopo.
O exemplo a seguir atribui a função Azure Service Bus Data Owner
à sua conta de usuário, que fornece acesso completo aos recursos do Barramento de Serviço do Azure. Em um cenário real, siga o Princípio do Privilégio Mínimo para dar aos usuários apenas as permissões mínimas necessárias para um ambiente de produção mais seguro.
Para o Barramento de Serviço do Azure, o gerenciamento de namespaces e de todos os recursos relacionados por meio do portal do Azure e da API de gerenciamento de recursos do Azure já está protegido pelo modelo RBAC do Azure. O Azure fornece as funções internas do Azure abaixo para autorizar o acesso a um namespace do Barramento de Serviço:
Se você quiser criar uma função personalizada, consulte Direitos exigidos para operações do Barramento de Serviço.
Adicione seu nome de usuário do Microsoft Entra à função de Proprietário de Dados do Barramento de Serviço do Azure no nível do namespace do Barramento de Serviço. Ele permitirá que um aplicativo em execução no contexto de sua conta de usuário envie mensagens para uma fila ou um tópico e receba mensagens de uma fila ou assinatura de um tópico.
Importante
Na maioria dos casos, levará um ou dois minutos para a atribuição de função se propagar no Azure. Em casos raros, poderá levar até oito minutos. Se você receber erros de autenticação ao executar o código pela primeira vez, aguarde alguns instantes e tente novamente.
Se você a página Namespace do Barramento de Serviço não estiver aberta no portal do Azure, localize o namespace do Barramento de Serviço usando a barra de pesquisa principal ou a navegação à esquerda.
Na página de visão geral, selecione Controle de acesso (IAM) no menu à esquerda.
Na página Controle de acesso (IAM), selecione a guia Atribuições de função.
Selecione + Adicionar no menu superior e, em seguida, Adicionar atribuição de função no menu suspenso resultante.
Use a caixa de pesquisa para filtrar os resultados para a função desejada. Neste exemplo, pesquise Azure Service Bus Data Owner
e selecione o resultado correspondente. Em seguida, escolha Avançar.
Em Atribuir acesso a, selecione Usuário, grupo ou entidade de serviço e, em seguida, selecione + Selecionar membros.
No diálogo, pesquise seu nome de usuário do Microsoft Entra (geralmente seu endereço de email user@domain) e escolha Selecionar na parte inferior do diálogo.
Selecione Revisar + atribuir para ir para a página final e, em seguida, Revisar + atribuir novamente para concluir o processo.
Para instalar os pacotes Python necessários para o Barramento de Serviço, abra um prompt de comando que tenha o Python no caminho e altere o diretório para a pasta em que você deseja colocar os exemplos.
Instale os seguintes pacotes:
pip install azure-servicebus
pip install azure-identity
pip install aiohttp
O código de exemplo a seguir mostra como enviar uma mensagem para uma fila. Abra seu editor favorito, como o Visual Studio Code, crie um arquivo send.py e adicione o código a seguir a ele.
Adicione instruções de importação.
import asyncio
from azure.servicebus.aio import ServiceBusClient
from azure.servicebus import ServiceBusMessage
from azure.identity.aio import DefaultAzureCredential
Adicione constantes e defina uma credencial.
FULLY_QUALIFIED_NAMESPACE = "FULLY_QUALIFIED_NAMESPACE"
QUEUE_NAME = "QUEUE_NAME"
credential = DefaultAzureCredential()
Importante
FULLY_QUALIFIED_NAMESPACE
pelo namespace totalmente qualificado do Barramento de Serviço.QUEUE_NAME
pelo nome da fila.Adicione um método para enviar uma mensagem individual.
async def send_single_message(sender):
# Create a Service Bus message and send it to the queue
message = ServiceBusMessage("Single Message")
await sender.send_messages(message)
print("Sent a single message")
O remetente é um objeto que funciona como um cliente para a fila criada. Você o criará posteriormente e o enviará como um argumento para essa função.
Adicione um método para enviar uma lista de mensagens.
async def send_a_list_of_messages(sender):
# Create a list of messages and send it to the queue
messages = [ServiceBusMessage("Message in list") for _ in range(5)]
await sender.send_messages(messages)
print("Sent a list of 5 messages")
Adicione um método para enviar um lote de mensagens.
async def send_batch_message(sender):
# Create a batch of messages
async with sender:
batch_message = await sender.create_message_batch()
for _ in range(10):
try:
# Add a message to the batch
batch_message.add_message(ServiceBusMessage("Message inside a ServiceBusMessageBatch"))
except ValueError:
# ServiceBusMessageBatch object reaches max_size.
# New ServiceBusMessageBatch object can be created here to send more data.
break
# Send the batch of messages to the queue
await sender.send_messages(batch_message)
print("Sent a batch of 10 messages")
Crie um cliente do Barramento de Serviço e, depois, um objeto de remetente da fila para enviar mensagens.
async def run():
# create a Service Bus client using the credential
async with ServiceBusClient(
fully_qualified_namespace=FULLY_QUALIFIED_NAMESPACE,
credential=credential,
logging_enable=True) as servicebus_client:
# get a Queue Sender object to send messages to the queue
sender = servicebus_client.get_queue_sender(queue_name=QUEUE_NAME)
async with sender:
# send one message
await send_single_message(sender)
# send a list of messages
await send_a_list_of_messages(sender)
# send a batch of messages
await send_batch_message(sender)
# Close credential when no longer needed.
await credential.close()
Chame o método run
e imprima uma mensagem.
asyncio.run(run())
print("Done sending messages")
print("-----------------------")
O código de exemplo a seguir mostra como receber uma mensagem de uma fila. O código mostrado recebe novas mensagens até que ele não receba nenhuma mensagem nova por cinco (max_wait_time
) segundos.
Abra seu editor favorito, como o Visual Studio Code, crie um arquivo recv.py e adicione o código a seguir a ele.
Como no exemplo de envio, adicione instruções import
, defina constantes que você deve substituir pelos seus valores e defina uma credencial.
import asyncio
from azure.servicebus.aio import ServiceBusClient
from azure.identity.aio import DefaultAzureCredential
FULLY_QUALIFIED_NAMESPACE = "FULLY_QUALIFIED_NAMESPACE"
QUEUE_NAME = "QUEUE_NAME"
credential = DefaultAzureCredential()
Crie um cliente do Barramento de Serviço e, depois, um objeto de remetente da fila para receber mensagens.
async def run():
# create a Service Bus client using the connection string
async with ServiceBusClient(
fully_qualified_namespace=FULLY_QUALIFIED_NAMESPACE,
credential=credential,
logging_enable=True) as servicebus_client:
async with servicebus_client:
# get the Queue Receiver object for the queue
receiver = servicebus_client.get_queue_receiver(queue_name=QUEUE_NAME)
async with receiver:
received_msgs = await receiver.receive_messages(max_wait_time=5, max_message_count=20)
for msg in received_msgs:
print("Received: " + str(msg))
# complete the message so that the message is removed from the queue
await receiver.complete_message(msg)
# Close credential when no longer needed.
await credential.close()
Chame o método run
.
asyncio.run(run())
Abra um prompt de comando que tenha o Python no caminho e execute o código para enviar e receber mensagens da fila.
python send.py; python recv.py
A seguinte saída deve ser exibida:
Sent a single message
Sent a list of 5 messages
Sent a batch of 10 messages
Done sending messages
-----------------------
Received: Single Message
Received: Message in list
Received: Message in list
Received: Message in list
Received: Message in list
Received: Message in list
Received: Message inside a ServiceBusMessageBatch
Received: Message inside a ServiceBusMessageBatch
Received: Message inside a ServiceBusMessageBatch
Received: Message inside a ServiceBusMessageBatch
Received: Message inside a ServiceBusMessageBatch
Received: Message inside a ServiceBusMessageBatch
Received: Message inside a ServiceBusMessageBatch
Received: Message inside a ServiceBusMessageBatch
Received: Message inside a ServiceBusMessageBatch
Received: Message inside a ServiceBusMessageBatch
No portal do Azure, acesse o namespace do Barramento de Serviço. Na página Visão geral, confirme se as contagens de mensagens de entrada e saída são 16. Se as contagens não forem exibidas, atualize a página depois de aguardar alguns minutos.
Selecione a fila nesta página Visão geral para acessar a página Fila do Barramento de Serviço. Você também poderá ver a contagem de mensagens de entrada e saída nessa página. Você também verá outras informações, como o tamanho atual da fila e a contagem de mensagens ativas.
Confira os seguintes exemplos e a documentação:
Eventos
31 de mar., 23 - 2 de abr., 23
O maior evento de aprendizado de Fabric, Power BI e SQL. 31 de março a 2 de abril. Use o código FABINSIDER para economizar $ 400.
Registre-se hoje mesmoTreinamento
Módulo
Descubra as filas de mensagens do Azure - Training
Saiba como integrar o Barramento de Serviço do Azure e o Armazenamento de Filas do Azure em sua solução, além de como enviar e receber mensagens usando o .NET.