Rabbit高级特性

发布时间 2023-07-11 10:56:48作者: 小溪_1
  • 过期时间(TTL)
    • Time To Live,也就是生存时间,是一条消息在队列中最大的存活时间,单位是毫秒
    • RabbitMQ支持设置队列的过期时间,从消息入队列开始计算,直到超过队列的超时时间的配置,那么消息就会变成死信,自动被清除。
    • 也可以不设置TTL,不设置表示消息不会过期,如果设置为0,则表示此时可以直接将消息传递到消费者,否则消息立即丢弃
  • 消息确认
    • 消费者订阅队列的时候,可以指定autoAck参数
    • autoAck为true时,RabbitMQ采用自动确认模式。RabbitMQ自动把发送出去的消息设置为确认,然后从内存或者硬盘中删除,而不管消费者是否真正消费到了这些消息.
    • autoAck为false,消费者就有足够的时间处理消息,不用担心处理消息的过程中消费者进程挂掉后消息丢失的问题
  • 持久化
    • 持久化三个部分
      • 交换器持久化
        • 将durable参数设置为true
        • 如果交换器不设置为持久化,那么在RabbitMQ服务重启后,相关的交换器元数据会丢失,不过消息不会丢失,只是不能将消息发送到这个交换器了
      • 队列持久化
        •   确保消息不会丢失,可以在声明队列是将durable参数设置为true
      • 消息的持久化
  • 死信队列
    • 消息变成死信的情况
      • 消息被拒绝,通过调用basic.reject或者basic.nack并且设置requeue=false
      • 消息过期(ttl过期)
      • 队列达到最大长度
    • 死信队列设置
      • 设置死信队列的exchange和queue,然后进行绑定
      • Exchange:dlx.exchange
      • Queue:dlx.queue
      • RoutingKey:#
      • 需要在队列上添加一个参数:argument.put("x-dead-letter-exchange","dlx.exchange")
  • 延迟队列
    • 进入该队列的消息会被消费者延迟消费,延迟队列中存储的消息是延迟消息,
    • 延迟消息是指消息被发送以后,等待特定的时间后,消费者才能拿到这个消息进行消费