http://blog.csdn.net/zhu_tianwei/article/details/40890543

以下实现使用Exchange类型为DirectExchange. routingkey的名称默认为Queue的名称。

1.所需jar包依赖

  1. <properties>
  2. <rabbitmq.version>3.0.4</rabbitmq.version>
  3. <spring.amqp.version>1.1.1.RELEASE</spring.amqp.version>
  4. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  5. <spring.version>3.1.2.RELEASE</spring.version>
  6. </properties>
  7. <dependencies>
  8. <dependency>
  9. <groupId>com.rabbitmq</groupId>
  10. <artifactId>amqp-client</artifactId>
  11. <version>${rabbitmq.version}</version>
  12. </dependency>
  13. <dependency>
  14. <groupId>org.springframework.amqp</groupId>
  15. <artifactId>spring-rabbit</artifactId>
  16. <version>${spring.amqp.version}</version>
  17. </dependency>
  18. <dependency>
  19. <groupId>org.springframework</groupId>
  20. <artifactId>spring-core</artifactId>
  21. <version>${spring.version}</version>
  22. <exclusions>
  23. <!-- Exclude Commons Logging in favor of SLF4j -->
  24. <exclusion>
  25. <groupId>commons-logging</groupId>
  26. <artifactId>commons-logging</artifactId>
  27. </exclusion>
  28. </exclusions>
  29. </dependency>
  30. <dependency>
  31. <groupId>org.springframework</groupId>
  32. <artifactId>spring-context</artifactId>
  33. <version>${spring.version}</version>
  34. </dependency>
  35. <dependency>
  36. <groupId>org.springframework</groupId>
  37. <artifactId>spring-test</artifactId>
  38. <version>${spring.version}</version>
  39. <scope>test</scope>
  40. </dependency>
  41. <dependency>
  42. <groupId>junit</groupId>
  43. <artifactId>junit</artifactId>
  44. <version>4.8.1</version>
  45. <scope>test</scope>
  46. </dependency>
  47. <dependency>
  48. <groupId>org.springframework.amqp</groupId>
  49. <artifactId>spring-amqp</artifactId>
  50. <version>${spring.amqp.version}</version>
  51. <classifier>sources</classifier>
  52. <scope>compile</scope>
  53. </dependency>
  54. <dependency>
  55. <groupId>commons-lang</groupId>
  56. <artifactId>commons-lang</artifactId>
  57. <version>2.6</version>
  58. </dependency>
  59. <dependency>
  60. <groupId>org.slf4j</groupId>
  61. <artifactId>slf4j-api</artifactId>
  62. <version>1.5.10</version>
  63. </dependency>
  64. <dependency>
  65. <groupId>org.slf4j</groupId>
  66. <artifactId>jcl-over-slf4j</artifactId>
  67. <version>1.5.10</version>
  68. <scope>runtime</scope>
  69. </dependency>
  70. <dependency>
  71. <groupId>org.slf4j</groupId>
  72. <artifactId>slf4j-log4j12</artifactId>
  73. <version>1.5.10</version>
  74. <scope>runtime</scope>
  75. </dependency>
  76. <dependency>
  77. <groupId>log4j</groupId>
  78. <artifactId>log4j</artifactId>
  79. <version>1.2.14</version>
  80. <scope>runtime</scope>
  81. </dependency>
  82. <dependency>
  83. <groupId>org.aspectj</groupId>
  84. <artifactId>aspectjweaver</artifactId>
  85. <version>1.6.9</version>
  86. </dependency>
  87. </dependencies>

2.application.properties配置

  1. #============== rabbitmq config ====================
  2. rabbit.hosts=192.168.101.210
  3. rabbit.username=admin
  4. rabbit.password=admin
  5. rabbit.virtualHost=/
  6. rabbit.queue=spring.queue.sync
  7. rabbit.routingKey=spring.queue.sync

3.applicationContext.xml配置

  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:aop="http://www.springframework.org/schema/aop"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  7. http://www.springframework.org/schema/aop
  8. http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
  9. http://www.springframework.org/schema/context
  10. http://www.springframework.org/schema/context/spring-context-3.0.xsd"
  11. default-lazy-init="false">
  12. <description>Spring公共配置 </description>
  13. <context:component-scan base-package="cn.slimsmart.rabbitmq.demo.spring" />
  14. <aop:aspectj-autoproxy />
  15. <!-- 定义受环境影响易变的变量 -->
  16. <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  17. <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
  18. <property name="ignoreResourceNotFound" value="true" />
  19. <property name="locations">
  20. <list>
  21. <!-- 标准配置 -->
  22. <value>classpath*:/application.properties</value>
  23. </list>
  24. </property>
  25. </bean>
  26. <import resource="applicationContext-rabbitmq-sync.xml"/>
  27. </beans>

4.applicationContext-rabbitmq-sync.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. <!-- 创建connectionFactory -->
  9. <bean id="rabbitConnectionFactory"
  10. class="org.springframework.amqp.rabbit.connection.CachingConnectionFactory">
  11. <constructor-arg value="${rabbit.hosts}"/>
  12. <property name="username" value="${rabbit.username}"/>
  13. <property name="password" value="${rabbit.password}"/>
  14. <property name="virtualHost" value="${rabbit.virtualHost}"/>
  15. <property name="channelCacheSize" value="5"/>
  16. </bean>
  17. <!-- 创建rabbitAdmin 代理类 -->
  18. <!--     <bean id="rabbitAdmin" -->
  19. <!--         class="org.springframework.amqp.rabbit.core.RabbitAdmin"> -->
  20. <!--         <constructor-arg ref="rabbitConnectionFactory" /> -->
  21. <!--     </bean> -->
  22. <!-- 创建rabbitTemplate 消息模板类 -->
  23. <bean id="rabbitTemplate"
  24. class="org.springframework.amqp.rabbit.core.RabbitTemplate">
  25. <constructor-arg ref="rabbitConnectionFactory"></constructor-arg>
  26. <property name="queue" value="${rabbit.queue}"></property>
  27. <property name="routingKey" value="${rabbit.routingKey}"></property>
  28. </bean>
  29. <!-- 声明Queue并设定Queue的名称 -->
  30. <!--     <bean id="helloWorldQueue"   -->
  31. <!--         class="org.springframework.amqp.core.Queue">   -->
  32. <!--         <constructor-arg value="${rabbit.queue}"></constructor-arg>   -->
  33. <!--     </bean>   -->
  34. </beans>

5.生产者Producer.java

  1. import org.springframework.amqp.core.AmqpTemplate;
  2. import org.springframework.amqp.rabbit.core.RabbitTemplate;
  3. import org.springframework.context.ApplicationContext;
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;
  5. //生产者
  6. public class Producer {
  7. public static void main(String[] args) {
  8. ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
  9. AmqpTemplate amqpTemplate = context.getBean(RabbitTemplate.class);
  10. amqpTemplate.convertAndSend("test spring sync");
  11. }
  12. }

6.消费者Consumer.java

  1. import org.springframework.amqp.core.AmqpTemplate;
  2. import org.springframework.amqp.rabbit.core.RabbitTemplate;
  3. import org.springframework.context.ApplicationContext;
  4. import org.springframework.context.support.ClassPathXmlApplicationContext;
  5. //消费者
  6. public class Consumer {
  7. public static void main(String[] args) {
  8. ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
  9. AmqpTemplate amqpTemplate = context.getBean(RabbitTemplate.class);
  10. System.out.println("Received: " + amqpTemplate.receiveAndConvert());
  11. }
  12. }

运行生产者向队列中发送一条消息,再运行消费者消费消息。

(转)RabbitMQ学习之spring整合发送同步消息的更多相关文章

  1. (转) RabbitMQ学习之spring整合发送同步消息(注解实现)

    http://blog.csdn.net/zhu_tianwei/article/details/40918477 上一篇文章通过xml配置rabbitmq的rabbitTemplate,本节将使用注 ...

  2. (转) RabbitMQ学习之spring整合发送异步消息

    http://blog.csdn.net/zhu_tianwei/article/details/40919031 实现使用Exchange类型为DirectExchange. routingkey的 ...

  3. (转)RabbitMQ学习之spring整合发送异步消息(注解实现)

    http://blog.csdn.net/zhu_tianwei/article/details/40919249 实现使用Exchange类型为DirectExchange. routingkey的 ...

  4. 【RocketMQ源码学习】- 3. Client 发送同步消息

    本文较长,代码后面给了方法简图,希望给你帮助 发送的方式 同步发送 异步发送 消息的类型 普通消息 顺序消息 事务消息 发送同步消息的时序图 为了防止读者朋友嫌烦,可以看下时序图,后面我也会给出方法的 ...

  5. ActiveMQ学习总结------Spring整合ActiveMQ 04

    通过前几篇的学习,相信大家已经对我们的ActiveMQ的原生操作已经有了个深刻的概念, 那么这篇文章就来带领大家一步一步学习下ActiveMQ结合Spring的实战操作 注:本文将省略一部分与Acti ...

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

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

  7. Spring整合ActiveMQ实现消息延迟投递和定时投递

    linux(centos)系统安装activemq参考:https://www.cnblogs.com/pxblog/p/12222231.html 首先在ActiveMQ的安装路径 /conf/ac ...

  8. RabbitMQ走过的坑,发送的消息是乱码

    发送的消息在可视化界面中是乱码,如图: 看见这个content_tpye没有,是不是很奇怪,就是这个坑,设置下就行,看代码: @Bean Jackson2JsonMessageConverter me ...

  9. RabbitMQ学习之spring配置文件rabbit标签的使用

    下面我们通过一个实例看一下rabbit的使用. 1.实现一个消息监听器ReceiveMessageListener.Java package org.springframework.amqp.core ...

随机推荐

  1. 填坑...P1546 最短网络 Agri-Net

    P1546 最短网络 Agri-Net 难度普及/提高- 时空限制1s / 128MB 题目背景 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场.当然,他需要 ...

  2. [bzoj2044] 三维导弹拦截 (二分图最大匹配+dp)

    传送门 Description 一场战争正在A国与B国之间如火如荼的展开. B国凭借其强大的经济实力开发出了无数的远程攻击导弹,B国的领导人希望,通过这些导弹直接毁灭A国的指挥部,从而取得战斗的胜利! ...

  3. Linux shell文本处理工具

    搞定Linux Shell文本处理工具,看完这篇集锦就够了 Linux Shell是一种基本功,由于怪异的语法加之较差的可读性,通常被Python等脚本代替.既然是基本功,那就需要掌握,毕竟学习She ...

  4. Python之scrapy linkextractors使用错误

    1.环境及版本 python3.7.1+scrapy1.5.1 2.问题及错误代码详情 优先贴上问题代码,如下: import scrapy from scrapy.linkextractors im ...

  5. 邓_ Phpcms·二次开发

    PHPCMS V9产品介绍 PHPCMS V9(简称V9)采用PHP5+MYSQL做为技术基础进行开发.V9采用OOP(面向对象)方式进行基础运行框架搭建.模块化开发方式做为功能开发形式.框架易于功能 ...

  6. SCVMM-VMWARE ACE虚拟机管理工具

    SCVMM是微软的虚拟化管理工具 VMWARE ACE是另一套虚拟化的工具 这两套工具都是用来管理虚拟机的,可以直接将物理机虚拟化为虚拟机 企业一旦发展到了一定阶段,并然需要自己的服务器和虚拟化环境, ...

  7. android 百度地图 定位功能

    废话不多说 直接新建一个新android项目:location,然后花一分钟申请一个key,然后就是把百度定位demo抄一下即可 1:首先在AndroidManifest.xml中加入权限 <u ...

  8. 开源项目 apk cfg and android app path profiling

    暑假里面完毕的一个小项目,limitation还是挺多的. 期待未来有更大的motivation 去完好它.通过此次的项目设计,对于smali的语法更加了解了,对于进一步学习android app的安 ...

  9. 很不错的点餐系统应用ios源代码完整版

    该源代码是一款很不错的点餐系统应用,应用源代码齐全,执行起来很不错,基本实现了点餐的一些经常使用的功能,并且界面设计地也很不错,是一个不错的ios应用学习的样例,喜欢的朋友能够下载学习看看,很多其它i ...

  10. Linux shell脚本中shift的用法说明【转】

    本文转载自:http://blog.csdn.net/zhu_xun/article/details/24796235 Linux shell脚本中shift的用法说明 shift命令用于对参数的移动 ...