Usar a Grade de Eventos do Azure na Primavera
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 para receber em um aplicativo de inicialização Spring.
O serviço de Grade de Eventos do Azure é um serviço de distribuição de mensagens Pub Sub altamente escalonável e totalmente gerenciado que oferece padrões flexíveis de consumo de mensagens usando os protocolos MQTT e HTTP.
Pré-requisitos
Uma assinatura do Azure – crie uma gratuitamente.
Java Development Kit (JDK) versão 8 ou superior.
Apache Maven, versão 3.0 ou superior.
Uma instância de tópico de grade de eventos. Se você não tiver um, consulte Criar um tópico personalizado ou um domínio na Grade de Eventos do Azure.
Uma instância da Fila do Barramento de Serviço. Se você não tiver um, consulte Criar uma fila no portal do Azure.
Um aplicativo Spring Boot. Caso não tiver um, crie um projeto Maven com o Spring Initializr. Certifique-se de selecionar Projeto Maven e selecione Java versão 8 ou superior.
Inscrever-se em um tópico personalizado
Use as etapas a seguir para criar uma assinatura de evento para instruir a Grade de Eventos a enviar eventos para a Fila do Barramento de Serviço:
- No portal do Azure, navegue até sua instância de Tópico da Grade de Eventos.
- Selecione Assinaturas de eventos na barra de ferramentas.
- Na página Criar Assinatura de Evento, insira um valor de nome para a assinatura do evento.
- Em Tipo de Ponto de Extremidade, selecione Fila do Barramento de Serviço.
- Escolha Selecionar um ponto de extremidade e, em seguida, selecione a instância da Fila do Barramento de Serviço criada anteriormente.
Enviar um evento pela Grade de Eventos do Azure e receber pela Fila do Barramento de Serviço do Azure
Com um recurso de Grade de Eventos do Azure, você pode enviar um evento usando a Grade de Eventos do Spring Cloud Azure. Com um recurso de Fila do Barramento de Serviço do Azure como um manipulador de eventos, você 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 arquivo pom.xml :
A lista de materiais do Spring Cloud Azure (BOM):
<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
spring-cloud-azure-dependencies
versão como4.19.0
. Esta lista de materiais (BOM) deve ser configurada<dependencyManagement>
na seção do 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 BOM, consulte Qual versão do Spring Cloud Azure devo usar.O artefato inicial da grade de eventos do Spring Cloud Azure:
<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>
Codificar 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 Barramento de Serviço.
Configure as credenciais da Grade de Eventos do Azure e do Barramento de Serviço 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: false
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 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. Os Aplicativos Spring do Azure facilitam a implantação de aplicativos Spring Boot no 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. O Azure Spring Apps fornece gerenciamento de ciclo de vida usando monitoramento e diagnóstico abrangentes, gerenciamento de configuração, descoberta de serviços, integração de CI/CD, implantações em “blue-green” e muito mais. Para implantar seu aplicativo nos Aplicativos Spring do Azure, consulte Implantar seu primeiro aplicativo nos Aplicativos Spring do Azure.
Próximas etapas
Para saber mais sobre o Spring e o Azure, continue no Spring no Centro de Documentação do Azure.