spring与RabbitMQ整合 消费者消费不到消息 重启才能消费到的问题解决
2017-02-07 09:08
2156 查看
RabbitMQ是当前一个挺火的消息队列中间件 相比ActiveMQ 消息更不容易丢失
我之前用的是ActiveMQ 后边有的时候会莫名其妙的收不到消息 项目紧后边也没时间排查 经朋友的推荐下 换了RabbitMQ 后边用着也没啥问题
今天 的RabbitMQ 突然就出了问题 生产者发送消息 消费者监听不到 消费者重启才能接收到 这样的情况肯定不行 项目上线的话要是出现这种问题影响很大的
进入RabbitMQ的监控中心 登录 在queue里边找到自己的queue 进入 在里边可以看到消息发送情况
昨天我看了一下我的queue监控 Unacked是1以上 ready是1以上 ready好像是未消费消息
网上查了一下 好像说消息未确认 但是却消费了消息 这时候消息堵塞 不知情况如何 先记录一下
查看了我的spring配置文件 我当时的acknowledge为auto 接收到消息后自动确认消息 于是就在想 是不是确认不成功了
于是乎 在网上查了手动确认的资料
1.在rabbitmq整合spring的配置文件中 把下述配置中的acknowledge改为manual
2.监听器继承ChannelAwareMessageListener 然后重写onMessage 对消息进行手动确认
经过上边的操作 问题解决
我之前用的是ActiveMQ 后边有的时候会莫名其妙的收不到消息 项目紧后边也没时间排查 经朋友的推荐下 换了RabbitMQ 后边用着也没啥问题
今天 的RabbitMQ 突然就出了问题 生产者发送消息 消费者监听不到 消费者重启才能接收到 这样的情况肯定不行 项目上线的话要是出现这种问题影响很大的
进入RabbitMQ的监控中心 登录 在queue里边找到自己的queue 进入 在里边可以看到消息发送情况
昨天我看了一下我的queue监控 Unacked是1以上 ready是1以上 ready好像是未消费消息
网上查了一下 好像说消息未确认 但是却消费了消息 这时候消息堵塞 不知情况如何 先记录一下
<rabbit:listener-container connection-factory="connectionFactory" acknowledge="auto"> <rabbit:listener ref="searchListenner" queues="coursequeue" response-routing-key="coursequeue"/> </rabbit:listener-container>
查看了我的spring配置文件 我当时的acknowledge为auto 接收到消息后自动确认消息 于是就在想 是不是确认不成功了
于是乎 在网上查了手动确认的资料
1.在rabbitmq整合spring的配置文件中 把下述配置中的acknowledge改为manual
<rabbit:listener-container connection-factory="connectionFactory" acknowledge="manual"> <rabbit:listener ref="searchListenner" queues="coursequeue" response-routing-key="coursequeue"/> </rabbit:listener-container>
2.监听器继承ChannelAwareMessageListener 然后重写onMessage 对消息进行手动确认
@Component("searchListenner") public class SearchListenner implements ChannelAwareMessageListener { @Override public void onMessage(Message message, Channel channel) throws Exception { try { channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);//这个就是消息确认的语句 再往下边写自己的逻辑就好 System.out.println(message.getBody()); } catch (Throwable e) { getLog().error(e.getMessage(), e); } } }
经过上边的操作 问题解决
相关文章推荐
- [问题记录]解决RabbitMQ消息丢失与重复消费问题
- 解决rabbitmq消息队列的顺序及重复消费问题
- struts+spring+hibernate整合问题解决方法
- 用Myeclipse5.5+Tomcat5.5整合Spring2.0+struts1.2时出现的兼容性问题及解决办法
- Spring3+MyBatis3整合无法输出SQL语句问题的解决
- mybatis3.0x升级整合spring问题(读取不到properties文件属性)
- 解决struts2.1.6整合Spring乱码问题
- hibernate3_spring2_dwr2整合问题解决
- 解决问题(七)——jsf+spring+hibernate整合(一)
- Spring2.5整合Activiti 5.11 解决MalformedParameterizedTypeException问题
- Spring扫描不到Progurd混淆的jar包问题解决
- 解决Windows下修改环境变量后需重启才能生效的问题(转)
- 解决Spring和Hibernate整合时HQL查询语句乱码问题
- Spring3与hibernate4整合,sessionFactory.getCurrentSession()方法获取不到Session对象异常解决办法
- 解决问题(八)——jsf+spring+hibernate整合(二)
- Spring2.5,Activemq5.2整合遇到的问题以及解决方法
- Spring + Hibernate 整合时数据库连接数过多问题的解决办法
- 实践中遇到Ibatis和spring整合事务不回滚的问题解决
- 在整合spring-flex时遇到问题及解决方法
- 解决vmware和redhat搭配时,redhat有时需要重启网卡才能联网的问题