4.2rabbitMq队列(gold_axe)

 Map args = new HashMap();
channel.queueDeclare(
                queueName,//队列名
                false,//是不是持久化(mq重启后队列是不是还在):临时队列/持久队列
                false,//允许多个消费者消费(轮询
                false,//最后一个消费者断开后队列是不是删除
                args//其他参数
        );

队列声明时的几个参数除了队列名有:

  • 是不是rabbitmq重启后队列还在, 决定了队列是 临时队列 或者是
    持久队列, 开启持久化影响性能不推荐
  • 是不是不允许绑定多个消费者,如果开启 队列就是单消费者队列, 用于顺序消息,牺牲了性能
  • 是不是最后一个消费者断开以后本队列就删除,就是 自动删除队列
  • 一个 Map arguments, 传其他高级属性

Map arguments

  • x-dead-letter-exchange 死信交换器
  • x-dead-letter-routing-key 死信消息的可选路由键
  • x-expires 队列在指定毫秒数后被删除
  • x-ha-policy 创建 HA 队列
  • x-ha-nodes HA 队列的分布节点
  • x-max-length 队列的最大消息数
  • x-message-ttl 毫秒为单位的消息过期时间,队列级别
  • x-max-priority 最大优先值为 255 的队列优先排序功能(打破先进先出)

自动过期队列

arguments.put("x-expires",10*1000);//10秒被删除
这个意思是, 没有消费者绑定在队列上的情况下
10秒都没get操作了,
不管有没有投递
本队列都会删除

队列里面 消息 的超时设置

arguments.put(" x-message-ttl",45*1000);/
队列里面消息的存活时间, 45秒没被消费就死掉
死掉以后,如果有设置了死信, 会投递到死信交换器

        //死信
arguments.put("x-dead-letter-exchange", DlxProcessConsumer.DLX_EXCHANGE_NAME);//绑定死信交换器
arguments.put("x-dead-letter-routing-key", "deal");//死信路由键,会替换消息原来的路由键

镜像队列

"x-ha-policy"

你可能感兴趣的:(4.2rabbitMq队列(gold_axe))