rabbitmq学习10:使用spring-ampq发送消息及异步接受消息

RabbitMQ学习笔记;spring-amqp

   前面我们已经学习了发送消息及同步接收消息的例子了。下面我们来看看如何通过Spring配置来实现异步接收消息。

   现在我们建立两个WEB项目。发送消息的项目命名为”rabbitmq-demo-producer“ ,异步接受的消息项目名称”rabbitmq-demo-consumer“。

  下面来看看rabbitmq-demo-producer项目中发送信息的程序及配置。

 MessageProducer类是用于发送消息的类。实现如下

Java代码   收藏代码
  1. package com.abin.rabbitmq;  
  2.   
  3. import org.springframework.amqp.rabbit.core.RabbitTemplate;  
  4.   
  5. public class MessageProducer {  
  6.     private RabbitTemplate rabbitTemplate;  
  7.   
  8.     public void sendMessage(Integer i) {  
  9.         String message = "Hello World wubin " + "#" + i;  
  10.         //Exchange的名称为"hello.topic",routingkey的名称为"hello.world.q123ueue"  
  11.         rabbitTemplate.convertAndSend("hello.topic""hello.world.q123ueue",  
  12.                 message);  
  13.         System.out.println("发送第" + i + "个消息成功!内容为:" + message);  
  14.   
  15. //      String messages = "Hello World direct " + "#" + i;  
  16. //      rabbitTemplate.convertAndSend("hello.direct", "hello.world.queue",  
  17. //              messages);  
  18. //      System.out.println("发送第" + i + "个消息成功!内容为:" + messages);  
  19.     }  
  20.   
  21.     public void setRabbitTemplate(RabbitTemplate rabbitTemplate) {  
  22.         this.rabbitTemplate = rabbitTemplate;  
  23.     }  
  24.   
  25. }  

 

spring的配置文件如下:applicationContext-rabbitmq.xml

Java代码   收藏代码
  1. "1.0" encoding="UTF-8"?>  
  2. "http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">  
  5.     "connectionFactory"  
  6.         class="org.springframework.amqp.rabbit.connection.SingleConnectionFactory">  
  7.         "localhost" />  
  8.         "username" value="guest" />  
  9.         "password" value="guest" />  
  10.       
  11.     "amqpAdmin"  
  12.         class="org.springframework.amqp.rabbit.core.RabbitAdmin">  
  13.         "connectionFactory" />  
  14.       
  15.     "rabbitTemplate"  
  16.         class="org.springframework.amqp.rabbit.core.RabbitTemplate">  
  17.         "connectionFactory">  
  18.       
  19.     "messageProducer"  
  20.         class="com.abin.rabbitmq.MessageProducer">  
  21.         "rabbitTemplate">  
  22.             "rabbitTemplate" />  
  23.           
  24.       
  25.   

 

对于发送消息的程序自己可以实现,我是通过Struts2来实现的,例如

Java代码   收藏代码
  1. package com.abin.action;  
  2.   
  3. import java.util.Date;  
  4.   
  5. import com.abin.rabbitmq.MessageProducer;  
  6. import com.opensymphony.xwork2.ActionSupport;  
  7.   
  8. public class SendAction extends ActionSupport {  
  9.     private MessageProducer messageProducer;  
  10.   
  11.     public String execute() throws Exception {  
  12.         Date a = new Date();  
  13.         long b = System.currentTimeMillis();  
  14.         for (int i = 0; i <= 10000; i++) {  
  15.             messageProducer.sendMessage(i);  
  16.         }  
  17.         System.out.println(a);  
  18.         System.out.println(new Date());  
  19.         System.out.println("共花了" + (System.currentTimeMillis() - b) + "ms");  
  20.         return null;  
  21.     }  
  22.   
  23.     public void setMessageProducer(MessageProducer messageProducer) {  
  24.         this.messageProducer = messageProducer;  
  25.     }  
  26.   
  27. }  

 

发送消息项目的程序差不多就这些了

下面来看看接受消息的程序如下

HelloWorldHandler类用于接收消息的处理类,如下

 

Java代码   收藏代码
  1. package com.abin.rabbitmq;  
  2.   
  3. import java.util.Date;  
  4.   
  5. public class HelloWorldHandler {  
  6.     public void handleMessage(String text) {  
  7.         System.out.println("Received: " + text);  
  8.   
  9.         System.out.println(new Date());  
  10.     }  
  11. }  

 

spring的配置文件如下:applicationContext-rabbitmq.xml

 

 

Java代码   收藏代码
  1. "1.0" encoding="UTF-8"?>  
  2. "http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">  
  5.       
  6.     "connectionFactory"  
  7.         class="org.springframework.amqp.rabbit.connection.SingleConnectionFactory">  
  8.         "localhost" />  
  9.         "username" value="guest" />  
  10.         "password" value="guest" />  
  11.       
  12.       
  13.     "rabbitAdmin"  
  14.         class="org.springframework.amqp.rabbit.core.RabbitAdmin">  
  15.         "connectionFactory" />  
  16.       
  17.       
  18.     "rabbitTemplate"  
  19.         class="org.springframework.amqp.rabbit.core.RabbitTemplate">  
  20.         "connectionFactory">  
  21.       
  22.       
  23.     "helloWorldQueue"  
  24.         class="org.springframework.amqp.core.Queue">  
  25.         "hello.world.queue">  
  26.       
  27.       
  28.     "messageConverter"  
  29.         class="org.springframework.amqp.support.converter.SimpleMessageConverter">  
  30.       
  31.       
  32.     "hellotopic"  
  33.         class="org.springframework.amqp.core.TopicExchange">  
  34.         "hello.topic">  
  35.       
  36.   
  37.       
  38.     "hellodirect"  
  39.         class="org.springframework.amqp.core.DirectExchange">  
  40.         "hello.direct">  
  41.       
  42.       
  43.       
  44.     "queuebling"  
  45.         class="org.springframework.amqp.core.Binding">  
  46.         "0" ref="helloWorldQueue">  
  47.         "1" ref="hellotopic">  
  48.         "2" value="hello.world.#">  
  49.       
  50.       
  51.       
  52.     "helloWorldHandler"  
  53.         class="com.abin.rabbitmq.HelloWorldHandler">  
  54.       
  55.       
  56.     "helloListenerAdapter"  
  57.         class="org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter">  
  58.         "helloWorldHandler" />  
  59.         "defaultListenerMethod" value="handleMessage">  
  60.         "messageConverter" ref="messageConverter">  
  61.       
  62.       
  63.     "listenerContainer"  
  64.         class="org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer">  
  65.         "queueName" value="hello.world.queue">  
  66.         "connectionFactory" ref="connectionFactory">  
  67.         "messageListener" ref="helloListenerAdapter">  
  68.       
  69.       
  70.  

你可能感兴趣的:(rabbitmq学习10:使用spring-ampq发送消息及异步接受消息)