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

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

1.资源配置application.properties

[plain] view plaincopy print?
  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

[html] view plaincopy print?
  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

[html] view plaincopy print?
  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

[java] view plaincopy print?
  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

[java] view plaincopy print?
  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

[java] view plaincopy print?
  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. }

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

[plain] view plaincopy print?
  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

转载于:https://www.cnblogs.com/telwanggs/p/7124785.html

RabbitMQ学习之基于spring-rabbitmq的消息异步发送相关推荐

  1. 乐行学院RabbitMQ学习教程 第一章 RabbitMQ介绍(可供技术选型时使用)

    乐行学院RabbitMQ学习教程 第一章 RabbitMQ介绍 RabbitMQ介绍 1.RabbitMQ技术简介 2.RabbitMQ其他扩展插件 2.1监控工具rabbitmq-managemen ...

  2. RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决)

    RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决) 参考文章: (1)RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决) (2)https://www.cnblogs. ...

  3. 魔方APP项目-06-用户注册,完成短信验证码的校验、基于Celery实现短信异步发送、用户登录,jwt登陆认证、服务端提供用户登录的API接口

    一.用户注册- 1.完成短信验证码的校验 application.utils.language.message,代码: class ErrorMessage():ok = "ok" ...

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

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

  5. RabbitMQ 学习(九)-- RabbitMQ 集群

    RabbitMQ 集群 最开始我们介绍了如何安装及运行 RabbitMQ 服务,不过这些是单机版的,无法满足目前真实应用的要求.如果 RabbitMQ 服务器遇到内存崩溃.机器掉电或者主板故障等情况, ...

  6. spring.rabbitmq.template.mandatory 和spring.rabbitmq.publisher-returns

    在SpringBoot的RabbitMQ配置中,有如下一项: spring.rabbitmq.template.mandatory = true 官方注释: Enable mandatory mess ...

  7. RabbitMq学习笔记005---登录rabbitmq报错User can only log in via localhost

    在访问管理界面使用guest用户登录时出现login failed错误. 到服务器上查询日志显示出现错误的原因是:HTTP access denied: user 'guest' - User can ...

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

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

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

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

最新文章

  1. 《大数据分析原理与实践》——导读
  2. 白名单模板_亚马逊品牌备案常见问题—— 白名单、IP加速器及品牌备案后无法使用A+...
  3. url映射 ccf (Java正则表达式80分解法)
  4. 在本地安装独立的HBase和Apache Storm简单集群
  5. 《移山之道-VSTS软件开发指南》---读书笔记
  6. 高级语言程序设计C试卷答案,2018高级语言程序设计考卷B及参考答案.docx
  7. Leetcode--221--Maximal Square
  8. Web Service-第一篇什么是Web Service
  9. linux系统的电脑要不要买,是否有必要为Linux购买一台相对较高配置的电脑?
  10. java确定随机数组的范围_Java程序以生成一定范围内的随机数数组并获取最小值和最大值...
  11. 在精益(Lean)中对定理进行证明(第一章)
  12. POP3、SMTP和IMAP 协议
  13. 我的世界超能物质纳米机器人_我的世界超能物质攻略
  14. php redis 防超卖,redis防止抢购商品超卖
  15. 曼陀罗花对女性有什么作用?
  16. 服务器被劫持怎么修复不了,电脑DNS被劫持怎么修复?电脑dns被劫持的完美解决方法...
  17. 二维码签到的几大优势,你了解几个?
  18. B站这场跨年晚会价值60亿,凭啥?
  19. 在测试tensorBroad中在运行mnist_with_summaries.py时URLError:urlopen error [WinError 10060] 由于连接方在一段时间后没有正确答
  20. tolua全教程-Chinar

热门文章

  1. (49)System Verilog 类中数组长度约束
  2. (09)System Verilog 队列示例
  3. java 跨平台 ios_OGEngine发布跨平台版本,支持iOS及Android
  4. git 创建webpack项目_使用webpack手动创建一个完整项目的全过程
  5. php7 curl开源库,7个适用于PHP的最佳Curl包装器库
  6. MFC 设置应用程序开机启动并设置运行路径
  7. Python自定义包
  8. Python中的split()函数
  9. 【STM32】手把手固件库开发工程建立
  10. php gettext 为空,PHP Gettext