RabbitMQ学习之spring配置文件rabbit标签的使用
下面我们通过一个实例看一下rabbit的使用。
1.实现一个消息监听器ReceiveMessageListener.Java
- package org.springframework.amqp.core;
- /**
- * Listener interface to receive asynchronous delivery of Amqp Messages.
- *
- * @author Mark Pollack
- */
- public interface MessageListener {
- void onMessage(Message message);
- }
2.消费者配置Consumer.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:rabbit="http://www.springframework.org/schema/rabbit"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/rabbit
- http://www.springframework.org/schema/rabbit/spring-rabbit-1.0.xsd">
- <!-- 连接服务配置 -->
- <rabbit:connection-factory id="connectionFactory" host="192.168.36.102" username="admin"
- password="admin" port="5672" virtual-host="/" channel-cache-size="5" />
- <rabbit:admin connection-factory="connectionFactory"/>
- <!-- queue 队列声明-->
- <rabbit:queue durable="true" auto-delete="false" exclusive="false" name="spring.queue.tag"/>
- <!-- exchange queue binging key 绑定 -->
- <rabbit:direct-exchange name="spring.queue.exchange" durable="true" auto-delete="false">
- <rabbit:bindings>
- <rabbit:binding queue="spring.queue.tag" key="spring.queue.tag.key"/>
- </rabbit:bindings>
- </rabbit:direct-exchange>
- <bean id="receiveMessageListener"
- class="cn.slimsmart.rabbitmq.demo.spring.tag.ReceiveMessageListener" />
- <!-- queue litener 观察 监听模式 当有消息到达时会通知监听在对应的队列上的监听对象-->
- <rabbit:listener-container connection-factory="connectionFactory" acknowledge="auto" >
- <rabbit:listener queues="spring.queue.tag" ref="receiveMessageListener" />
- </rabbit:listener-container>
- </beans>
3.生产者配置Producer.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
- xmlns:rabbit="http://www.springframework.org/schema/rabbit"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/rabbit
- http://www.springframework.org/schema/rabbit/spring-rabbit-1.0.xsd">
- <!-- 连接服务配置 -->
- <rabbit:connection-factory id="connectionFactory"
- host="192.168.36.102" username="admin" password="admin" port="5672"
- virtual-host="/" channel-cache-size="5" />
- <rabbit:admin connection-factory="connectionFactory" />
- <!-- queue 队列声明 -->
- <rabbit:queue durable="true"
- auto-delete="false" exclusive="false" name="spring.queue.tag" />
- <!-- exchange queue binging key 绑定 -->
- <rabbit:direct-exchange name="spring.queue.exchange"
- durable="true" auto-delete="false">
- <rabbit:bindings>
- <rabbit:binding queue="spring.queue.tag" key="spring.queue.tag.key" />
- </rabbit:bindings>
- </rabbit:direct-exchange>
- <!-- spring amqp默认的是jackson 的一个插件,目的将生产者生产的数据转换为json存入消息队列,由于Gson的速度快于jackson,这里替换为Gson的一个实现 -->
- <bean id="jsonMessageConverter"
- class="cn.slimsmart.rabbitmq.demo.spring.tag.Gson2JsonMessageConverter" />
- <!-- spring template声明 -->
- <rabbit:template id="amqpTemplate" exchange="spring.queue.exchange" routing-key="spring.queue.tag.key"
- connection-factory="connectionFactory" message-converter="jsonMessageConverter" />
- </beans>
4.消费者启动类ConsumerMain.java
- package cn.slimsmart.rabbitmq.demo.spring.tag;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- public class ConsumerMain {
- public static void main(String[] args) {
- new ClassPathXmlApplicationContext("Consumer.xml");
- }
- }
5.生产者启动类ProducerMain.java
- package cn.slimsmart.rabbitmq.demo.spring.tag;
- import org.springframework.amqp.core.AmqpTemplate;
- import org.springframework.amqp.rabbit.core.RabbitTemplate;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- public class ProducerMain {
- public static void main(String[] args) {
- ApplicationContext context = new ClassPathXmlApplicationContext("Producer.xml");
- AmqpTemplate amqpTemplate = context.getBean(RabbitTemplate.class);
- User user = new User();
- user.setName("niuniu");
- amqpTemplate.convertAndSend(user);
- }
- }
先启动消费者,监听接收消息,再启动生产者发送消息。
输出: 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标签的使用的更多相关文章
- (转)RabbitMQ学习之spring整合发送异步消息(注解实现)
http://blog.csdn.net/zhu_tianwei/article/details/40919249 实现使用Exchange类型为DirectExchange. routingkey的 ...
- Spring学习笔记--Spring配置文件和依赖注入
Spring配置文件 1.alias:设置别名,为bean设置别名,并且可以设置多个别名; <!-- 设置别名 --> <alias name="user" al ...
- (转) RabbitMQ学习之spring整合发送异步消息
http://blog.csdn.net/zhu_tianwei/article/details/40919031 实现使用Exchange类型为DirectExchange. routingkey的 ...
- (转) RabbitMQ学习之spring整合发送同步消息(注解实现)
http://blog.csdn.net/zhu_tianwei/article/details/40918477 上一篇文章通过xml配置rabbitmq的rabbitTemplate,本节将使用注 ...
- (转)RabbitMQ学习之spring整合发送同步消息
http://blog.csdn.net/zhu_tianwei/article/details/40890543 以下实现使用Exchange类型为DirectExchange. routingke ...
- Spring配置文件beans标签报错问题解决
因为有很多配置是复制过来的,附带的很多注释的格式会导致报错,所以可以要试试把注释去掉,只有配置文件的话可能就不会报错了.
- Spring 源码(4)在Spring配置文件中自定义标签如何实现?
Spring 配置文件自定义标签的前置条件 在上一篇文章https://www.cnblogs.com/redwinter/p/16165274.html Spring BeanFactory的创建过 ...
- RabbitMQ学习之(二)_Centos6下安装RabbitMQ及管理配置
首先yum方式安装依赖包 yum install ncurses-devel unixODBC unixODBC-devel 安装Erlang语言环境 wget http://erlang.org/d ...
- (转)使用Spring配置文件实现事务管理
http://blog.csdn.net/yerenyuan_pku/article/details/52886207 前面我们讲解了使用Spring注解方式来管理事务,现在我们就来学习使用Sprin ...
随机推荐
- [Ynoi2015]即便看不到未来
题目大意: 给定一个序列,每次询问,给出一个区间$[l,r]$. 设将区间内的元素去重后重排的数组为$p$,求$p$中长度为$1\sim 10$的极长值域连续段个数. 长度为$L$的极长值域连续段的定 ...
- CentOS6.2上安装Oracle10g报ins_emdb.mk错误处理方法
oracle安装过程报ins_emdb.mk错误,此时继续点击“continue”即可,待Oracle完成安装后,再手工执行相应脚本完成链接即可 在CentOS6.2操作系统上,安装Oracle10g ...
- Java - 将vCard中十六进制编码转换成Unicode
做课程设计的时候在处理vCard格式的时候遇到过出现十六进制编码的情况,例如 QUOTED-PRINTABLE:=XX=XX=XX=XX=XX`````` 其中XX代表十六进制数,当然,也有可能在末尾 ...
- spring mvc中的@propertysource
在spring mvc中,在配置文件中的东西,可以在java代码中通过注解进行读取了: @PropertySource 在spring 3.1中开始引入 比如有配置文件 config.propert ...
- POJ 2954
PICK定理:格子上的多边形面积=边界上格子点数/2+内部点数-1. 利用叉积求出面积.再枚举边上的点数.然后按公式求出内部点数就可以了. 关于PICK:http://blog.csdn.net/i_ ...
- ruby for in 循环中改变i的值无效
ruby for in 循环中改变i的值无效 for j in 1..5 puts "#{j}hehe" j = j + 2 #break end 在循环中,使用j = j + 2 ...
- Sql Server 强制断开数据库已有连接的方法
用管理员账户sa登陆,然后在master下新建查询: 在查询窗体输入: declare @i int declare cur cursor for select spid from sysproces ...
- 科普:alphago是什么
鉴于大部分人类对alphago的认识: 1:Alphago有什么了不起的?不就是算得快吗.ibm早在20年前就通过象棋战胜人类了.又是Google的一次营销. 2:alphago 实现人工智能了,电脑 ...
- POJ 3723 Tree(树链剖分)
POJ 3237 Tree 题目链接 就多一个取负操作,所以线段树结点就把最大和最小值存下来,每次取负的时候,最大和最小值取负后.交换就可以 代码: #include <cstdio> # ...
- luogu2508 [HAOI2008]圆上的整点
题目大意 给出\(r\),求圆\(x^2+y^2=r^2\)上坐标均为整数的点数.\(n<=2,000,000,000\) 总体思路 我们看到这个数据大小,还是个数学题,想到这个的时间复杂度应当 ...