Partilhar via


Tutorial: Responder a eventos do Barramento de Serviço do Azure recebidos por meio da Grade de Eventos do Azure usando o Azure Functions

Neste tutorial, você aprenderá a responder a eventos do Barramento de Serviço do Azure recebidos por meio da Grade de Eventos do Azure usando o Azure Functions e os Aplicativos Lógicos do Azure.

Neste tutorial, irá aprender a:

  • Criar um espaço de nomes do Service Bus
  • Preparar um aplicativo de exemplo para enviar mensagens
  • Enviar mensagens para o tópico do Service Bus
  • Receber mensagens através do Logic Apps
  • Configurar uma função de teste no Azure
  • Ligar a função e o espaço de nomes através do Event Grid
  • Receber mensagens através das Funções do Azure

Pré-requisitos

Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.

Criar um espaço de nomes do Service Bus

Siga as instruções neste tutorial: Guia de início rápido: use o portal do Azure para criar um tópico do Service Bus e assinaturas para o tópico para executar as seguintes tarefas:

  • Crie um namespace premium do Service Bus.
  • Obtenha a cadeia de conexão.
  • Crie um tópico do Service Bus.
  • Crie uma assinatura para o tópico. Você precisa de apenas uma assinatura neste tutorial, portanto, não há necessidade de criar assinaturas S2 e S3.

Enviar mensagens para o tópico do Service Bus

Nesta etapa, você usa um aplicativo de exemplo para enviar mensagens para o tópico do Service Bus criado na etapa anterior.

  1. Clone o repositório azure-service-bus do GitHub ou baixe o arquivo zip e extraia arquivos dele.

  2. No Visual Studio, vá para a pasta \samples\DotNet\Azure.Messaging.ServiceBus\ServiceBusEventGridIntegrationV2 e abra o arquivo SBEventGridIntegration.sln .

  3. Na janela Gerenciador de Soluções, expanda o projeto MessageSender e selecione Program.cs.

  4. Substitua <SERVICE BUS NAMESPACE - CONNECTION STRING> pela cadeia de conexão para o namespace do Service Bus e <TOPIC NAME> pelo nome do tópico.

    const string ServiceBusConnectionString = "<SERVICE BUS NAMESPACE - CONNECTION STRING>";
    const string TopicName = "<TOPIC NAME>";
    
  5. Crie e execute o programa para enviar 5 mensagens de teste (const int numberOfMessages = 5;) para o tópico do Service Bus.

    Saída do aplicativo de console

Pré-requisitos adicionais

Instale o Visual Studio 2022 e inclua a carga de trabalho de desenvolvimento do Azure. Essa carga de trabalho inclui as Ferramentas de Função do Azure que você precisa para criar, criar e implantar projetos do Azure Functions no Visual Studio.

Implementar a aplicação de funções

Nota

Para saber mais sobre como criar e implantar um aplicativo do Azure Functions, consulte Desenvolver o Azure Functions usando o Visual Studio

  1. Abra ReceiveMessagesOnEvent.cs arquivo do projeto FunctionApp1 da solução SBEventGridIntegration.sln.

  2. Substitua <SERVICE BUS NAMESPACE - CONNECTION STRING> pela cadeia de conexão ao namespace do Service Bus. Ele deve ser o mesmo que você usou no arquivo Program.cs do projeto MessageSender na mesma solução.

  3. Clique com o botão direito do mouse em FunctionApp1 e selecione Publicar.

  4. Na página Publicar, selecione Iniciar. Essas etapas podem ser diferentes do que você vê, mas o processo de publicação deve ser semelhante.

  5. No assistente de publicação, na página Destino, selecione Azure para destino.

  6. Na página de destino específico, selecione Azure Function App (Windows).

  7. Na página Instância do Functions , selecione Criar novo.

    Captura de tela mostrando o botão Adicionar função da caixa de diálogo Visual Studio - Publicar.

  8. Na página Function App (Windows), siga estes passos:

    1. Insira um nome para o aplicativo de função.
    2. Selecione uma assinatura do Azure.
    3. Selecione um grupo de recursos existente ou crie um novo grupo de recursos. Para este tutorial, selecione o grupo de recursos que tem o namespace do Service Bus.
    4. Selecione um tipo de plano para o Serviço de Aplicativo.
    5. Selecione um local. Selecione o mesmo local que o namespace do Service Bus.
    6. Selecione um Armazenamento do Azure existente ou selecione Novo para criar uma nova conta de Armazenamento a ser usada pelo aplicativo Funções.
    7. Para Informações sobre aplicativos, selecione uma instância existente do Application Insights para associar à função do Azure ou crie uma.
    8. Selecione Criar para criar o aplicativo Funções.
  9. De volta à página Instância de funções do assistente de publicação , selecione Concluir.

  10. Na página Publicar no Visual Studio, selecione Publicar para publicar o aplicativo Funções no Azure.

  11. Na janela Saída, veja as mensagens de compilação e publicação e confirme se ambas foram bem-sucedidas.

    Se a publicação falhar com um problema de autenticação, verifique se a opção SCM Basic Auth Publishing está habilitada para o aplicativo Azure Functions.

    Captura de tela que mostra a opção SCM Basic Authentication Publishing habilitada.

  12. Agora, na página Publicar , na seção Hospedagem , selecione ... (reticências) e selecione Abrir no portal do Azure.

    Captura de tela que mostra a página Publicar no Visual Studio.

  13. No portal do Azure, na página Aplicativo de Função, selecione EventGridTriggerFunction na lista. Recomendamos que você use o gatilho de Grade de Eventos com o Azure Functions, pois ele tem alguns benefícios em relação ao uso do gatilho HTTP. Para obter detalhes, consulte Função do Azure como um manipulador de eventos para eventos de Grade de Eventos.

    Captura de tela mostrando a página Funções com a função Gatilho de Grade de Eventos.

  14. Na página Função do EventGridTriggerFunction, alterne para a guia Invocações.

    Captura de tela mostrando a página Invocação de uma função de Gatilho de Grade de Eventos.

    Mantenha esta página aberta num separador do seu browser. Você atualizará esta página para ver as invocações para essa função mais tarde.

Conecte a função e o namespace do Service Bus por meio da grade de eventos

Nesta seção, você une a função e o namespace do Service Bus usando o portal do Azure.

Para criar uma assinatura da Grade de Eventos do Azure, siga estas etapas:

  1. No portal do Azure, vá para o namespace do Service Bus e, no painel esquerdo, selecione Eventos. É aberta a janela do espaço de nomes, com duas subscrições do Event Grid no painel direito.

    Captura de tela que mostra a página Eventos de um namespace do Service Bus.

  2. Selecione + Subscrição de Eventos na barra de ferramentas.

  3. Na página Criar Assinatura de Evento , execute as seguintes etapas:

    1. Insira um nome para a assinatura.

    2. Insira um nome para o tópico do sistema. Os tópicos do sistema são tópicos criados para recursos do Azure, como a conta de Armazenamento do Azure e o Barramento de Serviço do Azure. Para saber mais sobre tópicos do sistema, consulte Visão geral dos tópicos do sistema.

    3. Selecione Função do Azure para Tipo de Ponto de Extremidade e escolha Configurar um ponto de extremidade.

      Captura de tela que mostra a página Criar Assinatura de Evento para um namespace do Service Bus.

    4. Na página Selecionar Função do Azure, selecione a assinatura, o grupo de recursos, o aplicativo de função, o slot e a função e selecione Confirmar seleção.

      Captura de tela que mostra a seleção de um ponto de extremidade de função do Azure.

    5. Na página Criar Assinatura de Evento, alterne para a guia Filtros e execute as seguintes tarefas:

      1. Selecione Ativar filtragem de assunto

      2. Digite o nome da assinatura para o tópico do Service Bus que você criou anteriormente. Na captura de tela a seguir, o nome da assinatura é mysub.

      3. Selecione o botão Criar.

        Captura de ecrã que mostra a página Filtros de uma subscrição de evento.

  4. Mude para o separador Subscrições de Eventos da página Eventos e confirme que vê a subscrição do evento na lista.

    Captura de tela que mostra as assinaturas de evento para o namespace do Service Bus.

Monitorar o aplicativo Funções

As mensagens enviadas para o tópico do Service Bus anteriormente são encaminhadas para a assinatura (S1). A Grade de Eventos encaminha as mensagens na assinatura da função do Azure. Nesta etapa do tutorial, você confirma que a função foi invocada e visualiza as mensagens informativas registradas.

  1. Na página do seu aplicativo de função do Azure, alterne para a guia Invocações se ele ainda não estiver ativo. Você verá uma entrada para cada mensagem postada no tópico do Service Bus. Se não os vir, atualize a página depois de aguardar alguns minutos.

    Captura de tela que mostra a página Invocações para a função após invocações.

  2. Selecione a invocação na lista para ver os detalhes.

    Captura de tela que mostra os detalhes de invocação da função.

    Também pode utilizar o separador Registos para ver as informações de registo à medida que as mensagens são enviadas. Pode haver algum atraso, então dê alguns minutos para ver as mensagens registradas.

    Captura de ecrã que mostra o separador Registos para uma função do Azure.

Resolver problemas

Se você não vir nenhuma chamada de função depois de esperar e atualizar por algum tempo, siga estas etapas:

  1. Confirme se as mensagens chegaram ao tópico do Service Bus. Consulte o contador de mensagens de entrada na página Tópico do Service Bus. Nesse caso, executei o aplicativo MessageSender duas vezes, então vejo 10 mensagens (5 mensagens para cada execução).

    Captura de tela que mostra a página Tópico do Service Bus - mensagens de entrada.

  2. Confirme se não há mensagens ativas na assinatura do Service Bus. Se você não vir nenhum evento nesta página, verifique se a página Assinatura do Service Bus não mostra nenhuma contagem de mensagens ativas. Se o número desse contador for maior que zero, as mensagens na assinatura não serão encaminhadas para a função manipulador (manipulador de assinatura de eventos) por algum motivo. Verifique se você configurou a assinatura do evento corretamente.

    Captura de tela que mostra a contagem de mensagens ativas na assinatura do Service Bus.

  3. Você também vê eventos entregues na página Eventos do namespace do Service Bus.

    Captura de tela que mostra a contagem de eventos entregues.

  4. Você também pode ver que os eventos são entregues na página Assinatura do evento. Pode aceder a esta página selecionando a subscrição do evento na página Eventos .

    Captura de ecrã que mostra a página Subscrição de eventos - eventos entregues.