栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

RabbitMQ的高级特性

RabbitMQ的高级特性

RabbitMQ高级特性

消费端限流TTL死信队列延迟队列消息可靠性投递Consumer ACK

消费端限流


这种模式中消费端的确认模式一定为手动确认。acknowledge=“manual”

TTL


死信队列

英文缩写:DLX。当消息成为Deadmessage后,可以被重新发送到另一个交换机,这个交换机就是DLX。
消息成为死信的三种情况:
1.队列消息长度到达限制
2.消费者拒接消费消息,basicNack/basicReject,并且不把消息重新放入原目标队列,requeue=false;
3.原队列存放在消息过期设置,消息到达超时时间未被消费

延迟队列



消息可靠性投递

RabbitMQ为我们提供了两种方式用来控制消息的投递可靠性模式
Confirm 确认模式 消息从producer到exchange 通过ConnectionFactory的publisher-confirms=true开启。使用rabbitTemplate.set/confirm/iCallback设置回调函数。当消息发送到exchange后回调/confirm/i方法。在方法中判断ack,如果为true,则发送成功,如果为false,则发送失败,需要处理。
return 退回模式 消息从exchange到queue投递失败 设置ConnectionFactory的publisher-returns=true 开启。当消息从exchange路由到queue失败后,如果设置了rabbitTemplate。setMandatory(true)参数,则会将消息退回给producer。并执行回调函数returnedMessage.

RabbitMQ整个消息投递的路径为:
producer—>rabbitmq broker --> exchange -->queue–>consumer

Consumer ACK

表示消费端收到消息后的确认方式
三种:
自动确认:acknowledge=“none” 指:当消息一旦被consumer接收到,则自动确认收到,并将相应message从RabbitMQ的消息缓存中移除。但是在实际业务处理中,很有可能消息接收到,业务处理出现异常,那么消息就好丢失。
手动确认:acknowledge=“manual”。手动确认方式,则需要在业务处理成功后,调用channel.basicAck(),手动签收,如果出现异常,这调用channel》basicNack()方法,让其自动重新发送消息。如果消费端没有出现异常,则调用channel.basicAck(deliveryTag,false);方法确认签收消息。如果出现异常,则在catch中调用basicNack或basicReject,拒绝消息,让MQ重新发送消息.
根据异常情况确认:acknowledge=“auto”

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/775135.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号