Il existe de nombreux tutoriels sur la méthode d'installation de RabbitMQ sur Internet, donc je ne le répéterai pas ici.
Utilisez RabbitMQ pour transférer des chaînes et des objets sur Springboot. L'exemple donné dans cet article est de transférer des objets et des chaînes entre deux projets différents.
Dépendance RabbitMQ (même configuration dans les deux projets):
<dependency> <proupId> org.springframework.boot </rombasid> <ArtifactId> printemp-boot-starter-amqp </etefactId> </Dependency>
Fichier de configuration POM (même configuration dans les deux projets):
Spring.Application.name: Demo1 // Nom du projet printemps.rabbitmq.host: 192.168.1.111 // Écrivez votre propre ipspring.rabbitmq.port: 5672Spring.rabbitmq.Username: invité Pring.rabbitmq.Password: invité /spring.rabbitmq.Publisher-Confirms: truespring.rabbitmq.publisher-returns: truespring.rabbitmq.template.mandatoire: true
Transfert de caractère transmission mutuelle (le type de sujet utilisé dans cet exemple)
1>. Tout d'abord, écrivez le fichier de configuration dans le producteur (projet A), où la file d'attente est générée, l'échange de commutation et la liaison sont effectués
import org.springframework.amqp.core.binding; import org.springframework.amqp.core.bindingbuilder; import org.springframework.amqp.core.queue; import org.springframework.amqp.core.topicexchange; import org.springframework.beans.factory.annotation.qualifier; import org.springframework.context.annotation.bean; import org.springframework.context.annotation.configuration; / ** * @author: fdh * @description: * @date: Création dans 16:13 2017/12/22 * / @ configurationpublic Classpu SENDERCONFIGRATION {/ ** * @ Description: Créez une nouvelle file d'attente Topic. } / ** * @ Description: Définissez le commutateur * @ data: 16: 15 2017/12/22 * / @bean public topicexchange échange () {return new topicexchange ("exchange"); } / ** * @ Description: Le commutateur lie les messages de file d'attente lie le commutateur avec topic Lisingbuilder.bind (queueMessages) .to (échange) .with ("topic.messages"); }}2>. Dans la deuxième étape (élément A), le producteur envoie le message à la file d'attente de messages.
/ ** * @Author: FDH * @Description: * @Date: Créer en 14:15 2017/12/22 * / @ ControllerPublic Class RabbitController {@autowired privé Amqptemplate Amqptemplate; @RequestMapping ("/ SendSS") public void send1 () {Amqptemplate.ConvertandSend ("Exchange", "topic.Messages", "Hello Topic.Messages Rabbitmq"); }}3>. Ensuite, écrivez un auditeur du côté consommateur (projet B). Le commutateur placera le message produit par le producteur dans la file d'attente de messages correspondante en fonction de la clé de routage liée (topic.Messages). L'auditeur écoutera la file d'attente de messages correspondante pour obtenir des messages acheminés vers la file d'attente de messages.
import org.springframework.beans.factory.annotation.autowired; import org.springframework.sterreotype. * / @ ComponentPublic Class Receiver {@rabbitListener (que les queues = "topic.Messages") public void process2 (String str1) lève ClassNotFoundException {System.out.println ("messages:" + str1); System.out.println (thread.currentThread (). GetName () + "a reçu un message de la file d'attente topic. } De cette façon, une simple transmission de chaînes est écrite. Ouvrir la cartographie juste définie: 192.168.1.111:8080/sendss
Vous verrez un message imprimé dans la fenêtre de la console du côté consommateur
Ce qui précède est un exemple simple de transmission de chaînes.
2. Ce qui suit se concentre sur la transmission des objets entre les consommateurs et les producteurs.
La transmission des objets doit être sérialisée dans le producteur (a), c'est-à-dire que l'objet est converti en un réseau d'octets pour la transmission, et chez le consommateur, le réseau d'octets converti est désérialisé en objet. Il existe de nombreuses méthodes de sérialisation et de désérialisation, et nous utilisons ici l'interface sérialisable de Java
1>. Créer des cours d'entités dans des projets de producteur (projet A) et de consommateur (projet B).
! Avis! : Créer une nouvelle classe d'entité boy.java La classe d'entité doit être cohérente dans la position des projets A et B, c'est-à-dire que le nom du package doit être cohérent. Dans ce projet, Boy.java est dans les projets A et B: importation com.fengdonghao.shiro.bean.boy;
Les cours d'entité doivent également être cohérents.
Package com.fengdonghao.shiro.bean; Importer Javax.Persistence. *; Importer Java.io.Serializable; / ** * @Author: FDH * @Description: * @Date: Créer en11: 14 2017/12/16 * / @ entityPublic Class Boy Implements Sérializable {private Static Final Long Final LongVersionUid = 1Lice Implements Implements Sesrializable {private Static Final Long Final LongVersionUid = 1Lice Sérializable {private Static Final Long Final LongVersionUid = 1Le Sormit; @Id @GeneratedValue private int id; nom de chaîne privé; Âge privé; @Override public String toString () {return "boy {" + "age =" + age + ", id =" + id + ", name = '" + name +' / '' + '}'; } // Les méthodes Getter et Setter sont omises ici} 2>. Configurer la file d'attente de messages, le commutateur et la liaison de liaison dans le producteur (A), et la première étape de l'exemple 1 est la même
3>. Écrivez une autre cartographie dans RabbitController.java dans le producteur (a), comme suit
@RequestMapping ("/ Send") public void SendMessage () {boy boy = new boy (); boy.setName ("Tim"); boy.setage (11); System.out.println (garçon); // Ce qui suit est l'opération de sérialisation // Écrivez OBJ dans le fichier ObjectOutputStream OOS = NULL; try {oos = new ObjectOutputStream (new FileOutputStream (nouveau fichier ("e: //webpackage//a.txt"))); // stocker temporairement le tableau d'octet sérialisé dans ce répertoire oos.writeObject (boy); } catch (ioException e) {e.printStackTrace (); } enfin {ioutils.closequietly (oos); } RabbitmqService.Send ("L'objet a été sérialisé"); 4>. Désérialiser le réseau d'octets chez le consommateur (b).
Dans le récepteur, réécrivez l'auditeur par exemple 1 clé
@RabbitListener (que les queues = "topic.Messages") public void process2 (String str1) {System.out.println (thread.currentThread (). GetName () + "Recevoir un message de la file d'attente topic. Fichier file = nouveau fichier ("e: //webpackage//a.txt"); // Les chemins entre les consommateurs et les producteurs doivent être cohérents avant que le fichier puisse être lu et analysé. ObjectInputStream oiS = null; try {ois = new ObjectInputStream (new FileInputStream (fichier)); Garçon 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 (); } enfin {ioutils.closequietly (oi); essayez {fileUtils.Forcededelete (fichier); } catch (ioException e) {e.printStackTrace (); }} System.out.println ("messages:" + str1); } Mappage de vérification: IP: 8080 / Send
Les résultats sont les suivants:
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.