Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo mostra-lhe como usar Azure Event Grid para enviar um evento a um tópico e usar Service Bus Queue como um Event Handler para receber numa aplicação Spring Boot.
O serviço Azure Event Grid é um serviço de distribuição de mensagens Pub Sub altamente escalável e totalmente gerido que oferece padrões flexíveis de consumo de mensagens utilizando os protocolos MQTT e HTTP.
Pré-requisitos
Uma subscrição do Azure - crie uma gratuitamente.
Kit de Desenvolvimento Java (JDK) versão 8 ou superior.
Apache Maven, versão 3.0 ou superior.
Uma instância de um Tópico de Event Grid. Se não tiveres nenhum, vê Criar um tópico personalizado ou um domínio em Azure Event Grid.
Uma instância de fila de Service Bus. Se não tiveres um, vê Cria uma fila no portal Azure.
Um aplicativo Spring Boot. Se você não tiver um, crie um projeto Maven com o Spring Initializr. Certifique-se de selecionar Maven Project e selecionar Java versão 8 ou superior.
Subscrever tópico personalizado
Use os seguintes passos para criar uma subscrição de evento e informar a Grade de Eventos para enviar eventos para a Service Bus Queue:
- No portal do Azure, navegue até à sua instância de Tópicos do Event Grid.
- Selecione Subscrições de Eventos na barra de ferramentas.
- Na página Criar Subscrição de Evento, introduza um nome para a subscrição do evento.
- Para Tipo de Endpoint, selecione Service Bus Queue.
- Escolhe Seleciona um endpoint e depois seleciona a instância Service Bus Queue que criaste anteriormente.
Envie um evento pelo Azure Event Grid e receba pelo Azure Service Bus Queue
Com um recurso do Azure Event Grid, pode enviar um evento usando o Spring Cloud Azure Event Grid. Com um recurso Azure Service Bus Queue como gestor de eventos, pode 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 ficheiro pom.xml:
A Lista de Materiais Spring Cloud Azure (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 estiveres a usar o Spring Boot 4.0.x, certifica-te de definir a
spring-cloud-azure-dependenciesversão para7.1.0.Se estiveres a usar o Spring Boot 3.5.x, certifica-te de definir a
spring-cloud-azure-dependenciesversão para6.1.0.Se estiveres a usar o Spring Boot 3.1.x-3.5.x, certifica-te de definir a
spring-cloud-azure-dependenciesversão para5.25.0.Se você estiver usando o Spring Boot 2.x, certifique-se de definir a versão
spring-cloud-azure-dependenciescomo4.20.0.Esta lista de materiais (BOM) deve ser configurada na seção
<dependencyManagement>do seu arquivo pom.xml. Isto garante que todas as dependências do Spring Cloud Azure usam a mesma versão.Para mais informações sobre a versão usada nesta BOM, consulte Qual Versão do Spring Cloud Azure Devo Usar.
O artefato Spring Cloud Azure Event Grid Starter:
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-eventgrid</artifactId> </dependency>O artefato 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 os seguintes passos para configurar a sua aplicação para enviar um evento usando a Grade de Eventos e receber através da Service Bus Queue.
Configure as credenciais do Azure Event Grid e do Service Bus no ficheiro de configuração application.yaml, como mostrado no seguinte exemplo:
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 o uso do fluxo de autenticação mais seguro disponível. O fluxo de autenticação descrito neste procedimento, como para 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 máquina 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 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()); } }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"'
Desdobrar para o Azure Spring Apps
Agora que você tem o aplicativo Spring Boot em execução localmente, é hora de movê-lo para a produção. Azure Spring Apps facilita a implementação de aplicações Spring Boot para Azure sem quaisquer 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 oferece gestão do ciclo de vida através de monitorização e diagnóstico abrangentes, gestão de configuração, descoberta de serviços, integração CI/CD, implementações azul-verde e muito mais. Para implementar a sua aplicação para Azure Spring Apps, consulte Implante a sua primeira aplicação para Azure Spring Apps.
Próximos passos
Para saber mais sobre Spring e Azure, continue para o centro de documentação Spring on Azure.