下面我们通过一个实例看一下rabbit的使用。

1.实现一个消息监听器ReceiveMessageListener.Java

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

2.消费者配置Consumer.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"
  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. <rabbit:connection-factory id="connectionFactory" host="192.168.36.102" username="admin"
  15. password="admin" port="5672" virtual-host="/"  channel-cache-size="5" />
  16. <rabbit:admin connection-factory="connectionFactory"/>
  17. <!-- queue 队列声明-->
  18. <rabbit:queue durable="true" auto-delete="false" exclusive="false" name="spring.queue.tag"/>
  19. <!-- exchange queue binging key 绑定 -->
  20. <rabbit:direct-exchange name="spring.queue.exchange" durable="true" auto-delete="false">
  21. <rabbit:bindings>
  22. <rabbit:binding queue="spring.queue.tag" key="spring.queue.tag.key"/>
  23. </rabbit:bindings>
  24. </rabbit:direct-exchange>
  25. <bean id="receiveMessageListener"
  26. class="cn.slimsmart.rabbitmq.demo.spring.tag.ReceiveMessageListener" />
  27. <!-- queue litener  观察 监听模式 当有消息到达时会通知监听在对应的队列上的监听对象-->
  28. <rabbit:listener-container connection-factory="connectionFactory" acknowledge="auto" >
  29. <rabbit:listener queues="spring.queue.tag" ref="receiveMessageListener" />
  30. </rabbit:listener-container>
  31. </beans>

3.生产者配置Producer.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: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. <rabbit:connection-factory id="connectionFactory"
  14. host="192.168.36.102" username="admin" password="admin" port="5672"
  15. virtual-host="/" channel-cache-size="5" />
  16. <rabbit:admin connection-factory="connectionFactory" />
  17. <!-- queue 队列声明 -->
  18. <rabbit:queue  durable="true"
  19. auto-delete="false" exclusive="false" name="spring.queue.tag" />
  20. <!-- exchange queue binging key 绑定 -->
  21. <rabbit:direct-exchange name="spring.queue.exchange"
  22. durable="true" auto-delete="false">
  23. <rabbit:bindings>
  24. <rabbit:binding queue="spring.queue.tag" key="spring.queue.tag.key" />
  25. </rabbit:bindings>
  26. </rabbit:direct-exchange>
  27. <!-- spring amqp默认的是jackson 的一个插件,目的将生产者生产的数据转换为json存入消息队列,由于Gson的速度快于jackson,这里替换为Gson的一个实现 -->
  28. <bean id="jsonMessageConverter"
  29. class="cn.slimsmart.rabbitmq.demo.spring.tag.Gson2JsonMessageConverter" />
  30. <!-- spring template声明 -->
  31. <rabbit:template id="amqpTemplate" exchange="spring.queue.exchange"  routing-key="spring.queue.tag.key"
  32. connection-factory="connectionFactory" message-converter="jsonMessageConverter" />
  33. </beans>

4.消费者启动类ConsumerMain.java

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

5.生产者启动类ProducerMain.java

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

先启动消费者,监听接收消息,再启动生产者发送消息。

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

如下4中转发器类型标签

rabbit:fanout-exchange

rabbit:direct-exchange

rabbit:topic-exchange

rabbit:headers-exchange

参考:http://blog.csdn.net/michaelzhaozero/article/details/23741511

RabbitMQ学习之spring配置文件rabbit标签的使用的更多相关文章

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

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

  2. Spring学习笔记--Spring配置文件和依赖注入

    Spring配置文件 1.alias:设置别名,为bean设置别名,并且可以设置多个别名; <!-- 设置别名 --> <alias name="user" al ...

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

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

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

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

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

    http://blog.csdn.net/zhu_tianwei/article/details/40890543 以下实现使用Exchange类型为DirectExchange. routingke ...

  6. Spring配置文件beans标签报错问题解决

    因为有很多配置是复制过来的,附带的很多注释的格式会导致报错,所以可以要试试把注释去掉,只有配置文件的话可能就不会报错了.

  7. Spring 源码(4)在Spring配置文件中自定义标签如何实现?

    Spring 配置文件自定义标签的前置条件 在上一篇文章https://www.cnblogs.com/redwinter/p/16165274.html Spring BeanFactory的创建过 ...

  8. RabbitMQ学习之(二)_Centos6下安装RabbitMQ及管理配置

    首先yum方式安装依赖包 yum install ncurses-devel unixODBC unixODBC-devel 安装Erlang语言环境 wget http://erlang.org/d ...

  9. (转)使用Spring配置文件实现事务管理

    http://blog.csdn.net/yerenyuan_pku/article/details/52886207 前面我们讲解了使用Spring注解方式来管理事务,现在我们就来学习使用Sprin ...

随机推荐

  1. CodeForces 245C-Game with Coins

    题意:给你一个n,紧接着n个正数,然后有一种操作:选择一个x满足(x*2+1<=n)一次可以把下标为  x,2*x,2*x+1的三个数同时减一: 问,最少几次操作可以使n个数字变为零(已经是0的 ...

  2. 35.multi-index和multi-type搜索模式

        一.multi-index和multi-type搜索模式 /_search:所有索引,所有type下的所有数据都搜索出来 /index1/_search:指定一个index,搜索其下所有typ ...

  3. Laravel 5

    遍历数组@foreach($brand as $v) <a href='/brandss/seeshops?id={{$v->id}}'><img src="/pub ...

  4. LID&LDS 的另外一种算法

    参见:LIS,LDS的另类算法(原) 然后讲讲我的想法:  有结论不上升子序列的个数=最长上升子序列的长度.....至于为什么,在下面讲 上代码: #include <iostream> ...

  5. 安装Maven并搭建Maven私有仓库

    一.说明 Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具.我们在进行Java代码开发的时候,Eclipse+Maven+Jetty是一个十 ...

  6. POJ 2914

    无向图全局最小割算法 求 G=(V, E)中任意 s-t 最小割的算法: 定义w(A, x) = ∑w(v[i], x),v[i]  A ∈  定义 Ax 为在x 前加入 A 的所有点的集合(不包括 ...

  7. HDU 1198 Farm Irrigation (并查集优化,构图)

    本题和HDU畅通project类似.仅仅只是畅通project给出了数的连通关系, 而此题须要自己推断连通关系,即两个水管能否够连接到一起,也是本题的难点所在. 记录状态.不断combine(),注意 ...

  8. APP漏洞自动化扫描专业评测报告(中篇)

    前言 上一篇中通过对阿里聚安全[1].360App漏洞扫描[2].腾讯金刚审计系统[3].百度移动云测试中心[4]以及AppRisk Scanner[5] 在收费情况.样本测试后的扫描时间对比和漏洞项 ...

  9. Iterator - 迭代器模式

    定义 提供一个方法顺序訪问一个聚合对象中个各个元素,而又不须要暴露该对象的内部结构. 案例 一个聚合对象.如一个列表List.应该提供一种方法来让别人能够訪问它的元素.而又不用暴露内部结构.迭代器模式 ...

  10. SpringMVC实战(三种映射处理器)

    1.前言 上一篇博客,简单的介绍了一下SpringMVC的基础知识,这篇博客来说一下SpringMVC中的几种映射处理器机制. 2.三种映射处理器 2.1 BeanNameUrlHandlerMapp ...