Cette page explique comment utiliser Pub/Sub dans des applications Java créées avec le framework Spring.
Spring Cloud GCP comporte plusieurs modules pour envoyer des messages aux sujets Pub/Sub et recevoir des messages depuis des abonnements Pub/Sub à l'aide du framework Spring. Vous pouvez utiliser ces modules indépendamment ou les combiner pour différents cas d'utilisation :
- Spring Cloud GCP Pub/Sub Starter vous permet d'envoyer et de recevoir des messages à l'aide de classes d'assistance et d'appeler la bibliothèque cliente Java pour Pub/Sub pour des scénarios plus avancés.
- Les adaptateurs de canal d'intégration Spring pour Pub/Sub vous permettent de connecter les canaux de message d'intégration de Spring à Pub/Sub.
- Spring Cloud Stream Binder pour Pub/Sub vous permet d'utiliser Pub/Sub comme middleware de messagerie dans les applications Spring Cloud Stream.
REMARQUE: La bibliothèque Spring Cloud GCP n'offre pas d'accès à AckReplyConsumerWithResponse, qui est un module requis pour implémenter la fonctionnalité "exactly-once" à l'aide de la bibliothèque cliente Java.
Avant de commencer
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
Set up a Google Cloud console project.
Click to:
- Create or select a project.
- Enable the Pub/Sub API for that project.
- Create a service account.
- Download a private key as JSON.
You can view and manage these resources at any time in the Google Cloud console.
-
Set the environment variable
GOOGLE_APPLICATION_CREDENTIALS
to the path of the JSON file that contains your credentials. This variable applies only to your current shell session, so if you open a new session, set the variable again. -
Set up a Google Cloud console project.
Click to:
- Create or select a project.
- Enable the Pub/Sub API for that project.
- Create a service account.
- Download a private key as JSON.
You can view and manage these resources at any time in the Google Cloud console.
-
Set the environment variable
GOOGLE_APPLICATION_CREDENTIALS
to the path of the JSON file that contains your credentials. This variable applies only to your current shell session, so if you open a new session, set the variable again. - Définissez la variable d'environnement
GOOGLE_CLOUD_PROJECT
sur l'ID de votre projet Google Cloud.
Utiliser Spring Cloud GCP Pub/Sub Starter
Le module Spring Cloud GCP Pub/Sub Starter installe la bibliothèque cliente Java pour Pub/Sub à l'aide du module Spring Cloud GCP Pub/Sub. Vous pouvez appeler l'API Pub/Sub à partir de votre application Spring à l'aide des classes fournies par Spring Cloud GCP Pub/Sub Starter, ou de la bibliothèque cliente Java pour Pub/Sub. Si vous utilisez les classes fournies par le module Spring Cloud GCP Pub/Sub Starter, vous pouvez remplacer les configurations Pub/Sub par défaut.
Installer le module
Pour installer le module Spring Cloud GCP Pub/Sub Starter, ajoutez les dépendances suivantes à votre fichier pom.xml
:
L'artefact Spring Cloud GCP Pub/Sub Starter :
Opérations compatibles
Le module Spring Cloud GCP de Pub/Sub inclut les classes suivantes :
PubSubAdmin
pour les opérations d'administration :- Créer des sujets et des abonnements.
- Obtenir des sujets et des abonnements.
- Répertorier les sujets et les abonnements.
- Supprimer des sujets et des abonnements.
- Obtenir et définir les délais de confirmation d'un abonnement.
PubSubTemplate
pour l'envoi et la réception des messages :- Publier des messages sur des sujets.
- Extraire de manière synchrone les messages des abonnements.
- Extraire de manière asynchrone les messages des abonnements.
- Confirmer des messages.
- Modifier les délais de confirmation.
- Convertir les messages Pub/Sub en POJO (Plain Old Java Objects, anciens objets Java standards).
Utiliser les adaptateurs de canaux d'intégration Spring
Si votre application Spring utilise des canaux de message d'intégration Spring, vous pouvez acheminer les messages entre vos canaux de message et Pub/Sub à l'aide d'adaptateurs de canaux.
- Un adaptateur de canal entrant transfère les messages d'un abonnement Pub/Sub vers un canal de message.
- Un adaptateur de canal sortant publie les messages d'un canal de message vers un sujet Pub/Sub.
Installer les modules
Pour installer des modules pour les adaptateurs de canaux d'intégration Spring, ajoutez les éléments suivants à votre fichier pom.xml
:
Les artefacts Spring Cloud Pub/Sub Starter et Spring Integration Core :
Recevoir des messages à partir de Pub/Sub
Pour recevoir des messages d'un abonnement Pub/Sub dans votre application Spring, utilisez un adaptateur de canal entrant. L'adaptateur de canal entrant convertit les messages Pub/Sub entrants en POJO, puis transfère ces POJO à un canal de message.
L'exemple ci-dessus utilise les beans Spring et la ressource Pub/Sub suivants:
- Un bean de canal de messagerie appelé
inputMessageChannel
. - Un bean d'adaptateur de canal entrant, nommé
inboundChannelAdapter
et de typePubSubInboundChannelAdapter
. - Un ID d'abonnement Pub/Sub nommé
sub-one
.
Le bean inboundChannelAdapter
récupère de manière asynchrone les messages de sub-one
à l'aide d'un modèle PubSubTemplate
et les envoie à inputMessageChannel
.
inboundChannelAdapter
définit le mode de confirmation sur MANUAL
afin que l'application puisse confirmer la réception des messages après leur traitement. Le mode d'accusé de réception par défaut des types PubSubInboundChannelAdapter
est AUTO
.
Le bean ServiceActivator
messageReceiver
enregistre chaque message reçu dans inputMessageChannel
à la sortie standard puis accuse réception du message.
Publier des messages dans Pub/Sub
Pour publier des messages depuis un canal de message vers un sujet Pub/Sub, utilisez un adaptateur de canal sortant. L'adaptateur de canal sortant convertit les POJO en messages Pub/Sub, puis envoie les messages à un sujet Pub/Sub.
L'exemple ci-dessus utilise les beans Spring et la ressource Pub/Sub suivants :
- Un bean de canal de messagerie appelé
inputMessageChannel
. - Un adaptateur de canal sortant nommé
messageSender
du typePubSubMessageHandler
. - Un ID de sujet Pub/Sub nommé
topic-two
.
Le bean ServiceActivator
applique la logique dans messageSender
à chaque message du bean inputMessageChannel
.
Le PubSubMessageHandler
dans messageSender
publie les messages dans le bean inputMessageChannel
à l'aide d'un modèle PubSubTemplate
. Le PubSubMessageHandler
publie les messages sur le sujet Pub/Sub topic-two
.
Utiliser Spring Cloud Stream Binder
Pour appeler l'API Pub/Sub dans une application Spring Cloud Stream, utilisez le module Spring Cloud GCP Pub/Sub Stream Binder.
Installer le module
Pour installer le module Spring Cloud Stream Binder, ajoutez les éléments suivants à votre fichier pom.xml
:
L'artefact Spring Cloud Stream Binder :
Recevoir des messages à partir de Pub/Sub
Pour utiliser votre application en tant que récepteur d'événements, configurez le binder d'entrée en spécifiant les éléments suivants :
Un bean
Consumer
qui définit la logique de traitement des messages. Par exemple, le beanConsumer
suivant est nomméreceiveMessageFromTopicTwo
:Un ID de sujet Pub/Sub dans le fichier de configuration
application.properties
. Par exemple, le fichier de configuration suivant utilise un ID de sujet Pub/Sub nommétopic-two
:
L'exemple de code reçoit les messages de Pub/Sub en effectuant les opérations suivantes :
- Il recherche l'ID du sujet Pub/Sub
topic-two
dans la destination de la liaison d'entrée dansapplication.properties
. - Il crée un abonnement Pub/Sub sur
topic-two
. - Il utilise le nom de liaison
receiveMessageFromTopicTwo-in-0
pour rechercher le beanConsumer
nomméreceiveMessageFromTopicTwo
. - Il affiche les messages entrants dans la sortie standard et les confirme automatiquement.
Publier des messages dans Pub/Sub
Pour utiliser votre application en tant que récepteur d'événements, configurez le binder de sortie en spécifiant les éléments suivants :
Un bean
Supplier
qui définit l'origine des messages au sein de votre application. Par exemple, le beanSupplier
suivant est nommésendMessageToTopicOne
:Un ID de sujet Pub/Sub dans le fichier de configuration
application.properties
. Par exemple, le fichier de configuration suivant utilise un ID de sujet Pub/Sub nommétopic-one
:
L'exemple de code publie des messages dans Pub/Sub en effectuant les opérations suivantes :
- Il recherche l'ID du sujet Pub/Sub
topic-one
dans la destination de la liaison de sortie dansapplication.properties
. - Il utilise le nom de liaison
sendMessageToTopicOne-out-0
pour rechercher le beanSupplier
nommésendMessageToTopicOne
. - Il envoie un message numéroté à
topic-one
toutes les 10 secondes.