网站首页 > 技术文章 正文
前言:
本篇介绍:RabbitMQ 后续编码涉及的基础含义:持久化、排它性、自动删除、强制性、路由键。
1、持久化:参数名:durable,默认值:false
在 定义队列 或定义 交换机 的时候,涉及该参数。
持久化作用说明:
即将相关队列的消息、或交换机的绑定信息等内容,写入硬盘备份,以便系统故障或重启时,仍可以恢复原来的状态,保障信息不丢失。
缺点:
大量的硬盘写入,会对IO造成不小的影响,因此RabbitMQ的部署环境,应该尽量避免和IO读写频繁的应用在同一磁盘上,比如数据库等。
示例代码:
channel.QueueDeclare("dead",durable:true, false, false);
2、排它性:参数名:exclusive,默认值:true
在 定义队列 的时候,涉及该参数:
排它性的作用说明:
如果该参数为true,则该队列仅允许创建它的连接进行写入或读取,同时当该链接关闭时,该队列被删除。
示例代码:
//定义队列
channel.QueueDeclare("dead", durable: true, exclusive: true, false);
说明:
该参数为true时,持久化参数是无效的,因为链接关闭即释放队列。
3、自动删除:参数名:autoDelete,默认值:true
在 定义队列 的时候,涉及该参数:
自动删除的作用说明:
如果该参数为true,则最后一名消费者关闭链接时,该队列被删除。
示例:
1、消费者A监听队列,然后关闭链接,则队列被删除;
2、消费者A监听队列、消费者B监听队列、消费者C监听队列,则当全部链接都关闭时,队列被删除。
示例代码:
//定义队列
channel.QueueDeclare("dead", durable: true, exclusive: true, autoDelete: true);
4、强制性:参数名:mandatory,默认值:false
在 发布消息 的时候,涉及该参数:
强制性的作用说明:
发送的消息,通过交换机,找不到对应队列时:
如果为false:消息会被丢弃。
如果为true:可以通过BasicReturn回调事件,拿到丢失的数据,进行二次处理。
示例代码:
using (var channel = Rabbit.Instance.DefaultConnection.CreateModel())
{
channel.BasicReturn += (e,a) => {
//回调事件。
};
//定义队列
channel.QueueDeclare("dead", durable: true, exclusive: true, autoDelete: true);
channel.BasicPublish("", "dead", mandatory:true, null, Encoding.UTF8.GetBytes("6秒就过期了1。"));
}
5、路由键:参数名:routingKey,使用默认路由时,即为队列名
在 定义交换机 ,或者 发布消息 时,涉及该参数:
路由键的作用说明:
1、未定义交换机,使用默认direct方式时,发消息消息时:交换机=空值,routingKey=队列名。
2、自定义交换机,也设置routingKey时,发布消息的时:填写对应的交换机名和设置的routingKey。
更多路由键的使用,在交换机进队介绍一文中介绍。
示例代码:
using (var channel = Rabbit.Instance.DefaultConnection.CreateModel())
{
//定义队列
channel.QueueDeclare("dead", durable: true, exclusive: true, autoDelete: true);
channel.BasicPublish("", routingKey:"dead", false, null, Encoding.UTF8.GetBytes("6秒就过期了1。"));
}
总结:
本篇介绍RabbitMQ的基础参数含义,在后续的编码中,遇到时候,可以反复回来查看,加深理解。
猜你喜欢
- 2024-10-02 「2021最新版」RabbitMQ面试题总结,每道题都很经典
- 2024-10-02 RabbitMQ如何保证消息不丢失 运城丢失女孩最新消息
- 2024-10-02 用 RabbitMQ 延迟队列,实现消息延迟推送
- 2024-10-02 RabbitMQ如何保证消息不丢失? 山西丢失孩子最新消息
- 2024-10-02 超详细的RabbitMQ入门,看这篇就够了
- 2024-10-02 3分钟阅读技术干货,一步一步的理解RabbitMQ
- 2024-10-02 周日福利--消息队列学习必备宝典(RabbitMQ实战指南)
- 2024-10-02 RabbitMQ 如何实现数据100%不丢失
- 2024-10-02 C# 消息队列之RabbitMQ rabbitmq消息队列类型
- 2024-10-02 RabbitMQ 持久化和权重分配消息 rabbitmq的持久化和确认机制
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)