Hay muchos tutoriales sobre el método de instalación de RabbitMQ en Internet, por lo que no lo repetiré aquí.
Use RabbitMQ para transferir cadenas y objetos en Springboot. El ejemplo dado en este artículo es transferir objetos y cadenas entre dos proyectos diferentes.
Dependencia de RabbitMQ (la misma configuración en ambos proyectos):
<Spendency> <MoupRupid> org.springframework.boot </groupid> <artifactID> spring-boot-starter-amqp </artifactid> </pendency>
Archivo de configuración de POM (la misma configuración en ambos proyectos):
Spring.Application.Name: DEMO1 // Nombre del proyecto Spring.rabbitmq.host: 192.168.1.111 // escribe su propio iPspring.rabbitmq.port: 5672spring.rabbitmq.username: invitados /spring.rabbitmq.publisher-confirms: truespring.rabbitmq.publisher-returns: truespring.rabbitmq.template.mandatory: true
Transferencia de carácter transmisión mutua (el tipo de tema utilizado en este ejemplo)
1>. Primero, escriba el archivo de configuración en el Productor (Proyecto A), donde se genera la cola de cola, se realiza el intercambio de conmutadores y el enlace
importar org.springframework.amqp.core.binding; import org.springframework.amqp.core.bindingbuilder; import org.springframework.amqp.core.queue; import org.springframework.amqp.core.topicexchange; importar; org.springframework.beans.factory.annotation.qualifier; import org.springframework.context.annotation.bean; import org.springframework.context.annotation.configuration;/** * @author: fdh * @Description: * @Date: Crear en 16:13 2017/12/22 * senderConfigration {/** *@Descripción: Cree una nueva cola topic.messages *@Data: 16: 14 2017/12/22 */@Bean (name = "Mensajes") Public Queue QueueMessages () {return New Queue ("Topic.Messages"); }/***@Descripción: Defina el conmutador*@Datos: 16: 15 2017/12/22*/@Bean public topicExchange Exchange () {return New TopiceXchange ("Exchange"); }/** *@Descripción: El conmutador une los mensajes de la cola une el interruptor con topic.messages *@Data: 16: 18 2017/12/22 */@Bean Binding BindingExChangEmessages (@Qualifier ("Mensajes") Queue QueuEmessages, TopicExchange Exchange) {retorno BindingBuilder.bind (QueueMessages) .to (intercambio) .with ("topic.messages"); }}2>. En el segundo paso (Elemento A), el productor envía el mensaje a la cola de mensajes.
/** * @Author: FDH * @Description: * @Date: Crear en 14:15 2017/12/22 */ @ControllerPublic Class RabbitController {@AUTOWIRED AMQPTEMPLATE AMQPTEMPLATE; @RequestMapping ("/Sendss") public void send1 () {amqptemplate.convertandsend ("intercambio", "topic.messages", "hola topic.messages rabbitmq"); }}3>. A continuación, escriba un oyente en el lado del consumidor (Proyecto B). El conmutador colocará el mensaje producido por el productor en la cola de mensajes coincidentes basada en la clave de enrutamiento límite (tope.messages). El oyente escuchará la cola de mensajes correspondiente para obtener mensajes enrutados a la cola de mensajes.
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import org.springframework.amqp.rabbit.annotation.RabbitListener;/** * @ Author:fdh * @ Description: Message queue listener* @ Date: Create in 14:19 2017/12/22 */ @ComponentPublic de receptor de clase {@rabbitListener (queues = "topic.messages") public void Process2 (String Str1) lanza ClassNotFoundException {System.out.println ("Mensajes:"+Str1); System.out.println (Thread.CurrentThread (). GetName ()+"recibió un mensaje de tope.message cola:"+str1); } De esta manera, se escribe una simple transmisión de cadenas. Abramos el mapeo acaba de definir: 192.168.1.111:8080/sendss
Verá un mensaje impreso en la ventana de la consola en el lado del consumidor
Lo anterior es un ejemplo simple de transmisión de cadenas.
2. Lo siguiente se centra en la transmisión de objetos entre consumidores y productores.
La transmisión de objetos debe ser serializada en el productor (a), es decir, el objeto se convierte en una matriz de bytes para la transmisión, y en el consumidor, la matriz de bytes convertida se deserializa en un objeto. Existen muchos métodos para la serialización y la deserialización, y aquí utilizamos la interfaz serializable de Java
1>. Cree clases de entidades en proyectos de productor (Proyecto A) y consumidor (Proyecto B).
! ¡Aviso! : Cree una nueva clase de entidad En este proyecto, Boy.java está en los proyectos A y B: import com.fengdonghao.shiro.bean.boy;
Las clases de entidad también deben ser consistentes.
paquete 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 sergment {private static final largo serialUidsionUid; @ID @GeneratedValue private int id; nombre de cadena privada; edad privada int; @Override public String toString () {return "boy {" + "age =" + age + ", id =" + id + ", name = '" + name +'/'' + '}'; } // Los métodos getter y setter se omiten aquí} 2>. Configure la cola de mensajes, el cambio y el enlace de enlace en el productor (a), y el primer paso en el ejemplo 1 es el mismo
3>. Escribe otro mapeo en RabbitController.java en el productor (a), como sigue
@RequestMapping ("/Send") public void sendMessage () {boy boy = new boy (); boy.setName ("Tim"); boy.setage (11); System.out.println (niño); // La siguiente es la operación de serialización // escribir obj para archivar objectOutputStream oos = null; Pruebe {oos = new ObjectOutputStream (nuevo FileOutputStream (nuevo archivo ("E: //webpackage//a.txt")))); // almacenar temporalmente la matriz de bytes serializada en este directorio oos.writeObject (boy); } catch (ioException e) {E.PrintStackTrace (); } finalmente {ioutils.closequietty (oos); } rabbitmqservice.send ("El objeto ha sido serializado"); 4>. Deserializar la matriz de bytes en el consumidor (b).
En el receptor, reescribe al oyente, por ejemplo 1, clave
@RabBitListener (queues = "topic.messages") public void Process2 (String Str1) {System.out.println (Thread.CurrentThread (). GetName ()+"Recibe un mensaje del tema. Archivo archivo = nuevo archivo ("e: //webpackage//a.txt"); // Las rutas entre los consumidores y los productores deben ser consistentes antes de que el archivo se pueda leer y analizar. ObjectInputStream ois = null; intente {ois = new ObjectInputStream (new FileInputStream (File)); Boy Newuser = (Boy) Ois.ReadObject (); System.out.println ("desquence:"+newuser); System.out.println ("desquence:"+newuser.getName ()); System.out.println ("desquence:"+newuser.getName ()); System.out.println ("Desequence After Getage"+Newuser.getage ()); } catch (ioException e) {E.PrintStackTrace (); } catch (ClassNotFoundException e) {E.PrintStackTrace (); } finalmente {ioutils.closequietty (ois); intente {fileUtils.forcedelete (archivo); } catch (ioException e) {E.PrintStackTrace (); }} System.out.println ("Mensajes:"+Str1); } Mapeo de verificación: IP: 8080/Enviar
Los resultados son los siguientes:
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.