3.queueDeclare方法的参数详解

1.简介

queueDeclare方法主要是对队列进行一些设置,共有5个参数,其中前4个参数已经写了。这次主要讲解一些第5个参数的设置

2.详解

参考官方文档link
在这里插入图片描述

1.对队列长度进行限制

参考官方文档link

  • x-max-length:提供非负整数值来设置最大消息数(设置队列中消息最大个数)
  • x-max-length-bytes:以字节为单位提供非负整数值来设置最大长度(当x-max-length与x-max-length-bytes都设置时,无论哪个达到限制都会触发溢出策略)

溢出策略有两种:

  • 丢弃最前面的消息(默认)
  • 拒绝发布,修改方式为启动发布者确认机制link

使用方式:

Map<String, Object> map = new HashMap<>();
map.put("x-max-length",10);// 队列最多容纳10条数据
channel.queueDeclare("myqueue", false, false, false, map);
2.设置消息和队列的生存时间

参考官方文档link

  1. x-message-ttl:为当前队列的每一条消息设置存活时间,单位是毫秒,值为非负整数
Map<String, Object> map = new HashMap<String, Object>();
map.put("x-message-ttl", 10000);// 消息存活时间为1秒
channel.queueDeclare("myqueue", false, false, false, map);
  1. 为某条消息设置存活时间
byte[] messageyBytes = "Hello world!".getBytes();
Properties properties = new BasicProperties.Builder()
                                   .expiration("10000")
                                   .build();// 为 "Hello world"设置在队列存活时间为1秒
channel.basicPublish("my-exchange", "routing-key", properties, messageBytes);
  1. x-expires:为队列设置存活时间
Map <String,Object> map = new HashMap <String,Object>(); 
map.put("x-expires",1800000); // 设置该队列的存活时间为30分钟
channel.queueDeclare("myqueue",false,false,false,map);
3.队列优先级设置

参考官方文档link

x-max-priority: 设置队列的优先级,参数可以写1到255之间。数字越大,优先级越高。实际使用中建议使用1到10之间选择。未设置的都为0

Map <String,Object> map = new HashMap <String,Object>();
map.put("x-max-priority"10);
channel.queueDeclare("my-priority-queue",true,false,false,map);

注意:设置优先级都有一些内存和磁盘成本,还有额外的CPU成本。优先级设置的越高消耗越大(erlang进程开启的越多)

4.消费者优先级设置

参考官方文档link
x-priority:当存在多个消费者时,默认会使用循环的方式去消费消息。当设置某个消费者优先级后,只有当改消费者受阻时消息才发送给低优先级消费者消费。同级别的优先级消费者仍然采取循环的方式消费。

Map <String,Object> map = new HashMap <String,Object>();
map.put("x-priority", 1);
channel.basicConsume("my-queue",false,args,consumer);
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值