RabbitMQ的高级特性

目录

过期时间TTL

死信队列

延迟队列

消息确认机制

消息追踪机制


 

过期时间TTL

 

TTL表示可以对消息设置预期时间,在这个时间内的消息可以被消费者接收获取,过了之后消息自动被删除。RabbitMQ设置TTL有两种方式~

  • 通过队列属性进行设置,队列中的所有消息都有相同的过期时间
  • 对消息进行单独设置,每条消息TTL可以不同

如果同时使用上述两种方法,则消息过期时间以两者之间的TTL较小数值为准。消息在队列的生存时间一旦超过了TTL值,就称为dead message并被投递到死信队列,消费者将无法再收到该消息

如果不设置TTL代表此消息永不过期。如果TTL设置为0代表除非此时可以直接将消息投递到消费者,否则该消息被立刻丢弃

 

 

死信队列

 

DLX(Dead-Letter-Exchange)即死信交换机。当消息在一个队列中变成dead message后,它会被重新发送到另一个交换机,这个交换机就是DLX,绑定DLX的队列称之为死信队列。

消息变成死信有三种原因:消息被拒绝、消息过期、消息达到最大长度无法发送

DLX也是一个正常的交换机,和一般的交换机并无区别,它能在任何队列上被指定~

下图演示消息过期后进入死信队列的消费流程

RabbitMQ的高级特性_第1张图片

 

 

延迟队列

 

延迟队列存储的对象是对应的延迟消息,即消费者发送到消息队列后,等待指定时间后消费者才能拿到这个消息进行消费。延迟队列可以通过设置过期时间+死信队列来实现,流程如下

RabbitMQ的高级特性_第2张图片

延迟队列的应用场景:

1.在电商项目中的支付场景:如果下订单之后会进行减少库存操作,在指定时间内未完成付款需要将库存加回去

2.系统中如有需要在指定的某个时间之后执行的任务都可以通过延迟队列处理

 

 

消息确认机制

 

确认并且保证消息被送达,提供两种方式:发布确认和事务(两种不能同时使用)

发布确认是指:消息发送成功后返回确认信息或者消息发送失败后返回回调信息

事务是指:引入事务后如果消息发送成功会返回消息给生产者,如果消息发送失败会报异常

 

 

消息追踪机制

 

消息追踪就好比记录消息的log日志,使用Trace实现。需要在rabbitmq客户端启动插件并设置一系列参数:rabbitmq-plugins enable rabbitmq_tracing

RabbitMQ的高级特性_第3张图片

RabbitMQ的高级特性_第4张图片

启动track插件需要重新登录RbbitMQ控制台,打开Admin-Tracing可以,选择具体的消息,查看消息追踪文件详情

RabbitMQ的高级特性_第5张图片

你可能感兴趣的:([RabbitMQ])