Partilhar via


Usar Grade de Eventos do Azure no Spring Framework

Este artigo mostra como usar a Grade de Eventos do Azure para enviar um evento para um tópico e usar a Fila do Barramento de Serviço como um manipulador de eventos receber em um aplicativo Spring Boot.

O serviço de Grade de Eventos do Azure é um serviço de distribuição de mensagens Pub Sub altamente escalável e totalmente gerenciado que oferece padrões flexíveis de consumo de mensagens usando os protocolos MQTT e HTTP.

Pré-requisitos

Subscrever tópico personalizado

Use as seguintes etapas para criar uma assinatura de evento para informar a Grade de Eventos para enviar eventos para a Fila do Service Bus:

  1. No portal do Azure, navegue até a sua instância de tópico da grade de eventos.
  2. Selecione Subscrições de Eventos na barra de ferramentas.
  3. Na página Criar Subscrição de Evento, introduza um nome valor para a subscrição do evento.
  4. Para Tipo de Ponto de Extremidade, selecione Fila do Service Bus.
  5. Escolha Selecionar o ponto de extremidade e, em seguida, selecione a instância da Fila do Service Bus que criou anteriormente.

Enviar um evento através do Azure Event Grid e receber através da Fila do Azure Service Bus.

Com um recurso de Grade de Eventos do Azure, você pode enviar um evento usando a Grade de Eventos do Azure do Spring Cloud. Com um recurso Azure Service Bus Queue como manipulador de eventos, podes receber o evento usando o Spring Cloud Azure Stream Binder for Service Bus.

Para instalar o módulo Spring Cloud Azure Event Grid Starter e o módulo Spring Cloud Azure Stream Binder Service Bus, adicione as seguintes dependências ao seu arquivo pom.xml:

  • A lista de materiais (BOM) do Azure Spring Cloud:

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.azure.spring</groupId>
          <artifactId>spring-cloud-azure-dependencies</artifactId>
          <version>5.19.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    

    Observação

    Se você estiver usando o Spring Boot 2.x, certifique-se de definir a versão spring-cloud-azure-dependencies como 4.19.0. Esta lista de materiais (BOM) deve ser configurada na seção <dependencyManagement> do seu arquivo pom.xml. Isso garante que todas as dependências do Spring Cloud Azure estejam usando a mesma versão. Para obter mais informações sobre a versão usada para esta lista técnica, consulte Qual versão do Spring Cloud Azure devo utilizar.

  • O artefato do Spring Cloud Azure Event Grid Starter:

    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-starter-eventgrid</artifactId>
    </dependency>
    
  • O artefato do Spring Cloud Azure Stream Binder Service Bus:

    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-stream-binder-servicebus</artifactId>
    </dependency>
    

Codifique o aplicativo

Use as etapas a seguir para configurar seu aplicativo para enviar um evento usando a Grade de Eventos e receber usando a Fila do Service Bus.

  1. Configure as credenciais da Grade de Eventos do Azure e do Barramento de Serviço no arquivo de configuração application.yaml do , conforme mostrado no exemplo a seguir:

    spring:
      cloud:
        azure:
          eventgrid:
            endpoint: ${AZURE_EVENTGRID_ENDPOINT}
            key: ${AZURE_EVENTGRID_KEY}
          servicebus:
            connection-string: ${AZURE_SERVICEBUS_CONNECTION_STRING}
        function:
          definition: consume
        stream:
          bindings:
            consume-in-0:
              destination: ${AZURE_SERVICEBUS_QUEUE_NAME}
          servicebus:
            bindings:
              consume-in-0:
                consumer:
                  auto-complete: false
    
  2. Edite o arquivo de classe de inicialização para mostrar o seguinte conteúdo. Este código gera completações.

    import com.azure.core.util.BinaryData;
    import com.azure.messaging.eventgrid.EventGridEvent;
    import com.azure.messaging.eventgrid.EventGridPublisherClient;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.context.annotation.Bean;
    import org.springframework.messaging.Message;
    
    import java.util.List;
    import java.util.function.Consumer;
    
    @SpringBootApplication
    public class EventGridSampleApplication implements CommandLineRunner {
    
        private static final Logger LOGGER = LoggerFactory.getLogger(EventGridSampleApplication.class);
    
        @Autowired
        EventGridPublisherClient<EventGridEvent> client;
    
        public static void main(String[] args) {
            SpringApplication.run(EventGridSampleApplication.class, args);
        }
    
        @Bean
        public Consumer<Message<String>> consume() {
            return message -> {
                List<EventGridEvent> eventData = EventGridEvent.fromString(message.getPayload());
                eventData.forEach(event -> {
                    LOGGER.info("New event received: '{}'", event.getData());
                });
            };
        }
    
        @Override
        public void run(String... args) throws Exception {
            String str = "FirstName: John, LastName: James";
            EventGridEvent event = new EventGridEvent("A user is created", "User.Created.Text", BinaryData.fromObject(str), "0.1");
    
            client.sendEvent(event);
            LOGGER.info("New event published: '{}'", event.getData());
        }
    }
    
    
  3. Inicie o aplicativo. Após a inicialização, o aplicativo produz logs semelhantes ao exemplo a seguir:

    New event published: '"FirstName: John, LastName: James"'
    ...
    New event received: '"FirstName: John, LastName: James"'
    

Implantar no Azure Spring Apps

Agora que você tem o aplicativo Spring Boot em execução localmente, é hora de movê-lo para a produção. do Azure Spring Apps facilita a implantação de aplicativos Spring Boot no Azure sem alterações de código. O serviço gerencia a infraestrutura dos aplicativos Spring para que os desenvolvedores possam se concentrar em seu código. O Azure Spring Apps fornece gerenciamento do ciclo de vida usando monitoramento e diagnóstico abrangentes, gerenciamento de configuração, descoberta de serviços, integração de CI/CD, implantações azul-verde e muito mais. Para implantar seu aplicativo no Azure Spring Apps, consulte Implantar seu primeiro aplicativo no Azure Spring Apps.

Próximos passos

Para saber mais sobre o Spring e o Azure, continue para o centro de documentação do Spring on Azure.