RabbitMQ學習之spring配置文件rabbit標籤的使用

下面咱們經過一個實例看一下rabbit的使用。html

1.實現一個消息監聽器ReceiveMessageListener.javajava

 

[java] view plain copyspring

  1. package org.springframework.amqp.core;  
  2.   
  3. /** 
  4.  * Listener interface to receive asynchronous delivery of Amqp Messages. 
  5.  * 
  6.  * @author Mark Pollack 
  7.  */  
  8. public interface MessageListener {  
  9.   
  10.     void onMessage(Message message);  
  11.   
  12. }  


2.消費者配置Consumer.xmljson

 

 

[html] view plain copyasync

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.        xmlns:context="http://www.springframework.org/schema/context"  
  5.        xmlns:rabbit="http://www.springframework.org/schema/rabbit"  
  6.        xsi:schemaLocation="  
  7.             http://www.springframework.org/schema/beans  
  8.                 http://www.springframework.org/schema/beans/spring-beans.xsd  
  9.             http://www.springframework.org/schema/context  
  10.                 http://www.springframework.org/schema/context/spring-context.xsd  
  11.             http://www.springframework.org/schema/rabbit  
  12.                 http://www.springframework.org/schema/rabbit/spring-rabbit-1.0.xsd">  
  13.    
  14.    <!-- 鏈接服務配置  -->  
  15.     <rabbit:connection-factory id="connectionFactory" host="192.168.36.102" username="admin"  
  16.         password="admin" port="5672" virtual-host="/"  channel-cache-size="5" />  
  17.            
  18.    <rabbit:admin connection-factory="connectionFactory"/>  
  19.      
  20.    <!-- queue 隊列聲明-->  
  21.    <rabbit:queue durable="true" auto-delete="false" exclusive="false" name="spring.queue.tag"/>  
  22.       
  23.       
  24.    <!-- exchange queue binging key 綁定 -->  
  25.     <rabbit:direct-exchange name="spring.queue.exchange" durable="true" auto-delete="false">  
  26.         <rabbit:bindings>  
  27.             <rabbit:binding queue="spring.queue.tag" key="spring.queue.tag.key"/>  
  28.         </rabbit:bindings>  
  29.     </rabbit:direct-exchange>  
  30.       
  31.     <bean id="receiveMessageListener"  
  32.         class="cn.slimsmart.rabbitmq.demo.spring.tag.ReceiveMessageListener" />  
  33.        
  34.     <!-- queue litener  觀察 監聽模式 當有消息到達時會通知監聽在對應的隊列上的監聽對象-->  
  35.     <rabbit:listener-container connection-factory="connectionFactory" acknowledge="auto" >  
  36.         <rabbit:listener queues="spring.queue.tag" ref="receiveMessageListener" />  
  37.     </rabbit:listener-container>  
  38. </beans>  

3.生產者配置Producer.xml.net

 

 

[html] view plain copy插件

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"  
  4.     xmlns:rabbit="http://www.springframework.org/schema/rabbit"  
  5.     xsi:schemaLocation="  
  6.             http://www.springframework.org/schema/beans  
  7.                 http://www.springframework.org/schema/beans/spring-beans.xsd  
  8.             http://www.springframework.org/schema/context  
  9.                 http://www.springframework.org/schema/context/spring-context.xsd  
  10.             http://www.springframework.org/schema/rabbit  
  11.                 http://www.springframework.org/schema/rabbit/spring-rabbit-1.0.xsd">  
  12.   
  13.     <!-- 鏈接服務配置 -->  
  14.     <rabbit:connection-factory id="connectionFactory"  
  15.         host="192.168.36.102" username="admin" password="admin" port="5672"  
  16.         virtual-host="/" channel-cache-size="5" />  
  17.   
  18.     <rabbit:admin connection-factory="connectionFactory" />  
  19.   
  20.     <!-- queue 隊列聲明 -->  
  21.     <rabbit:queue  durable="true"  
  22.         auto-delete="false" exclusive="false" name="spring.queue.tag" />  
  23.   
  24.   
  25.     <!-- exchange queue binging key 綁定 -->  
  26.     <rabbit:direct-exchange name="spring.queue.exchange"  
  27.         durable="true" auto-delete="false">  
  28.         <rabbit:bindings>  
  29.             <rabbit:binding queue="spring.queue.tag" key="spring.queue.tag.key" />  
  30.         </rabbit:bindings>  
  31.     </rabbit:direct-exchange>  
  32.   
  33.     <!-- spring amqp默認的是jackson 的一個插件,目的將生產者生產的數據轉換爲json存入消息隊列,因爲Gson的速度快於jackson,這裏替換爲Gson的一個實現 -->  
  34.     <bean id="jsonMessageConverter"  
  35.         class="cn.slimsmart.rabbitmq.demo.spring.tag.Gson2JsonMessageConverter" />  
  36.   
  37.     <!-- spring template聲明 -->  
  38.     <rabbit:template id="amqpTemplate" exchange="spring.queue.exchange"  routing-key="spring.queue.tag.key"  
  39.         connection-factory="connectionFactory" message-converter="jsonMessageConverter" />  
  40. </beans>  

4.消費者啓動類ConsumerMain.javaxml

 

 

[java] view plain copyhtm

  1. package cn.slimsmart.rabbitmq.demo.spring.tag;  
  2.   
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  4.   
  5. public class ConsumerMain {  
  6.   
  7.     public static void main(String[] args) {  
  8.         new ClassPathXmlApplicationContext("Consumer.xml");    
  9.     }  
  10. }  

5.生產者啓動類ProducerMain.java對象

 

 

[java] view plain copy

  1. package cn.slimsmart.rabbitmq.demo.spring.tag;  
  2.   
  3. import org.springframework.amqp.core.AmqpTemplate;  
  4. import org.springframework.amqp.rabbit.core.RabbitTemplate;  
  5. import org.springframework.context.ApplicationContext;  
  6. import org.springframework.context.support.ClassPathXmlApplicationContext;  
  7.   
  8. public class ProducerMain {  
  9.       
  10.     public static void main(String[] args) {  
  11.         ApplicationContext context = new ClassPathXmlApplicationContext("Producer.xml");    
  12.         AmqpTemplate amqpTemplate = context.getBean(RabbitTemplate.class);     
  13.         User user = new User();  
  14.         user.setName("niuniu");  
  15.         amqpTemplate.convertAndSend(user);  
  16.     }  
  17. }  


先啓動消費者,監聽接收消息,再啓動生產者發送消息。

 

輸出: data :{"name":"niuniu"}

以下4中轉發器類型標籤

rabbit:fanout-exchange

rabbit:direct-exchange

rabbit:topic-exchange

rabbit:headers-exchange

相關文章
相關標籤/搜索