Ada banyak tutorial tentang metode instalasi RabbitMQ di internet, jadi saya tidak akan mengulanginya di sini.
Gunakan RabbitMQ untuk mentransfer string dan objek di Springboot. Contoh yang diberikan dalam artikel ini adalah mentransfer objek dan string antara dua proyek yang berbeda.
Ketergantungan RabbitMQ (konfigurasi yang sama di kedua proyek):
<dependency> <GroupId> org.springframework.boot </groupid> <ArTifactId> Spring-boot-starter-AMQP </artifactid> </dependency>
File Konfigurasi POM (Konfigurasi yang sama di kedua proyek):
spring.application.name: demo1 // nama proyek spring.rabbitmq.host: 192.168.1.111 // Tulis ippring.rabbitmq.port Anda sendiri: 5672spring.rabbitmq.username: guestpring.rabbitmq.password. /spring.rabbitmq.publisher-confirms: truespring.rabbitmq.publisher-returns: truespring.rabbitmq.template.mandatory: true
Transfer karakter transmisi timbal balik (jenis topik yang digunakan dalam contoh ini)
1>. Pertama, tulis file konfigurasi di produser (Proyek A), di mana antrian antrian dihasilkan, pertukaran sakelar dan pengikatan dilakukan
impor org.springframework.amqp.core.binding; impor org.springframework.amqp.core.bindingbuilder; impor org.springframework.amqp.core.queue; impor org.springframework.amqp.core.topiceCchange; org.springframework.beans.factory.annotation.Qualifier; impor org.springframework.context.annotation.bean; coonfiguration org.springframework SenderConFigration {/** *@Deskripsi: Buat antrian baru topik.messages *@Data: 16: 14 2017/12/22 */@bean (name = "pesan") antrian antrian publik () {return baru antrian ("topic.messages"); }/***@Deskripsi: Tentukan sakelar*@data: 16: 15 2017/12/22*/@bean Public TopicexChange Exchange () {return TopicexChange baru ("Exchange"); } /** *@Description: The switch binds the queue messages binds the switch with topic.messages *@Data:16:18 2017/12/22 */ @Bean Binding bindingExchangeMessages(@Qualifier("messages") Queue queueMessages,TopicExchange exchange){ return BINDINGBUILDER.BIND (QUEUEMESSAGES) .TO (Exchange) .with ("Topic.Messages"); }}2>. Pada langkah kedua (item A), produser mengirim pesan ke antrian pesan.
/** * @author: fdh * @description: * @Date: Buat di 14:15 2017/12/22 */ @controllerpublic kelas RabbitController {@autowired private amqptemplate amqptemplate; @RequestMapping ("/sendss") public void send1 () {AmqPtemplate.convertandSend ("Exchange", "Topic.Messages", "Hello Topic.Messages Rabbitmq"); }}3>. Selanjutnya, tulislah pendengar di sisi konsumen (Proyek B). Sakelar akan menempatkan pesan yang dihasilkan oleh produser ke dalam antrian pesan yang cocok berdasarkan kunci perutean terikat (topic.messages). Pendengar akan mendengarkan antrian pesan yang sesuai untuk mendapatkan pesan yang dialihkan ke antrian pesan.
Impor org.springframework.beans.factory.annotation.Autowired; impor org.springframework.stereotype.sponent; impor org.springframework.amqp.rabbit.annotation.rabbitlistener;/** ** @ penulis: fdh* @ deskripsi: pesan queue.rabbitlistener; */ @ComponentPublic Class Receiver {@rabbitListener (queuees = "topic.messages") public void Process2 (String str1) melempar ClassNotFoundException {System.out.println ("Pesan:"+str1); System.out.println (thread.currentThread (). GetName ()+"menerima pesan dari topic.message antrian:"+str1); } Dengan cara ini, transmisi string sederhana ditulis. Mari buka pemetaan yang baru saja ditentukan: 192.168.1.111:8080/sendss
Anda akan melihat pesan cetak di jendela konsol di sisi konsumen
Di atas adalah contoh sederhana dari string transmisi.
2. Berikut ini berfokus pada transmisi objek antara konsumen dan produsen.
Transmisi objek harus diserialisasi dalam produsen (a), yaitu, objek dikonversi menjadi array byte untuk transmisi, dan di konsumen, array byte yang dikonversi diuraikan menjadi objek. Ada banyak metode untuk serialisasi dan deserialisasi, dan di sini kami menggunakan antarmuka serializable Java
1>. Buat kelas entitas dalam proyek produsen (Proyek A) dan konsumen (Proyek B).
Lai Melihat! : Buat class entitas baru boy.java kelas entitas harus konsisten dalam posisi proyek a dan b, yaitu, nama paket harus konsisten. Dalam proyek ini, Boy.java ada di Proyek A dan B: Impor com.fengdonghao.shiro.bean.boy;
Kelas entitas juga harus konsisten.
package com.fengdonghao.shiro.bean;import javax.persistence.*;import java.io.Serializable;/** * @Author:fdh * @Description: * @Date: Create in11:14 2017/12/16 */@Entitypublic class Boy implements Serializable{ private static final long serialVersionUID=1L; @ID @GeneratedValue Private int ID; nama string pribadi; usia int pribadi; @Override public string toString () {return "boy {" + "age =" + usia + ", id =" + id + ", name = '" + name +'/'' + '}'; } // metode pengambil dan setter dihilangkan di sini} 2>. Konfigurasikan antrian pesan, sakelar, dan ikat ikatan di produser (a), dan langkah pertama dalam contoh 1 adalah sama
3>. Tulis pemetaan lain di RabbitController.java di Produser (A), sebagai berikut
@RequestMapping ("/send") public void sendMessage () {boy boy = new boy (); boy.setname ("tim"); boy.setage (11); System.out.println (bocah); // Berikut ini adalah operasi serialisasi // tulis OBJ untuk mengajukan ObjectOutputStream oos = null; coba {oos = ObjectOutputStream baru (FileOutputStream baru (file baru ("e: //webpackage//a.txt"))); // Simpan sementara array byte serial di direktori ini oos.writeObject (boy); } catch (ioException e) {e.printstacktrace (); } akhirnya {ioutils.closequietly (OOS); } rabbitmqservice.send ("objek telah diserialisasi"); 4>. Deserialize byte array di konsumen (b).
Di penerima, tulis ulang pendengar misalnya 1 kunci
@RabbitListener (queuees = "topic.messages") public void Process2 (string str1) {System.out.println (thread.currentThread (). GetName ()+"Terima pesan dari topik. File File = File baru ("e: //webpackage//a.txt"); // Jalur antara konsumen dan produsen harus konsisten sebelum file dapat dibaca dan diuraikan. ObjectInputStream ois = null; coba {ois = new ObjectInputStream (FileInputStream baru (file)); Boy newUser = (boy) 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 (); } akhirnya {ioutils.closequietly (OIS); coba {fileutils.forcedelete (file); } catch (ioException e) {e.printstacktrace (); }} System.out.println ("Pesan:"+str1); } Pemetaan Verifikasi: IP: 8080/Kirim
Hasilnya adalah sebagai berikut:
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.