RabbitMQ:入门(四)——RabbitMQ队列声明queueDeclare

更新时间:2023-07-01 12:01:14 阅读: 评论:0

RabbitMQ:⼊门(四)——RabbitMQ队列声明queueDeclare 简介
本节主要讨论队列声明的各个参数
queueDeclare(String queue,
boolean durable,
树叶线描画
boolean exclusive,
Map<String, Object> arguments);
注意
关于队列的声明,如果使⽤同⼀套参数进⾏声明了,就不能再使⽤其他参数来声明,要么删除该队列重新删除,可以使⽤命令⾏删除也可以在RabbitMQ Management上删除,要么给队列重新起⼀个名字。
队列持久化
重启RabbitMQ服务器(可以通过rabbitmqctl stop_app关闭服务器,rabbitmqctl start_app重启服务器),
可以登录RabbitMQ Management—> Queues中可以看到之前声明的队列还存在
boolean durable = true;
channel.queueDeclare(QUEUE_NAME, durable, fal, fal, arguments);
消息持久化
设置消息持久化必须先设置队列持久化,要不然队列不持久化,消息持久化,队列都不存在了,消息存在还有什么意义。消息持久化需要将交换机持久化、队列持久化、消息持久化,才能最终达到持久化的⽬的
⽅式⼀:设置deliveryMode=2
饮马长城窟行
channel.queueDeclare(QUEUE_NAME, true, fal, fal, arguments);
channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, "");
String message = "Hello RabbitMQ: ";
// 设置消息持久化
AMQP.BasicProperties.Builder properties = new AMQP.BasicProperties().builder();
properties.deliveryMode(2);  // 设置消息是否持久化,1:⾮持久化 2:持久化
channel.basicPublish(EXCHANGE_NAME, "", properties.build(), Bytes("UTF-8"));
⽅式⼆:设置BasicProperties为MessageProperties.PERSISTENT_TEXT_PLAIN
channel.queueDeclare(QUEUE_NAME, true, fal, fal, arguments);
channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, "");
String message = "Hello RabbitMQ: ";
channel.basicPublish(EXCHANGE_NAME, "", MessageProperties.PERSISTENT_TEXT_PLAIN, Bytes("UTF-8")); Message TTL消息剩余⽣存时间
统⼀设置队列中的所有消息的过期时间,例如设置10秒,10秒后这个队列的消息清零
⽅式⼀:为该队列的所有消息统⼀设置相同的声明周期
蜀字怎么读Map<String, Object> arguments = new HashMap<String, Object>();
arguments.put("x-message-ttl", 10000);
// 声明队列时指定队列中的消息过期时间
channel.queueDeclare(QUEUE_NAME, fal, fal, fal, arguments);
channel.basicPublish(EXCHANGE_NAME, "", null, Bytes("UTF-8"));
⽅式⼆:单独为某条消息单独设置时间
// expiration: 设置单条消息的过期时间
红酒开瓶器用法
channel.queueDeclare(QUEUE_NAME, fal, fal, fal, null);
channel.basicPublish(EXCHANGE_NAME, "", null, Bytes("UTF-8"));软件测试自我介绍
for(int i = 1; i <= 5; i++) {
AMQP.BasicProperties.Builder properties = new AMQP.BasicProperties()
.
builder().expiration( i * 1000 + "");
channel.basicPublish(EXCHANGE_NAME, "", properties.build(), (message + i).getBytes("UTF-8"));
}
Auto Expire⾃动过期
x-expires⽤于当多长时间没有消费者访问该队列的时候,该队列会⾃动删除,可以设置⼀个延迟时间,如仅启动⼀个⽣产者,10秒之后该队列会删除,或者启动⼀个⽣产者,再启动⼀个消费者,消费者运⾏结束后10秒,队列也会被删除
Map<String, Object> arguments = new HashMap<String, Object>();
arguments.put("x-expires", 10000);生日宴邀请函
channel.queueDeclare(QUEUE_NAME, fal, fal, fal, arguments);
channel.basicPublish(EXCHANGE_NAME, "", null, Bytes("UTF-8"));
Max Length最⼤长度
x-max-length:⽤于指定队列的长度,如果不指定,可以认为是⽆限长,例如指定队列的长度是4,当超过4条消息,前⾯的消息将被删除,给后⾯的消息腾位
Map<String, Object> arguments = new HashMap<String, Object>();
arguments.put("x-max-length", 4);
channel.queueDeclare(QUEUE_NAME, fal, fal, fal, arguments);
for(int i = 1; i <= 5; i++) {
channel.basicPublish(EXCHANGE_NAME, "", MessageProperties.PERSISTENT_TEXT_PLAIN, (message + i).getBytes("UTF-8"));
}
Max Length Bytes代码⽚段
x-max-length-bytes: ⽤于指定队列存储消息的占⽤空间⼤⼩,当达到最⼤值是会删除之前的数据腾出空间
Map<String, Object> arguments = new HashMap<String, Object>();
rguments.put("x-max-length-bytes", 1024);
channel.queueDeclare(QUEUE_NAME, fal, fal, fal, arguments);
channel.basicPublish(EXCHANGE_NAME, "", null, Bytes("UTF-8"));
Maximum priority最⼤优先级
x-max-priority: 设置消息的优先级,优先级值越⼤,越被提前消费。
合肥学院是几本正常情况下不适⽤优先级
Hello RabbitMQ: 1
Hello RabbitMQ: 2
Hello RabbitMQ: 3
Hello RabbitMQ: 4
Hello RabbitMQ: 5
使⽤优先级顺序正好相反
Hello RabbitMQ: 5
Hello RabbitMQ: 4
Hello RabbitMQ: 3
Hello RabbitMQ: 2
Hello RabbitMQ: 1
Map<String, Object> arguments = new HashMap<String, Object>();
arguments.put("x-max-priority", 10);
channel.queueDeclare(QUEUE_NAME, fal, fal, fal, arguments);
for(int i = 1; i <= 5; i++) {
AMQP.BasicProperties.Builder properties = new AMQP.BasicProperties()
.builder().priority(i);
醉了青春channel.basicPublish(EXCHANGE_NAME, "", properties.build(), (message + i).getBytes("UTF-8"));
}
Dead letter exchange(死亡交换机) 和 Dead letter routing key(死亡路由键)
当队列中的消息过期,或者达到最⼤长度⽽被删除,或者达到最⼤空间时⽽被删除时,可以将这些被删除的信息推送到其他交换机中,让其他消费者订阅这些被删除的消息,处理这些消息

本文发布于:2023-07-01 12:01:14,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1063093.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:队列   消息   删除   声明
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图