Questa pagina descrive come utilizzare Pub/Sub nelle applicazioni Java create con Spring Framework.
Spring Cloud GCP dispone di diversi moduli per l'invio di messaggi agli argomenti Pub/Sub e la ricezione di messaggi dalle sottoscrizioni Pub/Sub utilizzando Spring Framework. Puoi utilizzare questi moduli in modo indipendente o combinarli per diversi casi d'uso:
- Spring Cloud GCP Pub/Sub Starter ti consente di inviare e ricevere messaggi utilizzando classi helper e chiamare la libreria client Java Pub/Sub per scenari più avanzati.
- Gli adattatori del canale di integrazione Spring per Pub/Sub ti consentono di connettere i canali di messaggi di integrazione Spring a Pub/Sub.
- Spring Cloud Stream Binder per Pub/Sub ti consente di utilizzare Pub/Sub come middleware di messaggistica nelle applicazioni Spring Cloud Stream.
NOTA: la libreria Spring Cloud GCP non fornisce l'accesso a AckReplyConsumerWithResponse, che è un modulo obbligatorio per implementare la funzionalità di invio esatto una sola volta utilizzando la libreria client Java.
Prima di iniziare
-
Set up a Trusted 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 Trusted 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. - Imposta la variabile di ambiente
GOOGLE_CLOUD_PROJECT
sull' Trusted Cloud ID progetto. L'artefatto Spring Cloud GCP Pub/Sub Starter:
PubSubAdmin
per le operazioni amministrative:- Crea argomenti e sottoscrizioni.
- Recupera argomenti e sottoscrizioni.
- Elenca argomenti e sottoscrizioni.
- Eliminare argomenti e sottoscrizioni.
- Recuperare e impostare le scadenze di conferma per una sottoscrizione.
PubSubTemplate
per l'invio e la ricezione di messaggi:- Pubblicare messaggi negli argomenti.
- Esegui il pull sincrono dei messaggi dalle sottoscrizioni.
- Esegui il pull asincrono dei messaggi dalle sottoscrizioni.
- Confermare i messaggi.
- Modificare le scadenze di conferma.
- Converti i messaggi Pub/Sub in POJO (Plain Old Java Object).
- Un adattatore del canale in entrata inoltra i messaggi da una sottoscrizione Pub/Sub a un canale di messaggi.
- Un adattatore del canale in uscita pubblica i messaggi da un canale di messaggi a un argomento Pub/Sub.
Gli artefatti Spring Cloud GCP Pub/Sub Starter e Spring Integration Core:
- Un bean del canale di messaggi denominato
inputMessageChannel
. - Un bean adattatore del canale in entrata denominato
inboundChannelAdapter
di tipoPubSubInboundChannelAdapter
. - Un ID sottoscrizione Pub/Sub denominato
sub-one
. - Un bean del canale di messaggi denominato
inputMessageChannel
. - Un bean adattatore del canale in uscita denominato
messageSender
di tipoPubSubMessageHandler
. - Un ID argomento Pub/Sub denominato
topic-two
. L'artefatto Spring Cloud Stream Binder:
Un bean
Consumer
che definisce la logica di gestione dei messaggi. Ad esempio, il seguente beanConsumer
è denominatoreceiveMessageFromTopicTwo
:Un ID argomento Pub/Sub nel file di configurazione
application.properties
. Ad esempio, il seguente file di configurazione utilizza un ID argomento Pub/Sub denominatotopic-two
:- Trova l'ID argomento Pub/Sub
topic-two
nella destinazione del binding di input inapplication.properties
. - Crea una sottoscrizione Pub/Sub a
topic-two
. - Utilizza il nome del binding
receiveMessageFromTopicTwo-in-0
per trovare il beanConsumer
denominatoreceiveMessageFromTopicTwo
. - Stampa i messaggi in arrivo nell'output standard e li conferma automaticamente.
Un bean
Supplier
che definisce la provenienza dei messaggi all'interno dell'applicazione. Ad esempio, il seguente beanSupplier
è denominatosendMessageToTopicOne
:Un ID argomento Pub/Sub nel file di configurazione
application.properties
. Ad esempio, il seguente file di configurazione utilizza un ID argomento Pub/Sub denominatotopic-one
:- Trova l'ID argomento Pub/Sub
topic-one
nella destinazione del binding di output inapplication.properties
. - Utilizza il nome del binding
sendMessageToTopicOne-out-0
per trovare il beanSupplier
denominatosendMessageToTopicOne
. - Invia un messaggio numerato a
topic-one
ogni 10 secondi.
Utilizzo di Spring Cloud GCP Pub/Sub Starter
Il modulo Spring Cloud GCP Pub/Sub Starter installa la libreria client Java Pub/Sub utilizzando il modulo Spring Cloud GCP Pub/Sub. Puoi chiamare l'API Pub/Sub dalla tua applicazione Spring utilizzando le classi fornite da Spring Cloud GCP Pub/Sub Starter o la libreria client Java Pub/Sub. Se utilizzi le classi fornite da Spring Cloud GCP Pub/Sub Starter, puoi sostituire le configurazioni Pub/Sub predefinite.
Installazione del modulo
Per installare il modulo Spring Cloud GCP Pub/Sub Starter, aggiungi queste dipendenze
al file pom.xml
:
Operazioni supportate
Il modulo Spring Cloud GCP Pub/Sub Starter include le seguenti classi:
Utilizzo degli adattatori del canale Spring Integration
Se la tua applicazione Spring utilizza i canali di messaggi Spring Integration, puoi instradare i messaggi tra i canali di messaggi e Pub/Sub utilizzando gli adattatori di canale.
Installare i moduli
Per installare i moduli per gli adattatori di canale Spring Integration, aggiungi quanto segue al file pom.xml
:
Ricezione di messaggi da Pub/Sub
Per ricevere messaggi da un abbonamento Pub/Sub nella tua applicazione Spring, utilizza un adattatore del canale in entrata. L'adattatore del canale in entrata converte i messaggi Pub/Sub in POJO e poi li inoltra a un canale di messaggi.
L'esempio precedente utilizza i seguenti bean Spring e la risorsa Pub/Sub:
inboundChannelAdapter
recupera in modo asincrono i messaggi da sub-one
utilizzando un PubSubTemplate
e li invia a inputMessageChannel
.
inboundChannelAdapter
imposta la modalità di riconoscimento su MANUAL
, in modo che l'applicazione possa riconoscere i messaggi dopo averli elaborati. La modalità di
riconoscimento predefinita dei tipi PubSubInboundChannelAdapter
è AUTO
.
Il bean ServiceActivator
messageReceiver
registra ogni messaggio in arrivo in
inputMessageChannel
nell'output standard e quindi conferma il messaggio.
Pubblicazione di messaggi in Pub/Sub
Per pubblicare messaggi da un canale di messaggi a un argomento Pub/Sub, utilizza un adattatore del canale in uscita. L'adattatore del canale in uscita converte i POJO in messaggi Pub/Sub e poi li invia a un argomento Pub/Sub.
L'esempio precedente utilizza i seguenti bean Spring e la seguente risorsa Pub/Sub:
Il bean ServiceActivator
applica la logica in messageSender
a ogni
messaggio in inputMessageChannel
.
PubSubMessageHandler
in messageSender
pubblica messaggi in
inputMessageChannel
utilizzando un PubSubTemplate
. PubSubMessageHandler
pubblica i messaggi nell'argomento Pub/Sub topic-two
.
Utilizzo di Spring Cloud Stream Binder
Per chiamare l'API Pub/Sub in un'applicazione Spring Cloud Stream, utilizza il modulo Spring Cloud GCP Pub/Sub Stream Binder.
Installazione del modulo
Per installare il modulo Spring Cloud Stream Binder, aggiungi quanto segue al file pom.xml
:
Ricezione di messaggi da Pub/Sub
Per utilizzare l'applicazione come sink di eventi, configura il binder di input specificando quanto segue:
Il codice di esempio riceve messaggi da Pub/Sub. L'esempio esegue queste operazioni:
Pubblicazione di messaggi in Pub/Sub
Per utilizzare l'applicazione come origine eventi, configura il binder di output specificando quanto segue:
Il codice di esempio pubblica i messaggi su Pub/Sub. L'esempio esegue queste operazioni: