Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo mostra como usar Azure Event Grid para enviar um evento para um tópico e usar Service Bus Queue como um manipulador Event para receber em um aplicativo Spring Boot.
O serviço Azure Event Grid é um serviço de distribuição de mensagens Pub Sub totalmente gerenciado altamente escalonável que oferece padrões flexíveis de consumo de mensagens usando os protocolos MQTT e HTTP.
Pré-requisitos
Uma assinatura Azure – criar uma gratuitamente.
Java Development Kit (JDK) versão 8 ou superior.
Apache Maven, versão 3.0 ou superior.
Uma instância do Tópico da Grade de Eventos. Se você não tiver um, consulte Criar um tópico personalizado ou um domínio em Azure Event Grid.
Uma instância de fila de Service Bus. Se você não tiver uma, consulte Criar uma fila no portal Azure.
Um aplicativo Spring Boot. Caso não tiver um, crie um projeto Maven com o Spring Initializr. Selecione Maven Project e selecione Java versão 8 ou superior.
Inscrever-se em um tópico personalizado
Siga as etapas a seguir para criar uma assinatura de evento para instruir o Event Grid a enviar eventos para a fila do Service Bus.
- No portal do Azure, navegue até a instância do Tópico da Grade de Eventos.
- Selecione Assinaturas de Evento na barra de ferramentas.
- Na página Criar Assinatura de Evento, insira um valor de nome para a assinatura do evento.
- Para Endpoint Type, selecione Service Bus Queue.
- Escolha Selecione um endpoint e selecione a instância da Fila do Service Bus que você criou anteriormente.
Enviar um evento pelo Azure Event Grid e receber na Fila do Azure Service Bus.
Com um recurso Azure Event Grid, você pode enviar um evento usando o Spring Cloud Azure Event Grid. Com um recurso Azure Service Bus Queue como manipulador de eventos, você pode receber o evento usando o Spring Cloud Azure Stream Binder para Service Bus.
Para instalar o módulo Spring Cloud Azure Event Grid Starter e o módulo do Spring Cloud Azure Stream Binder Service Bus, adicione as seguintes dependências ao arquivo pom.xml:
Spring Cloud Azure Bill of Materials (BOM):
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>7.1.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>Observação
Se você estiver usando o Spring Boot 4.0.x, defina a
spring-cloud-azure-dependenciesversão como7.1.0.Se você estiver usando o Spring Boot 3.5.x, defina a
spring-cloud-azure-dependenciesversão como6.1.0.Se você estiver usando o Spring Boot 3.1.x-3.5.x, defina a
spring-cloud-azure-dependenciesversão como5.25.0.Se você estiver usando o Spring Boot 2.x, certifique-se de definir a
spring-cloud-azure-dependenciesversão como4.20.0.Esta lista de materiais (BOM) deve ser configurada na
<dependencyManagement>seção do arquivo pom.xml. Isso garante que todas as dependências de Azure do Spring Cloud estejam usando a mesma versão.Para obter mais informações sobre a versão usada para este BOM, consulte Which Version of Spring Cloud Azure Should I Use.
o componente Spring Cloud Azure Event Grid Starter:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-eventgrid</artifactId> </dependency>O artefato Service Bus do Spring Cloud Azure Stream Binder:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-stream-binder-servicebus</artifactId> </dependency>
Codificar o aplicativo
Use as etapas a seguir para configurar seu aplicativo para enviar um evento usando o Event Grid e recebê-lo usando a Fila do Service Bus.
Configure credenciais de Azure Event Grid e Service Bus no arquivo de configuração application.yaml, 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: falseObservação
A Microsoft recomenda usar o fluxo de autenticação mais seguro disponível. O fluxo de autenticação descrito neste procedimento, como bancos de dados, caches, mensagens ou serviços de IA, requer um grau muito alto de confiança no aplicativo e traz riscos não presentes em outros fluxos. Use esse fluxo somente quando opções mais seguras, como identidades gerenciadas para conexões sem senha ou sem chave, não forem viáveis. Para operações de computador local, prefira identidades de usuário para conexões sem senha ou sem chave.
Edite o arquivo de classe de inicialização para mostrar o conteúdo a seguir. Esse código gera conclusõ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()); } }Inicie o aplicativo. Após a inicialização, o aplicativo produz logs semelhantes ao exemplo seguinte:
New event published: '"FirstName: John, LastName: James"' ... New event received: '"FirstName: John, LastName: James"'
Implantar em Azure Spring Apps
Agora que você tem o aplicativo Spring Boot em execução localmente, é hora de movê-lo para produção. Azure Spring Apps facilita a implantação de aplicativos Spring Boot para Azure sem alterações de código. O serviço gerencia a infraestrutura dos aplicativos do Spring para que os desenvolvedores possam se concentrar no código. Azure Spring Apps fornece gerenciamento de ciclo de vida usando monitoramento e diagnóstico abrangentes, gerenciamento de configuração, descoberta de serviço, integração de CI/CD, implantações azul-verde e muito mais. Para implantar seu aplicativo em Azure Spring Apps, consulte Deploy seu primeiro aplicativo para Azure Spring Apps.
Próximas etapas
Para saber mais sobre o Spring e Azure, continue para o Centro de documentação do Spring on Azure.