Auf dieser Seite wird beschrieben, wie Sie Pub/Sub in Java-Anwendungen verwenden, die mit dem Spring Framework erstellt wurden.
Spring Cloud GCP bietet mehrere Module, um mithilfe des Spring Framework Nachrichten an Pub/Sub-Themen zu senden und Nachrichten von Pub/Sub-Abos zu empfangen. Sie können diese Module unabhängig voneinander verwenden oder für verschiedene Anwendungsfälle kombinieren:
- Mit Spring Cloud GCP Pub/Sub Starter können Sie Nachrichten mithilfe von Hilfsklassen senden und empfangen und die Pub/Sub Java-Clientbibliothek für erweiterte Szenarien aufrufen.
- Mit Spring Integration Channel Adapters for Pub/Sub können Sie Spring Integration Message Channels mit Pub/Sub verbinden.
- Mit Spring Cloud Stream Bender for Pub/Sub können Sie Pub/Sub als Messaging-Middleware in Spring Cloud Stream-Anwendungen verwenden.
HINWEIS: Die Spring Cloud GCP-Bibliothek bietet keinen Zugriff auf AckReplyConsumerWithResponse, ein erforderliches Modul, um das genau einmalige Feature mithilfe der Java-Clientbibliothek zu implementieren.
Hinweise
- Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
-
Richten Sie ein Google Cloud Console-Projekt ein.
Führen Sie folgende Schritte per Mausklick aus:
- Ein Projekt erstellen oder auswählen.
- Aktivieren Sie die Pub/Sub API für dieses Projekt.
- Erstellen Sie ein Dienstkonto.
- Laden Sie einen privaten Schlüssel als JSON-Datei herunter.
Sie können diese Ressourcen jederzeit in der Google Cloud Console aufrufen und verwalten.
-
Legen Sie die Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALS
auf den Pfad der JSON-Datei fest, die Ihre Anmeldedaten enthält. Diese Variable gilt nur für Ihre aktuelle Shell-Sitzung. Wenn Sie eine neue Sitzung öffnen, müssen Sie die Variable neu festlegen. -
Richten Sie ein Google Cloud Console-Projekt ein.
Führen Sie folgende Schritte per Mausklick aus:
- Ein Projekt erstellen oder auswählen.
- Aktivieren Sie die Pub/Sub API für dieses Projekt.
- Erstellen Sie ein Dienstkonto.
- Laden Sie einen privaten Schlüssel als JSON-Datei herunter.
Sie können diese Ressourcen jederzeit in der Google Cloud Console aufrufen und verwalten.
-
Legen Sie die Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALS
auf den Pfad der JSON-Datei fest, die Ihre Anmeldedaten enthält. Diese Variable gilt nur für Ihre aktuelle Shell-Sitzung. Wenn Sie eine neue Sitzung öffnen, müssen Sie die Variable neu festlegen. - Legen Sie die Umgebungsvariable
GOOGLE_CLOUD_PROJECT
auf Ihre Google Cloud-Projekt-ID fest.
Spring Cloud GCP Pub/Sub Starter verwenden
Das Modul Spring Cloud GCP Pub/Sub Starter installiert die Pub/Sub-Java-Clientbibliothek mithilfe des Moduls Spring Cloud GCP Pub/Sub. Sie können die Pub/Sub API aus Ihrer Spring-Anwendung mit den Klassen aufrufen, die der Spring Cloud GCP Pub/Sub Starter oder die Pub/Sub Java-Clientbibliothek bereitstellt. Wenn Sie die Klassen verwenden, die vom Spring Cloud GCP Pub/Sub Starter bereitgestellt werden, können Sie die standardmäßigen Pub/Sub-Konfigurationen überschreiben.
Modul installieren
Fügen Sie der Datei pom.xml
diese Abhängigkeiten hinzu, um das Modul „Spring Cloud GCP Pub/Sub-Starter“ zu installieren:
Das Artefakt „Spring Cloud GCP Pub/Sub Starter“:
Unterstützte Vorgänge
Das Modul „Spring Cloud GCP Pub/Sub-Starter“ enthält die folgenden Klassen:
PubSubAdmin
für Verwaltungsvorgänge:- Themen und Abos erstellen.
- Themen und Abos abrufen.
- Themen und Abos auflisten.
- Themen und Abos löschen.
- Bestätigungsfristen für ein Abo abrufen und festlegen.
PubSubTemplate
, um Nachrichten zu senden und zu empfangen:- Nachrichten in Themen veröffentlichen.
- Nachrichten synchron von Abos abrufen.
- Nachrichten asynchron von Abos abrufen.
- Nachrichten bestätigen.
- Bestätigungsfristen ändern.
- Pub/Sub-Nachrichten in Plain Old Java Objects (POJOs) konvertieren.
Spring Integration-Kanaladapter verwenden
Wenn Ihre Spring-Anwendung Spring Integration-Nachrichtenkanäle verwendet, können Sie Nachrichten mithilfe von Kanaladaptern zwischen Ihren Nachrichtenkanälen und Pub/Sub weiterleiten.
- Ein Eingangskanaladapter leitet Nachrichten von einem Pub/Sub-Abo an einen Nachrichtenkanal weiter.
- Ein Ausgangskanaladapter veröffentlicht Nachrichten von einem Nachrichtenkanal in einem Pub/Sub-Thema.
Module installieren
Fügen Sie der Datei pom.xml
Folgendes hinzu, um Module für Spring Integration-Kanaladapter zu installieren:
Die Artefakte „Spring Cloud GCP Pub/Sub Starter“ und „Spring Integration Core“:
Nachrichten von Pub/Sub empfangen
Verwenden Sie einen Eingangskanaladapter, um Nachrichten aus einem Pub/Sub-Abo in Ihrer Spring-Anwendung zu empfangen. Der Eingangskanaladapter konvertiert eingehende Pub/Sub-Nachrichten in POJOs und leitet dann die POJOs an einen Nachrichtenkanal weiter.
Im obigen Beispiel werden die folgenden Spring Beans und Pub/Sub-Ressourcen verwendet:
- Eine Nachrichtenkanal-Bean namens
inputMessageChannel
. - Eine Eingangskanaladapter-Bean namens
inboundChannelAdapter
vom TypPubSubInboundChannelAdapter
. - Pub/Sub-Abo-ID namens
sub-one
.
Der inboundChannelAdapter
ruft Nachrichten mithilfe eines PubSubTemplate
asynchron aus sub-one
ab und sendet die Nachrichten an inputMessageChannel
.
Das inboundChannelAdapter
setzt den Bestätigungsmodus auf MANUAL
, damit die Anwendung Nachrichten bestätigen kann, nachdem sie sie verarbeitet hat. Der Standardbestätigungsmodus von PubSubInboundChannelAdapter
-Typen ist AUTO
.
Die ServiceActivator
-Bean messageReceiver
protokolliert jede in inputMessageChannel
ankommende Nachricht in der Standardausgabe und bestätigt dann die Nachricht.
Nachrichten in Pub/Sub veröffentlichen
Verwenden Sie einen Ausgangskanaladapter, um Nachrichten von einem Nachrichtenkanal in einem Pub/Sub-Thema zu veröffentlichen. Der ausgehende Kanaladapter konvertiert POJOs in Pub/Sub-Nachrichten und sendet die Nachrichten dann an ein Pub/Sub-Thema.
Im obigen Beispiel werden die folgenden Spring-Beans und Pub/Sub-Ressourcen verwendet:
- Eine Nachrichtenkanal-Bean namens
inputMessageChannel
. - Eine Ausgangskanaladapter-Bean namens
messageSender
vom TypPubSubMessageHandler
. - Eine Pub/Sub-Themen-ID namens
topic-two
.
Die ServiceActivator
-Bean wendet die Logik in messageSender
auf jede Nachricht in inputMessageChannel
an.
Der PubSubMessageHandler
in messageSender
veröffentlicht Nachrichten im inputMessageChannel
mithilfe eines PubSubTemplate
. Der PubSubMessageHandler
veröffentlicht Nachrichten für das Pub/Sub-Thema topic-two
.
Spring Cloud Stream Binder verwenden
Verwenden Sie das Modul Spring Cloud GCP Pub/Sub Stream Binder, um die Pub/Sub API in einer Spring Cloud Stream-Anwendung aufzurufen.
Modul installieren
Fügen Sie der Datei pom.xml
Folgendes hinzu, um das Modul „Spring Cloud Stream Bender“ zu installieren:
Das Artefakt „Spring Cloud Stream Bender“:
Nachrichten von Pub/Sub empfangen
Um Ihre Anwendung als Ereignissenke zu verwenden, konfigurieren Sie den Eingabebinder. Geben Sie dazu Folgendes an:
Eine Bean vom Typ
Consumer
, die die Logik der Nachrichtenverarbeitung definiert. Die folgende Bean vom TypConsumer
hat beispielsweise den NamenreceiveMessageFromTopicTwo
:Eine Pub/Sub-Themen-ID in der Konfigurationsdatei
application.properties
. Die folgende Konfigurationsdatei verwendet beispielsweise eine Pub/Sub-Themen-ID namenstopic-two
:
Der Beispielcode empfängt Nachrichten von Pub/Sub. Das Beispiel führt Folgendes aus:
- Ermittelt die Pub/Sub-Themen-ID
topic-two
im Eingabebindungsziel inapplication.properties
. - Erstellt ein Pub/Sub-Abo für
topic-two
. - Verwendet den Bindungsnamen
receiveMessageFromTopicTwo-in-0
, um die Bean vom TypConsumer
namensreceiveMessageFromTopicTwo
zu finden. - Gibt eingehende Nachrichten in der Standardausgabe aus und bestätigt sie automatisch.
Nachrichten in Pub/Sub veröffentlichen
Wenn Sie Ihre Anwendung als Ereignisquelle verwenden möchten, konfigurieren Sie den Ausgabebinder. Geben Sie dazu Folgendes an:
Eine Bean vom Typ
Supplier
, die definiert, woher Nachrichten aus Ihrer Anwendung stammen. Die folgende Bean vom TypSupplier
hat beispielsweise den NamensendMessageToTopicOne
:Eine Pub/Sub-Themen-ID in der Konfigurationsdatei
application.properties
. Die folgende Konfigurationsdatei verwendet beispielsweise eine Pub/Sub-Themen-ID namenstopic-one
:
Der Beispielcode veröffentlicht Nachrichten an Pub/Sub. Das Beispiel führt Folgendes aus:
- Findet die Pub/Sub-Themen-ID
topic-one
im Ausgabebindungsziel inapplication.properties
. - Verwendet den Bindungsnamen
sendMessageToTopicOne-out-0
, um die Bean vom TypSupplier
namenssendMessageToTopicOne
zu finden. - Sendet alle 10 Sekunden eine nummerierte Nachricht an
topic-one
.