下面我们通过一个实例看一下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. php第五节课

    封装 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o ...

  2. centos7安装mwget下载资源,提升下载速度

    1.安装mwget wget http://jaist.dl.sourceforge.net/project/kmphpfm/mwget/0.1/mwget_0.1.0.orig.tar.bz2 ta ...

  3. 【2000*】【Codeforces Round #518 (Div. 1) [Thanks, Mail.Ru!] B】Multihedgehog

    [链接] 我是链接,点我呀:) [题意] [题解] 找到度数为1的点. 他们显然是叶子节点. 然后每个叶子节点. 往上进行bfs. 累计他们的父亲节点的儿子的个数. 如果都满足要求那么就继续往上走. ...

  4. 【Codeforces 91B】Queue

    [链接] 我是链接,点我呀:) [题意] [题解] 对于每个i,用二分的方法求出来y所在的位置j. 可以这样求. 假设现在二分到了位置mid. 那么随便用个rmq求出来mid..n这一段的最小值tem ...

  5. poj 3177&&3352 求边双联通分量,先求桥,然后求分量( 临界表代码)

    /*这道题是没有重边的,求加几条边构成双联通,求边联通分量,先求出桥然后缩点,成一个棵树 找叶子节点的个数*/ #include<stdio.h>//用容器写在3177这个题上会超内存,但 ...

  6. mongodb--安全

    安全和认证 mongodb和redis比较像,安全部分依赖于其所存在的环境 一定要把mongodb放在一个可信的环境下去运行,mongodb只能被web服务器所访问,禁止开外网端口访问mongodb, ...

  7. HDU 2224 The shortest path

    The shortest path Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  8. 系统报 “client没有所需的特权” 的解决方法

    今在对服务端代码进行单元測试的时候.突然报出例如以下错误: client没有所需的特权 后经网上查找,相同的问题都是属于对C盘读写的问题.回忆自己的项目也须要对C盘进行创建文件夹和读写文件.故尝试运行 ...

  9. ios设计一部WindowsPhone手机

    ios设计一部WindowsPhone手机 main.m #import <Foundation/Foundation.h> #import "WindowsPhone.h&qu ...

  10. HDU 5308 I Wanna Become A 24-Point Master

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5308 题面: I Wanna Become A 24-Point Master Time Limit ...