Utiliser Azure Event Grid dans Spring
Cet article explique comment utiliser Azure Event Grid pour envoyer un événement à une rubrique et utiliser la file d’attente Service Bus en tant que gestionnaire d’événements pour recevoir dans une application Spring Boot.
Le service Azure Event Grid est un service de distribution de sous-messages pub hautement évolutif et entièrement managé qui offre des modèles de consommation de messages flexibles à l’aide des protocoles MQTT et HTTP.
Prérequis
Un abonnement Azure - En créer un gratuitement
Kit de développement Java (JDK) version 8 ou ultérieure.
Apache Maven, version 3.0 ou ultérieure.
Instance de rubrique Event Grid. Si vous n’en avez pas, consultez Créer une rubrique personnalisée ou un domaine dans Azure Event Grid.
Instance de file d’attente Service Bus. Si vous n’en avez pas, consultez Créer une file d’attente dans le Portail Azure.
Une application Spring Boot. Si vous n’en avez pas, créez un projet Maven avec Spring Initializr. Veillez à sélectionner Maven Project et à sélectionner Java version 8 ou ultérieure.
S’abonner à une rubrique personnalisée
Pour créer un abonnement aux événements, procédez comme suit pour indiquer à Event Grid d’envoyer des événements à la file d’attente Service Bus :
- Dans le Portail Azure, accédez à votre instance de rubrique Event Grid.
- Sélectionnez Abonnements aux événements dans la barre d’outils.
- Dans la page Créer un abonnement aux événements, entrez une valeur de nom pour l’abonnement à l’événement.
- Pour le type de point de terminaison, sélectionnez File d’attente Service Bus.
- Sélectionnez un point de terminaison , puis sélectionnez l’instance de file d’attente Service Bus que vous avez créée précédemment.
Envoyer un événement par Azure Event Grid et recevoir par file d’attente Azure Service Bus
Avec une ressource Azure Event Grid, vous pouvez envoyer un événement à l’aide de Spring Cloud Azure Event Grid. Avec une ressource file d’attente Azure Service Bus en tant que gestionnaire d’événements, vous pouvez recevoir l’événement à l’aide de Spring Cloud Azure Stream Binder pour Service Bus.
Pour installer le module Spring Cloud Azure Event Grid Starter et le module Spring Cloud Azure Stream Binder Service Bus, ajoutez les dépendances suivantes à votre fichier pom.xml :
The Spring Cloud Azure Bill of Materials (BOM) :
<dependencyManagement> <dependencies> <dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-dependencies</artifactId> <version>5.17.1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
Remarque
Si vous utilisez Spring Boot 2.x, veillez à définir la
spring-cloud-azure-dependencies
version4.19.0
sur . Cette facture de matériel (BOM) doit être configurée dans la<dependencyManagement>
section de votre fichier pom.xml . Cela garantit que toutes les dépendances Azure Spring Cloud utilisent la même version. Pour plus d’informations sur la version utilisée pour ce boM, consultez La version de Spring Cloud Azure à utiliser.Artefact Spring Cloud Azure Event Grid Starter :
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-eventgrid</artifactId> </dependency>
Artefact Spring Cloud Azure Stream Binder Service Bus :
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-stream-binder-servicebus</artifactId> </dependency>
Coder l’application
Procédez comme suit pour configurer votre application afin d’envoyer un événement à l’aide d’Event Grid et de recevoir à l’aide de la file d’attente Service Bus.
Configurez les informations d’identification Azure Event Grid et Service Bus dans le fichier de configuration application.yaml , comme illustré dans l’exemple suivant :
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
Modifiez le fichier de classe de démarrage pour afficher le contenu suivant. Ce code génère des achèvements.
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()); } }
Lancez l’application. Après le lancement, l’application produit des journaux similaires à l’exemple suivant :
New event published: '"FirstName: John, LastName: James"' ... New event received: '"FirstName: John, LastName: James"'
Déployer sur Azure Spring Apps
Maintenant que vous disposez de l’application Spring Boot en cours d’exécution localement, il est temps de le déplacer en production. Azure Spring Apps facilite le déploiement d’applications Spring Boot sur Azure sans aucune modification de code. Le service gère l’infrastructure des applications Spring, ce qui permet aux développeurs de se concentrer sur leur code. Azure Spring Apps assure la gestion du cycle de vie en utilisant des outils complets, tels que la supervision et les diagnostics, la gestion des configurations, la découverte de services, l’intégration CI/CD, les déploiements bleus-verts, etc. Pour déployer votre application sur Azure Spring Apps, consultez Déployer votre première application sur Azure Spring Apps.
Étapes suivantes
Pour en savoir plus sur Spring et Azure, poursuivez vers le centre de documentation Spring sur Azure.