Es gibt viele Tutorials zur Installationsmethode von Rabbitmq im Internet, daher werde ich es hier nicht wiederholen.
Verwenden Sie Rabbitmq, um Zeichenfolgen und Objekte auf Springboot zu übertragen. Das in diesem Artikel angegebene Beispiel besteht darin, Objekte und Zeichenfolgen zwischen zwei verschiedenen Projekten zu übertragen.
Rabbitmq -Abhängigkeit (gleiche Konfiguration in beiden Projekten):
<Depopentcy> <gruppe> org.springFramework.boot </Groupid> <artifactid> Spring-Boot-Starter-Amqp </artifactid> </abhängig>
POM -Konfigurationsdatei (gleiche Konfiguration in beiden Projekten):
Spring.Application.Name: Demo1 // Projektname Spring.Rabbitmq.host: 192.168.1.111 // schreiben Sie Ihr eigenes iPspring.rabbitmq.port: 5672Spring.rabbitmq.Unername: Gästespring.Rabbitmq.Password: GaSpring.Rabbitmq.Rabbitmq.Virtual-Host: .
Zeichenübertragung gegenseitige Übertragung (der in diesem Beispiel verwendete Thementyp)
1>. Schreiben Sie zunächst die Konfigurationsdatei in den Produzenten (Projekt A), in dem die Warteschlange generiert wird. Der Switch Exchange und Bindung werden durchgeführt
import org.springframework.amqp.core.binding; import org.springframework.amqp.core.bindingbuilder; import org.springframework.amqp.core.queue; importieren org.springFramework.amqp.core.topicexchange; org.springframework.beans.factory.annotation.qualifier; import org.springFramework.context.annotation.bean; SENTERCONFIGRATION {/** *@Beschreibung: Erstellen Sie ein neues Warteschlangen. }/***@Beschreibung: Definieren Sie den Switch*@Data: 16: 15 2017/12/22*/@Bean publicExchange Exchange () {return New topicexchange ("Exchange"); }/** *@Beschreibung: Der Switch verbindet die Warteschlangenmeldungen bindend den Switch mit dem Thema. BindingBuilder.bind (Queuemessages) .to (Exchange) .With ("topic.messages"); }}2>. Im zweiten Schritt (Element A) sendet der Produzent die Nachricht an die Meldungswarteschlange.
/** * @Author: fdh * @Description: * @Date: Erstellen Sie in 14:15 2017/12/22 */ @ControllerPublic Class RabbitController {@autowired private amqptemplate amqptemplate; @RequestMapping ("/sends") public void send1 () {amqptemplate.convertandsend ("Exchange", "topic.messages", "Hallo topie.Messages Rabbitmq"); }}3>. Schreiben Sie als nächstes einen Hörer auf der Seite der Verbraucher (Projekt B). Der Switch wird die vom Produzent erstellte Nachricht in die Matching Message -Warteschlange basierend auf dem Bound Routing -Schlüssel (Thema.Messages) eingeben. Der Hörer hört die entsprechende Meldungswarteschlange an, um Nachrichten zu erhalten, die an die Nachrichtenwarteschlange weitergeleitet wurden.
import org.springframework.beans.factory.annotation */ @Componentpublic Class Receiver {@rabbitListener (queues = "topic.messages") public void process2 (String str1) löst ClassNotFoundException {system.out.println aus ("meldungen:"+str1); System.out.println (Thread.currentThread (). GetName ()+"erhielt eine Nachricht vom Thema. Message Queue:"+str1); } Auf diese Weise wird eine einfache String -Übertragung geschrieben. Öffnen wir die gerade definierte Zuordnung: 192.168.1.111:8080/sendss
Sie sehen eine gedruckte Nachricht im Konsolenfenster auf der Verbraucherseite
Das obige ist ein einfaches Beispiel für die Übertragung von Zeichenfolgen.
2. Das Folgende konzentriert sich auf die Übertragung von Objekten zwischen Verbrauchern und Herstellern.
Die Übertragung von Objekten muss im Produzenten (a) serialisiert werden, dh das Objekt wird zur Übertragung in ein Byte -Array umgewandelt, und im Verbraucher wird das konvertierte Byte -Array in ein Objekt deserialisiert. Es gibt viele Methoden zur Serialisierung und Deserialisierung, und hier verwenden wir die serialisierbare Schnittstelle von Java
1>. Erstellen Sie Entitätsklassen in Projekten von Produzenten (Projekt A) und Verbraucher (Projekt B).
! Beachten! : Erstellen Sie eine neue Entitätsklasse Boy.java Die Entitätsklasse muss in der Position der Projekte A und B konsistent sein, dh der Paketname muss konsistent sein. In diesem Projekt befindet sich Boy.java in den Projekten A und B: Import Com.fengdonghao.shiro.bean.boy;
Entitätsklassen müssen ebenfalls konsistent sein.
Paket com.fengdonghao.shiro.bean; import Javax.Persistenz. @ID @GeneratedValue Private int id; privater Zeichenfolge Name; privates int Alter; @Override public String toString () {return "boy {" + "ay" + age + ", id =" + id + ", name = '" + name +'/'' + '}'; } // Die Getter- und Setter -Methoden werden hier weggelassen} 2>. Konfigurieren Sie die Bindung der Nachrichtenwarteschlange, Switch und Bindung im Produzenten (a), und der erste Schritt in Beispiel 1 ist der gleiche
3>. Schreiben Sie eine weitere Zuordnung in RabbitController.java in Produzent (a) wie folgt
@RequestMapping ("/send") public void sendMessage () {boy boy = new boy (); boy.setName ("tim"); Boy.Setage (11); System.out.println (Junge); // Folgendes ist die Serialisierungsoperation // Schreiben Sie OBJ, um ObjectOutputStream OOS = NULL zu versehen. try {oos = new ObjectOutputStream (neuer FileOutputStream (neue Datei ("e: //webpackage//a.txt")); // Speichern Sie das serialisierte Byte -Array in diesem Verzeichnis OOS.WriteObject (Boy); } catch (ioException e) {e.printstacktrace (); } endlich {ioutils.closequiet (OOS); } RabbitMQService.send ("Objekt wurde serialisiert"); 4>. Deserialisieren Sie das Byte -Array im Verbraucher (b).
Schreiben Sie beim Empfänger den Hörer zum Beispiel 1 Taste um
@RabbitListener (queues = "topic.messages") public void process2 (string str1) {System.out.println (Thread.currentThread (). GetName ()+"Empfangen Sie eine Nachricht vom Thema. Datei Datei = neue Datei ("e: //webpackage//a.txt"); // Die Pfade zwischen Verbrauchern und Produzenten müssen konsistent sein, bevor die Datei gelesen und analysiert werden kann. ObjectInputStream ois = null; try {ois = new ObjectInputStream (neuer FileInputStream (Datei)); Junge Newuser = (Junge) ois.readObject (); System.out.println ("Desequence:"+Newuser); System.out.println ("desequence:"+newuser.getName ()); System.out.println ("desequence:"+newuser.getName ()); System.out.println ("Desequence After Getage"+newUser.getage ()); } catch (ioException e) {e.printstacktrace (); } catch (classNotFoundException e) {e.printstacktrace (); } endlich {ioutils.closequiet (ois); try {FileUtils.forcedelete (Datei); } catch (ioException e) {e.printstacktrace (); }} System.out.println ("Nachrichten:"+str1); } Überprüfungszuordnung: IP: 8080/Senden
Die Ergebnisse sind wie folgt:
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.