赞
踩
1.confirm确认模式
2.return模式
Consumer Ack表示消费端收到消息后的确认方式
1.自动签收
2.手动签收
总结:
①在rabbit:listener-container标签中设置acknowledge属性,设置ack方式为none表示自动确认;设置ack方式为manual表示手动确认。②如果在消费端没有出现异常,则调用channel.basicAck(deliveryTag,false);方法确认签收消息
③如果出现异常,则在catch中调用 basicNack,拒绝消息,让MQ重新发送消息。
1.不让签收会发生什么?
2.不让签收,而且不限制消费者取消息的数量会发生什么?
1.队列的统一过期
2.消息的单独过期
3.消息过期 和 队列过期的处理方式
1.定义
2.消息成为死信的三种情况(面试高频):
channel.basicNack(deliveryTag,true,false);
就是消费者拒接消费消息并且不把消息放入原目标队列3.队列绑定死信交换机:
1.测试过期时间导致成为死信消息
2.测试超过长度限制导致成为死信消息
3.测试消息拒收导致成为死信消息
4.小结
1、死信交换机和死信队列和普通的没有区别
2、当消息成为死信后,如果该队列绑定了死信交换机,则消息会被死信交换机重新路由到死信队列
3、消息成为死信的三种情况
(1)队列消息长度达到限制
(2)消费者拒绝消费消息,并且不重回队列
(3)原队列存在消息过期设置,消息到达超时时间未被消费
1.延迟队列
2.代码实现
- 延迟队列 指消息进入队列后,可以被延迟一定时间,再进行消费。
- RabbitMQ没有提供延迟队列功能,但是可以使用 : TTL + DLX 来实现延迟队列效果。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。