Existem muitos tutoriais no método de instalação do RabbitMQ na Internet, então não vou repeti -lo aqui.
Use o RabbitMQ para transferir strings e objetos no Springboot. O exemplo dado neste artigo é transferir objetos e strings entre dois projetos diferentes.
RabbitMQ dependência (mesma configuração em ambos os projetos):
<Depencency> <PuerpId> org.springframework.boot </frugid> <TRATIFACTID> Spring-boot-starter-amqp </storkactid> </dependency>
Arquivo de configuração do POM (a mesma configuração em ambos os projetos):
Spring.Application.Name: Demo1 // Nome do projeto Spring.rabbitmq.host: 192.168.1.111 // Escreva seu próprio ipspring.rabbitmq.port: 5672spring.rabbitmq.username: hóspedespring.rabbitmq.passord: hóspedes.rabbitmq.rabbitmq.rabbitmq.rabbitmq.rabbitmq.rabbitmq.rabbitmq.rabbitmq.rabbitmq.rabbitmq.rabbitmq.rabbitmq.rabbitmq.Rabbitmq.Rabbitmq.Rabbitmq.Rabbitmq.RabbitmQ. O
Transferência de caracteres Transmissão mútua (o tipo de tópico usado neste exemplo)
1>. Primeiro, escreva o arquivo de configuração no produtor (Projeto A), onde a fila da fila é gerada, a troca e a ligação são realizadas
importar org.springframework.amqp.core.binding; importar org.springframework.amqp.core.bindingbuilder; importar org.springframework.amqp.core.queue; importação org.springframework.amqp.core.toPicexchange; org.springframework.beans.factory.annotation.qualifier; importar org.springframework.context.annotation.bean; importar org.springframework.context.annotation.configuration;/** ** @Author: fdh * @Description: *2fate: Create; senderConFigration {/** *@Descrição: Crie uma nova fila tópico.Messages *@Data: 16: 14 2017/12/22 */@Bean (name = "Mensagens") public fila Queuemessages () {retorna a nova fila ("tópico.messages"); }/***@Descrição: Defina o comutador*@Dados: 16: 15 2017/12/22*/@Bean public topicexchange Exchange () {return topicexchange ("Exchange"); }/** *@Descrição: O comutador liga as mensagens da fila liga o switch com tópico.Messages *@Dados: 16: 18 2017/12/22 */@Bean BindingExchanGemessages (@qualifier ("Mensagens") fila fila, Topicexange Exchange) {Returning ") Bindingbuilder.bind (Queuemessages) .to (troca) .with ("tópico.messages"); }}2>. Na segunda etapa (item A), o produtor envia a mensagem para a fila de mensagens.
/** * @Author: fdh * @Description: * @Date: Crie em 14:15 2017/12/22 */ @ @controlerpublic classe RabbitController {@AUTOWIRED AMQPTEMPLATA AMQPTEMPLATE AMQPTEMPLATE; @RequestMapping ("/sendss") public void send1 () {amqptemplate.convertandSend ("Exchange", "tópico.Messages", "Hello Topic.Messages RabbitMQ"); }}3>. Em seguida, escreva um ouvinte do lado do consumidor (Projeto B). O Switch colocará a mensagem produzida pelo produtor na fila de mensagens correspondente com base na chave de roteamento ligada (tópico.messages). O ouvinte ouvirá a fila de mensagens correspondente para obter mensagens roteadas para a fila de mensagens.
importar org.springframework.beans.factory.annotation.autowired; importar org.springframework.tereotype.component; importar org.springframework.amqp.rabbit.annotation.rabbitListener;/** ** @ Autor: fdh* @ descrição: */ @ComponentPublic Class Receiver {@rabbitListener (fileues = "tópico.messages") public void Process2 (String str1) lança classNotFoundException {System.out.println ("Mensagens:"+str1); System.out.println (thread.currentThread (). GetName ()+"recebeu uma mensagem da fila tópico.Message:"+str1); } Dessa maneira, uma simples transmissão de string é escrita. Vamos abrir o mapeamento apenas definido: 192.168.1.111:8080/sendss
Você verá uma mensagem impressa na janela do console no lado do consumidor
O exposto acima é um exemplo simples de transmissão de seqüências de transmissões.
2. O seguinte se concentra na transmissão de objetos entre consumidores e produtores.
A transmissão de objetos deve ser serializada no produtor (a), ou seja, o objeto é convertido em uma matriz de bytes para transmissão e, no consumidor, a matriz de bytes convertida é desserializada em um objeto. Existem muitos métodos de serialização e deserialização, e aqui usamos a interface serializável de Java
1>. Crie aulas de entidade em projetos de produtor (Projeto A) e Consumidor (Projeto B).
! Perceber! : Crie um novo garoto de classe de entidade. Neste projeto, Boy.java está nos projetos A e B: importar com.fengdonghhao.shiro.bean.boy;
As classes de entidade também devem ser consistentes.
pacote com.fengDonghao.shiro.bean; importar javax.persistence. @Id @GeneratedValue private int id; nome de string privado; private Int Age; @Override public string tostring () {return } // Os métodos getter e setter são omitidos aqui} 2>. Configure a fila de mensagens, interruptor e ligação no produtor (a), e o primeiro passo no Exemplo 1 é o mesmo
3>. Escreva outro mapeamento em rabbitcontroller.java no produtor (a), como segue
@RequestMapping ("/send") public void sendMessage () {boy boy = new Boy (); menino.setName ("Tim"); menino.setage (11); System.out.println (menino); // a seguir está a operação de serialização // gravar obj para arquivar objectutputStream ooS = null; tente {ooS = new ObjectOutputStream (new FileOutputStream (new File ("e: //webpackage//a.txt"))); // armazenar temporariamente a matriz de bytes serializada neste diretório oos.writeObject (garoto); } catch (ioexception e) {e.printStackTrace (); } finalmente {ioutils.closeQuietly (OOS); } rabbitmqservice.send ("Objeto foi serializado"); 4>. Desserialize a matriz de bytes no consumidor (b).
No receptor, reescreva o ouvinte por exemplo 1 chave
@RabbitListener (fileues = "tópicos.messages") public void Process2 (String str1) {System.out.println (thread.currentThread (). GetName ()+"receba uma mensagem do tópico. Arquivo de arquivo = novo arquivo ("e: //webpackage//a.txt"); // Os caminhos entre consumidores e produtores devem ser consistentes antes que o arquivo possa ser lido e analisado. ObjectInputStream ois = null; tente {ois = new objectInputStream (new FileInputStream (arquivo)); Menino newUser = (garoto) ois.readObject (); System.out.println ("Desexence:"+NewUser); System.out.println ("Desexence:"+newUser.getName ()); System.out.println ("Desexence:"+newUser.getName ()); System.out.println ("Desexence After Getage"+NewUser.getage ()); } catch (ioexception e) {e.printStackTrace (); } catch (classNotFoundException e) {e.printStackTrace (); } finalmente {ioutils.closeQuietly (OIS); tente {fileutils.forcedelete (arquivo); } catch (ioexception e) {e.printStackTrace (); }} System.out.println ("Mensagens:"+str1); } Mapeamento de verificação: IP: 8080/envio
Os resultados são os seguintes:
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.