Inhaltsverzeichnis
Verwenden Sie RabbitTemplate, um Nachrichten zu empfangen
Nachrichtengesteuertes Pojo verwenden, um Nachrichten zu empfangen
Heim Java javaLernprogramm Verwenden von Spring und AMQP zum Senden und Empfangen von Nachrichten in Java (Teil 2)

Verwenden von Spring und AMQP zum Senden und Empfangen von Nachrichten in Java (Teil 2)

Jun 25, 2017 am 10:02 AM
amqp spring 使用 发送

Im 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

Message message = rabbit.receive("spittle.test.queue");

Nach dem Login kopieren

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

<template id="rabbitTemplate"

    connection-factory="connectionFactory"exchange="spittle.test.exchange"

    routing-key="spittle.test"

    queue="spittle.test.queue" />

Nach dem Login kopieren

In diesem Fall kann beim Aufrufen der Methode „receive()“ die Nachricht aus der Standardwarteschlange abgerufen werden, ohne dass Parameter festgelegt werden müssen:

1

Message message = rabbit.receive( );

Nach dem Login kopieren

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

Spittle spittle = (Spittle) rabbit.receiveAndConvert("spittle.test.queue");

Nach dem Login kopieren

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

public class SpittleTestHandler {public void handleSpittleTest (Spittle spittle) {

        ...

    }

}

Nach dem Login kopieren

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

<bean id="spittleListener"class="com.***.spittr.test.SpittleTestHandler">

Nach dem Login kopieren

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

<listener-container connection-factory="connectionFactory"><listener ref="spittleListener"

          method="handleSpittleTest"  queue-names="spittle.test.queue" /></listener-container>

Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Mar 18, 2024 pm 02:58 PM

Mar 18, 2024 am 10:58 AM

Wie sende ich Dateien an andere auf TikTok? Wie lösche ich an andere gesendete Dateien? Wie sende ich Dateien an andere auf TikTok? Wie lösche ich an andere gesendete Dateien? Mar 22, 2024 am 08:30 AM

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 Verwenden Sie Spring Boot und Spring AI, um generative Anwendungen für künstliche Intelligenz zu erstellen Apr 28, 2024 am 11:46 AM

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 NetEase Mailbox Master Mar 27, 2024 pm 05:32 PM

So verwenden Sie NetEase Mailbox Master

So verwenden Sie die Baidu Netdisk-App So verwenden Sie die Baidu Netdisk-App Mar 27, 2024 pm 06:46 PM

So verwenden Sie die Baidu Netdisk-App

So verwenden Sie den Xiaoai-Lautsprecher. So verbinden Sie den Xiaoai-Lautsprecher mit dem Mobiltelefon So verwenden Sie den Xiaoai-Lautsprecher. So verbinden Sie den Xiaoai-Lautsprecher mit dem Mobiltelefon Feb 22, 2024 pm 05:19 PM

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? BTCC-Tutorial: Wie kann ich die MetaMask-Wallet an der BTCC-Börse binden und verwenden? Apr 26, 2024 am 09:40 AM

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

See all articles