zoukankan      html  css  js  c++  java
  • 关于RabbitMQ Queue Argument的简介

    1.Message TTL

    message在队列queue中可以存活多长时间,以毫秒为单位;发布的消息在queue时间超过了你设定的时间就会被删除掉。

    channel.queueDeclare("test", true, false, false, new HashMap<String, Object>());

    2.Auto expire

    auto expire  设置当前的queue在指定的时间内,没有consumer、basic.get也就是未被访问,就会被删除。

    3.MaxLength与MaxLength bytes

    Max Length(x-max-length): 限定队列的消息的最大值长度,超过指定长度将会把最早的几条删除掉, 类似于mongodb中的固定集合,例如保存最新的100条消息, Feature=Lim

    Max Length Bytes(x-max-length-bytes): 限定队列最大占用的空间大小, 一般受限于内存、磁盘的大小, Features=Lim B

    Dead letter exchange(x-dead-letter-exchange): 当队列消息长度大于最大长度、或者过期的等,将从队列中删除的消息推送到指定的交换机中去而不是丢弃掉,Features=DLX

    4.dead letter exchange与dead letter routingkey

    就像上面的messagettl,maxlength等。消息因为超时或超过限制在队列里消失,这样我们就丢失了一些消息,也许里面就有一些是我们做需要获知的。而rabbitmq的死信功能则为我们带来了解决方案。设置了dead letter exchange与dead letter routingkey(要么都设定,要么都不设定)那些因为超时或超出限制而被删除的消息会被推动到我们设置的exchange中,再根据routingkey推到queue中

    Dead letter exchange(x-dead-letter-exchange): 当队列消息长度大于最大长度、或者过期的等,将从队列中删除的消息推送到指定的交换机中去而不是丢弃掉,Features=DLX

    Dead letter routing key(x-dead-letter-routing-key):将删除的消息推送到指定交换机的指定路由键的队列中去, Feature=DLK

    5.Lazy Queue

    lazy queue是在3.6.0版本被引入的,lazy queue的信息尽可能的都保存在磁盘上,仅在消费者请求的时候才会加载到RAM中。

    使用默认的queue,并且消息不持久化的话,都是放在RAM中的。当消息峰值的时候,大量的消息在RAM导致rabbitmq服务器压力过大,当RAM使用量到一定数字的时候就会因为压力把数据移到硬盘中,但是不要嗨皮,rabbitmq服务器重启后消息一样会丢失。而且过大的压力可能会出现各种各样的异常情况,这并不是我们想要看到的。

    6.Master locator(x-queue-master-locator)

  • 相关阅读:
    Spark Standalone集群搭建
    虚拟机Ubuntu磁盘扩容
    Caused by: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(org.apache.hadoop.hbase.ipc.ServerNotRunningYetException): org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not runn
    centos脚本编写
    centos中的shell编程
    从零开始部署hadood分布式数据平台!
    从0开始部署hadoop HA集群,使用zk实现自动容灾
    zookeeper动物园管理员学习笔记
    hive UDF
    创建视图
  • 原文地址:https://www.cnblogs.com/holyshengjie/p/10621885.html
Copyright © 2011-2022 走看看