Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment utiliser Azure Event Grid pour envoyer un événement à un sujet et utiliser Service Bus Queue en tant que Event Handler afin de 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.
Conditions préalables
Un abonnement Azure - créez-en un gratuitement.
Java Kit de développement (JDK) version 8 ou ultérieure.
Apache Maven, version 3.0 ou supérieure.
Une instance de sujet Event Grid. Si vous n'en avez pas, consultez Créer une rubrique personnalisée ou un domaine dans Azure Event Grid.
Une instance de file d'attente de 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électionnez 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 Abonnement aux événements (Event Subscriptions) dans la barre d’outils.
- Sur la page Créer un abonnement aux événements (Create Event Subscription), saisissez une valeur pour name pour l’abonnement aux événements.
- Pour Endpoint Type, sélectionnez Service Bus File d’attente.
- Choisissez Select an endpoint 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 Service Bus Spring Cloud Azure Stream Binder, ajoutez les dépendances suivantes à votre fichier pom.xml :
Le Bill of Materials (BOM) de Spring Cloud Azure :
<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>Remarque
Si vous utilisez Spring Boot 4.0.x, veillez à mettre la
spring-cloud-azure-dependenciesversion à7.1.0.Si vous utilisez Spring Boot 3.5.x, assurez-vous de définir la version
spring-cloud-azure-dependenciesà6.1.0.Si vous utilisez Spring Boot 3.1.x-3.5.x, veillez à définir la version
spring-cloud-azure-dependencies5.25.0.Si vous utilisez Spring Boot 2.x, assurez-vous de définir la version
spring-cloud-azure-dependenciessur4.20.0.Cette liste de matériel (BOM) doit être configurée dans la section
<dependencyManagement>de votre fichier pom.xml. Cela garantit que toutes les dépendances spring Cloud Azure utilisent la même version.Pour plus d’informations sur la version utilisée pour ce boM, consultez Which Version of Spring Cloud Azure Should I Use.
Artefact pour Spring Cloud Azure Event Grid Starter :
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-eventgrid</artifactId> </dependency>Artefact du Spring Cloud Azure Stream Binder pour 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 pour envoyer un événement avec Event Grid et le réceptionner avec Service Bus Queue.
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: falseRemarque
Microsoft recommande d’utiliser le flux d’authentification le plus sécurisé disponible. Le flux d’authentification décrit dans cette procédure, par exemple pour les bases de données, les caches, la messagerie ou les services IA, nécessite un niveau de confiance très élevé dans l’application et comporte des risques non présents dans d’autres flux. Utilisez ce flux uniquement lorsque des options plus sécurisées, telles que les identités managées pour les connexions sans mot de passe ou sans clé, ne sont pas viables. Pour les opérations d’ordinateur local, préférez les identités utilisateur pour les connexions sans mot de passe ou sans clé.
Modifiez le fichier de classe de démarrage pour afficher le contenu suivant. Ce code génère des complétions.
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()); } }Démarrez l’application. Après le lancement, l’application produit des logs 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 du code. Le service gère l’infrastructure des applications Spring afin que les développeurs puissent se concentrer sur leur code. Azure Spring Apps fournit une gestion du cycle de vie à l’aide de la supervision et des diagnostics complets, de la gestion de la configuration, de la découverte de services, de l’intégration CI/CD, des déploiements bleu-vert, etc. Pour déployer votre application sur Azure Spring Apps, consultez Deploy your first application to Azure Spring Apps.
Étapes suivantes
Pour en savoir plus sur Spring et Azure, passez au centre de documentation Spring on Azure.