


Verwenden von Spring und AMQP zum Senden und Empfangen von Nachrichten in Java (Teil 2)
Jun 25, 2017 am 10:02 AMIm vorherigen Artikel ging es um die Verwendung von RabbitMQ zum Senden von Nachrichten, und in diesem Artikel geht es um den Empfang von Nachrichten.
In herkömmlichem JMS gibt es zwei Möglichkeiten, Informationen aus der Warteschlange abzurufen: die synchrone Methode mit JmsTemplate und die asynchrone Methode mit nachrichtengesteuertem Pojo. Spring AMQP bietet auch eine ähnliche Möglichkeit, über AMQP gesendete Nachrichten abzurufen.
Verwenden Sie RabbitTemplate, um Nachrichten zu empfangen
Die einfachste Methode zum Empfangen von Informationen, die von RabbitTemplate bereitgestellt werden, ist die Methode „receive()“, mit der Sie ein Message-Objekt aus der Warteschlange abrufen können:
1 |
|
Oder Sie können die Standardwarteschlange für Nachrichten auch durch Konfiguration erhalten. Dies wird erreicht, indem Sie das Warteschlangenattribut bei der Konfiguration der Vorlage festlegen:
1 2 3 4 |
|
In diesem Fall kann beim Aufrufen der Methode „receive()“ die Nachricht aus der Standardwarteschlange abgerufen werden, ohne dass Parameter festgelegt werden müssen:
1 |
|
Nach dem Abrufen des Message-Objekts im Allgemeinen Die Das Byte-Array in seinem Body-Attribut muss in das gewünschte Objekt konvertiert werden. Ebenso wie das Konvertieren des Domänenobjekts in eine Nachricht beim Senden ist es auch mühsam, die empfangene Nachricht in ein Domänenobjekt umzuwandeln. Hier können Sie alternativ die Methode „receiveAndConvert()“ von RabbitTemplate verwenden:
1 |
|
Die Methode „receiveAndConvert()“ verwendet zum Konvertieren denselben Nachrichtenkonverter wie die Methode „sendAndConvert()“. Das Message-Objekt ist ein primitiver Typ.
Der Aufruf der Methoden „receive()“ und „receiveAndConvert()“ führt sofort zu einer Rückgabe. Wenn keine Nachrichten in der Warteschlange vorhanden sind, erhalten Sie den Wert „null“. Zu diesem Zeitpunkt müssen Programmierer im Allgemeinen die Abfrage und die erforderlichen Threads selbst verwalten, um die Warteschlangenüberwachung zu implementieren. Wenn Sie nicht jedes Mal synchron abfragen möchten, um auf das Eintreffen der Nachricht zu warten, können Sie das von Spring AMQP bereitgestellte nachrichtengesteuerte Pojo verwenden. Schauen wir uns die Verwendung des nachrichtengesteuerten Pojo zum Empfangen von Nachrichten an.
Nachrichtengesteuertes Pojo verwenden, um Nachrichten zu empfangen
Wenn Sie Spittle-Objekte asynchron im nachrichtengesteuerten Pojo konsumieren möchten, müssen Sie zunächst das Pojo selbst lösen, wie gezeigt unten SpittleTestHandler Spielt diese Rolle:
1 2 3 4 |
|
Tatsächlich hängt diese Klasse nicht von AMQP ab, egal welcher Mechanismus an das Spittle-Objekt übergeben wird, sie kann damit umgehen.
Hier müssen Sie SpittleTestHandler auch als Bean im Spring-Anwendungskontext deklarieren:
1 |
|
Zuletzt müssen Sie einen Listener-Container und einen Listener deklarieren, wenn die Nachricht eintrifft , SpittleTestHandler kann aufgerufen werden und die Konfiguration ist wie folgt:
1 2 |
|
Die obigen Elemente <listener-container> stammen beide aus dem Rabbit-Namespace. Und geben Sie die zu überwachende Warteschlange über das Attribut queue-names an. Hier wird nur eine zu überwachende Warteschlange festgelegt. Wenn mehrere Warteschlangen festgelegt werden sollen, trennen Sie diese durch Kommas. An diesem Punkt ist der Nachrichtenempfang abgeschlossen. Nachdem Sie die Nachricht erhalten haben, können Sie die entsprechende Verarbeitung in der entsprechenden Methode durchführen.
Das obige ist der detaillierte Inhalt vonVerwenden von Spring und AMQP zum Senden und Empfangen von Nachrichten in Java (Teil 2). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Wie sende ich Dateien an andere auf TikTok? Wie lösche ich an andere gesendete Dateien?

Verwenden Sie Spring Boot und Spring AI, um generative Anwendungen für künstliche Intelligenz zu erstellen

So verwenden Sie NetEase Mailbox Master

So verwenden Sie die Baidu Netdisk-App

So verwenden Sie den Xiaoai-Lautsprecher. So verbinden Sie den Xiaoai-Lautsprecher mit dem Mobiltelefon

BTCC-Tutorial: Wie kann ich die MetaMask-Wallet an der BTCC-Börse binden und verwenden?
