rabbitmq使用心得
因为公司项目需要使用消息中间件,实现相关业务的异步处理,所有选用了rabbitmq.通过看文档,爬过一个一个坑,终于还是实现了相关功能。
直接上配置文件:
<?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:rabbit="http://www.springframework.org/schema/rabbit"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/rabbit/spring-rabbit-1.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
<bean id="connectionFactory" class="org.springframework.amqp.rabbit.connection.CachingConnectionFactory">
<property name="username" value="${mq.userName}" />
<property name="password" value="${mq.password}" />
<property name="host" value="${mq.host}" />
<property name="port" value="${mq.port}" />
<property name="virtualHost" value="${mq.virtualHost}"/>
<property name="channelCacheSize" value="${mq.cache.size}"/>
</bean> <bean id="rabbitAdmin" class="org.springframework.amqp.rabbit.core.RabbitAdmin">
<constructor-arg ref="connectionFactory" />
</bean>
<bean id="rabbitTemplate" class="org.springframework.amqp.rabbit.core.RabbitTemplate">
<constructor-arg ref="connectionFactory"></constructor-arg>
<property name="exchange" value="${mq.exchange}"/>
<property name="routingKey" value="${mq.routingKey}"/>
<property name="queue" value="${mq.queue}"/>
</bean> <bean id="serializerMessageConverter" class="org.springframework.amqp.support.converter.SimpleMessageConverter"></bean> <bean id="queue" class="org.springframework.amqp.core.Queue">
<constructor-arg index="0" value="${mq.queue}"></constructor-arg>
<constructor-arg index="1" value="true"></constructor-arg>
<constructor-arg index="2" value="false"></constructor-arg>
<constructor-arg index="3" value="false"></constructor-arg>
</bean> <bean id="directExchange" class="org.springframework.amqp.core.DirectExchange">
<constructor-arg index="0" value="${mq.routingKey}"></constructor-arg>
<constructor-arg index="1" value="true"></constructor-arg>
<constructor-arg index="2" value="false"></constructor-arg>
</bean> <util:map id="arguments">
</util:map> <bean id="binding" class="org.springframework.amqp.core.Binding">
<constructor-arg index="0" value="${mq.queue}"></constructor-arg>
<constructor-arg index="1" value="QUEUE"></constructor-arg>
<constructor-arg index="2" value="${mq.exchange}"></constructor-arg>
<constructor-arg index="3" value="${mq.routingKey}"></constructor-arg>
<constructor-arg index="4" value="#{arguments}"></constructor-arg>
</bean> <bean id="rmqConsumer" class="com.tom.rabbitmq.MessageQueueReceiver"></bean> <bean id="messageListenerAdapter" class="org.springframework.amqp.rabbit.listener.adapter.MessageListenerAdapter">
<constructor-arg ref="rmqConsumer" />
<property name="defaultListenerMethod" value="onMessage"></property>
<property name="messageConverter" ref="serializerMessageConverter"></property>
</bean> <bean id="listenerContainer" class="org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer">
<property name="queues" ref="queue"></property>
<property name="connectionFactory" ref="connectionFactory"></property>
<property name="messageListener" ref="messageListenerAdapter"></property>
</bean>
</beans>
注意点:
配置queue的时候,Durability设为durable,这样在rabbitmq服务端重启的时候,消息队列里面的消息不回丢失。
配置文件中的如下,配置了在项目启动的时候,会自动去获得exchange,queue,在rabbitmq中注册。
<bean id="rabbitAdmin" class="org.springframework.amqp.rabbit.core.RabbitAdmin">
<constructor-arg ref="connectionFactory" />
</bean> 在配置中使用的spring的CachingConnectionFactory,用它来管理rabbit的connectionFactory, 其中可以设置其的channelCacheSize,默认是1.这个相当于建立一个channel的缓存池,
channel的作用类似于session.一个connection可以创建多个channel.
在该例子中使用SimpleMessageListenerContainer来管理消费者。
rabbitmq使用心得的更多相关文章
- 用RabbitMQ了好几年之后,我总结出来5点RabbitMQ的使用心得
大概从 2013 年开始,我就开始了自己和 RabbitMQ 的接触,到现在已经有七年多了. 在这七年中,既有一些对 RabbitMQ 的深度体验,更有无数的血泪史. 而根据我这么多年的使用经验,我将 ...
- RabbitMq、ActiveMq、ZeroMq 和 kafka 比较
MQ框架非常之多,比较流行的有RabbitMq.ActiveMq.ZeroMq.kafka.这几种MQ到底应该选择哪个?要根据自己项目的业务场景和需求.下面我列出这些MQ之间的对比数据和资料.第一部分 ...
- 消息队列RabbitMq、ActiveMq、ZeroMq、kafka之间的比较
MQ框架非常之多,比较流行的有RabbitMq.ActiveMq.ZeroMq.kafka.这几种MQ到底应该选择哪个?要根据自己项目的业务场景和需求.下面我列出这些MQ之间的对比数据和资料. 第一部 ...
- rabbitMQ、activeMQ、zeroMQ、Kafka、Redis 比较
Kafka作为时下最流行的开源消息系统,被广泛地应用在数据缓冲.异步通信.汇集日志.系统解耦等方面.相比较于RocketMQ等其他常见消息系统,Kafka在保障了大部分功能特性的同时,还提供了超一流的 ...
- RabbitMq、ActiveMq、ZeroMq、kafka之间的比较
MQ框架非常之多,比较流行的有RabbitMq.ActiveMq.ZeroMq.kafka.这几种MQ到底应该选择哪个?要根据自己项目的业务场景和需求.下面我列出这些MQ之间的对比数据和资料. 第一部 ...
- [转]RabbitMQ,ActiveMQ,ZeroMQ,Kafka之间的比较与资料汇总
MQ框架非常之多,比较流行的有RabbitMq.ActiveMq.ZeroMq.kafka.这几种MQ到底应该选择哪个?要根据自己项目的业务场景和需求.下面我列出这些MQ之间的对比数据和资料. 第一部 ...
- MQ框架的比较
MQ框架的比较 MQ框架非常之多,比较流行的有RabbitMq.ActiveMq.ZeroMq.kafka.这几种MQ到底应该选择哪个?要根据自己项目的业务场景和需求.下面我列出这些MQ之间的对比数据 ...
- MQ对比
转:http://blog.csdn.net/linsongbin1/article/details/47781187 MQ框架非常之多,比较流行的有RabbitMq.ActiveMq.ZeroMq. ...
- Kafka、Redis和其它消息组件比较
Kafka作为时下最流行的开源消息系统,被广泛地应用在数据缓冲.异步通信.汇集日志.系统解耦等方面.相比较于RocketMQ等其他常见消息系统,Kafka在保障了大部分功能特性的同时,还提供了超一流的 ...
随机推荐
- 无法识别的属性“targetFramework
出现这个错误的原因是NET Framework 版本版本号不对应,iis和网站使用的一致版本就可以了.
- Oracle分析函数(一)
一.总体介绍 分析函数如何工作 语法 FUNCTION_NAME(<参数>,…) OVER (<PARTITION BY 表达式,…> <ORDER BY 表达式 < ...
- layer使用方法
type - 基本层类型 类型:Number,默认:0 layer提供了5种层类型.可传入的值有:0(信息框,默认)1(页面层)2(iframe层)3(加载层)4(tips层). 若你采用layer. ...
- ios 导航栏的显示和隐藏切换
从简单的一个没有导航栏的界面A push到另一个有导航栏的界面 B,在界面A的逻辑中加入下面逻辑: 屏幕快照 2016-03-30 上午10.35.24.png 这样完美的处理了这个场景变换需求.引起 ...
- 安装oracle常见问题和解决方案
./runInstaller: line 95: [: too many arguments ./runInstaller: line 99: /home/oracle/oracle/database ...
- ASP.NET知识总结(3.HTTP协议详解)
引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...
- 大公司的PHP面试题
1. 禁用COOKIE 后 SEESION 还能用吗? 2. 抓取远程图片到本地,你会用什么函数? 4. 你觉得在pV10W的时候, 同等配置下,LUNIX 比WIN快多少? 5. 简述pOST 和G ...
- Unity VR全景漫游
一.前言: 最近VR如火如茶,再不学习就落伍啦.有空闲时间,跟Rodolfo一起研究下相关知识. 本文介绍了两种方法来制作VR场景: 方法一:通过6张小图搭建的VR场景 方法二:通过一张全景图来搭建V ...
- CSS后代选择器可能的错误认识
一.关于类选择器的一个问题 CSS代码: .red { color: red; } .green { color: green; } HTML代码: <div class="red&q ...
- tp框架之查询
//数据访问 //造模型对象 $nation = D("Nation"); //查询 //$a = $nat ...