spring-rabbitmq的源码到http://github.com/momania/spring-rabbitmq下载,并可以下载实例代码。由于我使用的rabbitmq版本是3.0.4,部分代码做了调整。

具体实例如下(创建自动删除非持久队列):

1.资源配置application.properties

  1. #============== rabbitmq config ====================
  2. rabbit.hosts=192.168.36.102
  3. rabbit.username=admin
  4. rabbit.password=admin
  5. rabbit.virtualHost=/
  6. rabbit.exchange=spring-queue-async
  7. rabbit.queue=spring-queue-async
  8. rabbit.routingKey=spring-queue-async

2..发送端配置applicationContext-rabbitmq-async-send.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:context="http://www.springframework.org/schema/context"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="
  6. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
  7. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
  8. <context:property-placeholder location="classpath:application.properties"/>
  9. <bean id="rabbitConnectionFactory" class="com.rabbitmq.spring.connection.RabbitConnectionFactory">
  10. <property name="connectionFactory">
  11. <bean class="com.rabbitmq.client.ConnectionFactory">
  12. <property name="username" value="${rabbit.username}"/>
  13. <property name="password" value="${rabbit.password}"/>
  14. <property name="virtualHost" value="${rabbit.virtualHost}"/>
  15. </bean>
  16. </property>
  17. <property name="hosts" value="${rabbit.hosts}"/>
  18. </bean>
  19. <bean id="rabbitChannelFactory" class="com.rabbitmq.spring.channel.RabbitChannelFactory">
  20. <property name="connectionFactory" ref="rabbitConnectionFactory"/>
  21. </bean>
  22. <bean id="rabbitTemplate" class="com.rabbitmq.spring.template.ASyncRabbitTemplate">
  23. <property name="channelFactory" ref="rabbitChannelFactory"/>
  24. <property name="exchange" value="${rabbit.exchange}"/>
  25. <property name="routingKey" value="${rabbit.routingKey}"/>
  26. <!--optional-->
  27. <property name="exchangeType" value="TOPIC"/>
  28. <!--         mandatory是否强制发送       -->
  29. <property name="mandatory" value="false"/>
  30. <!--         immediate是否立即发送   -->
  31. <property name="immediate" value="false"/>
  32. </bean>
  33. </beans>

3.接收端配置applicationContext-rabbitmq-async-receive.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:context="http://www.springframework.org/schema/context"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="
  6. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
  7. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd">
  8. <context:property-placeholder location="classpath:application.properties"/>
  9. <bean id="rabbitConnectionFactory" class="com.rabbitmq.spring.connection.RabbitConnectionFactory">
  10. <property name="connectionFactory">
  11. <bean class="com.rabbitmq.client.ConnectionFactory">
  12. <property name="username" value="${rabbit.username}"/>
  13. <property name="password" value="${rabbit.password}"/>
  14. <property name="virtualHost" value="${rabbit.virtualHost}"/>
  15. </bean>
  16. </property>
  17. <property name="hosts" value="${rabbit.hosts}"/>
  18. </bean>
  19. <bean id="rabbitChannelFactory" class="com.rabbitmq.spring.channel.RabbitChannelFactory">
  20. <property name="connectionFactory" ref="rabbitConnectionFactory"/>
  21. </bean>
  22. <bean id="receiveMsgHandler" class="cn.slimsmart.rabbitmq.spring.rabbitmq.demo.async.ReceiveMsgHandler"/>
  23. <bean id="quotingParamtersTopicAdapter" class="com.rabbitmq.spring.listener.RabbitMessageListenerAdapter">
  24. <property name="channelFactory" ref="rabbitChannelFactory"/>
  25. <property name="delegate" ref="receiveMsgHandler"/>
  26. <property name="listenerMethod" value="handleMessage"/>
  27. <property name="exchange" value="${rabbit.exchange}"/>
  28. <!--optional-->
  29. <property name="exchangeType" value="TOPIC"/>
  30. <property name="routingKey" value="${rabbit.routingKey}"/>
  31. <property name="queueName" value="${rabbit.queue}"/>
  32. <property name="poolsize" value="5"/>
  33. </bean>
  34. </beans>

4.消息处理服务ReceiveMsgHandler.Java

  1. package cn.slimsmart.rabbitmq.spring.rabbitmq.demo.async;
  2. public class ReceiveMsgHandler {
  3. public void handleMessage(String text) {
  4. System.out.println("Received: " + text);
  5. }
  6. }

5.发送端启动代码Send.java

  1. package cn.slimsmart.rabbitmq.spring.rabbitmq.demo.async;
  2. import org.springframework.context.ApplicationContext;
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;
  4. import com.rabbitmq.spring.template.ASyncRabbitTemplate;
  5. public class Send {
  6. public static void main(String[] args) throws InterruptedException {
  7. ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-rabbitmq-async-send.xml");
  8. ASyncRabbitTemplate amqpTemplate = context.getBean(ASyncRabbitTemplate.class);
  9. for(int i=0;i<10000;i++){
  10. amqpTemplate.send("test spring async=>"+i);
  11. Thread.sleep(100);
  12. }
  13. }
  14. }

6.接收端启动代码Send.java

  1. package cn.slimsmart.rabbitmq.spring.rabbitmq.demo.async;
  2. import org.springframework.context.support.ClassPathXmlApplicationContext;
  3. public class Receive {
  4. public static void main(String[] args) {
  5. new ClassPathXmlApplicationContext("applicationContext-rabbitmq-async-receive.xml");
  6. }
  7. }

先启动接收端,再启动发送端。接收到消息如下:

  1. Received: test spring async=>0
  2. Received: test spring async=>1
  3. Received: test spring async=>2
  4. Received: test spring async=>3
  5. Received: test spring async=>4
  6. Received: test spring async=>5
  7. Received: test spring async=>6
  8. Received: test spring async=>7
  9. ......

实例代码:http://download.csdn.net/detail/tianwei7518/8135637

RabbitMQ学习之基于spring-rabbitmq的消息异步发送的更多相关文章

  1. RabbitMQ学习笔记五:RabbitMQ之优先级消息队列

    RabbitMQ优先级队列注意点: 1.只有当消费者不足,不能及时进行消费的情况下,优先级队列才会生效 2.RabbitMQ3.5以后才支持优先级队列 代码在博客:RabbitMQ学习笔记三:Java ...

  2. RabbitMQ学习以及与Spring的集成(三)

    本文介绍RabbitMQ与Spring的简单集成以及消息的发送和接收. 在RabbitMQ的Spring配置文件中,首先需要增加命名空间. xmlns:rabbit="http://www. ...

  3. RabbitMQ学习之基于spring-rabbitmq的RPC远程调用

    http://blog.csdn.net/zhu_tianwei/article/details/40920985 spring-rabbitmq中实现远程接口调用,主要在com.rabbitmq.s ...

  4. RabbitMQ学习以及与Spring的集成(二)

    本文介绍RabbitMQ的一些基本概念. RabbitMQ服务可以安装在独立服务器上,通过配置的账户和ip访问使用.也就是说,RabbitMQ和使用它的应用可以部署在不同的服务器上.RabbitMQ的 ...

  5. RabbitMQ学习笔记之五种模式及消息确认机制

    本文详细介绍简单模式Simple.工作模式Work.发布订阅模式Publish/Subscribe.Topic.Routing. Maven依赖引用 <dependencies> < ...

  6. RabbitMQ学习系列一安装RabbitMQ服务

    RabbitMQ学习系列一:windows下安装RabbitMQ服务 http://www.80iter.com/blog/1437026462550244 Rabbit MQ 是建立在强大的Erla ...

  7. 如何在优雅地Spring 中实现消息的发送和消费

    本文将对rocktmq-spring-boot的设计实现做一个简单的介绍,读者可以通过本文了解将RocketMQ Client端集成为spring-boot-starter框架的开发细节,然后通过一个 ...

  8. RabbitMQ学习以及与Spring的集成(一)

    本文记录RabbitMQ服务的搭建过程. 想要使用RabbitMQ消息中间件服务.首先要安装RabbitMQ,可以在:https://www.rabbitmq.com/download.html根据安 ...

  9. RabbitMQ学习笔记六:RabbitMQ之消息确认

    使用消息队列,必须要考虑的问题就是生产者消息发送失败和消费者消息处理失败,这两种情况怎么处理. 生产者发送消息,成功,则确认消息发送成功;失败,则返回消息发送失败信息,再做处理. 消费者处理消息,成功 ...

随机推荐

  1. for 循环的反汇编浅析

    for 循环 for 循环是使用频度最高的循环结构,我们通过 C 语言反汇编实例,来分析 for 循环结构在计算机底层的原理和构造.首先,我们编写一个简单的 for 循环: 为了方便观察,我们用十六进 ...

  2. windows环境下用pip安装pyautogui遇到的几个问题

    1.不能直接使用win+r运行cmd并使用pip,必须点击开始->windows系统->命令提示符,右键->以管理员身份运行 2.运行pip install pyautogui后提示 ...

  3. 【hihocoder 1295】Eular质数筛法

    [题目链接]:http://hihocoder.com/problemset/problem/1295 [题意] [题解] 可以在O(N)的复杂度内求出1..N里面的所有素数; 当然受空间限制,N可能 ...

  4. VS-诊断工具和智能跟踪

    MSDN文章

  5. (转载)Html解析工具Jsoup

    jsoup 简介Java 程序在解析 HTML 文档时,相信大家都接触过 htmlparser 这个开源项目,我曾经在 IBM DW 上发表过两篇关于 htmlparser 的文章,分别是:从 HTM ...

  6. 完毕port模型

    完毕port模型过程例如以下: 1.调用CreateIoCompletionPort函数创建完毕port. HANDLE CompletionPort=CreateIoCompletionStatus ...

  7. Yarn的工作流程

    http://study.163.com/course/courseLearn.htm?courseId=1002887002#/learn/video?lessonId=1003346099& ...

  8. adb命令查看报名和查看手机分辨率

    打开所要查看的应用包名: $ adb shell dumpsys activity top | head -n 10 TASK com.ss.android.article.news id=5 ACT ...

  9. Item 8:析构函数不要抛出异常 Effective C++笔记

    Item 8: Prevent exceptions from leaving destructors. 析构函数不要抛出异常 因为析构函数经常被自己主动调用,在析构函数中抛出的异常往往会难以捕获,引 ...

  10. atitit.浏览器插件解决方式----ftp插件 attilax 总结

    atitit.浏览器插件解决方式----ftp插件  attilax 总结 1. 界面概览  D:云盘同步目录p5p5f tp.demo.html1 2. 初始化1 3. 事实调用2 4. 參考2 1 ...