RabbitMQ 入门系列:1、MQ的应用场景的选择与RabbitMQ安装。

RabbitMQ 入门系列:2、基础含义:链接、通道、队列、交换机。

RabbitMQ 入门系列:3、基础含义:持久化、排它性、自动删除、强制性、路由键。

RabbitMQ 入门系列:4、基础编码:官方SDK使用:链接创建、单例改造、发送消息、接收消息。

RabbitMQ 入门系列:5、基础编码:交换机的进阶介绍及编码方式。

RabbitMQ 入门系列:6、保障消息:不丢失:发送方、Rabbit存储端、接收方。

RabbitMQ 入门系列:7、保障消息:不重复消费:产生消息的唯一ID。

RabbitMQ 入门系列:8、扩展内容:接收信息时:可否根据RoutingKey过滤监听信息,答案是不能。

RabbitMQ 入门系列:9、扩展内容:死信队列:真不适合当延时队列。

RabbitMQ 入门系列:10、扩展内容:延时队列:延时队列插件及其有限的适用场景。

前言:

本篇介绍: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,默认不允许传null,可以传空

定义交换机,或者发布消息时,涉及该参数:

路由键的作用说明:

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的基础参数含义,在后续的编码中,遇到时候,可以反复回来查看,加深理解。

RabbitMQ 入门系列:3、基础含义:持久化、排它性、自动删除、强制性、路由键。的更多相关文章

  1. RabbitMQ 入门系列:2、基础含义理解:链接、通道、队列、交换机

    系列目录 RabbitMQ 入门系列:1.MQ的应用场景的选择与RabbitMQ安装. RabbitMQ 入门系列:2.基础含义:链接.通道.队列.交换机. RabbitMQ 入门系列:3.基础含义: ...

  2. RabbitMQ 入门系列:3、基础编码:官方SDK的引用、链接创建、单例改造、发送消息、接收消息。

    系列目录 RabbitMQ 入门系列:1.MQ的应用场景的选择与RabbitMQ安装. RabbitMQ 入门系列:2.基础含义:链接.通道.队列.交换机. RabbitMQ 入门系列:3.基础含义: ...

  3. RabbitMQ 入门系列:5、基础编码:交换机的进阶介绍及编码方式。

    系列目录 RabbitMQ 入门系列:1.MQ的应用场景的选择与RabbitMQ安装. RabbitMQ 入门系列:2.基础含义:链接.通道.队列.交换机. RabbitMQ 入门系列:3.基础含义: ...

  4. RabbitMQ 入门系列:6、保障消息:不丢失:发送方、Rabbit存储端、接收方。

    系列目录 RabbitMQ 入门系列:1.MQ的应用场景的选择与RabbitMQ安装. RabbitMQ 入门系列:2.基础含义:链接.通道.队列.交换机. RabbitMQ 入门系列:3.基础含义: ...

  5. RabbitMQ 入门系列:7、保障消息不重复消费:产生消息的唯一ID。

    系列目录 RabbitMQ 入门系列:1.MQ的应用场景的选择与RabbitMQ安装. RabbitMQ 入门系列:2.基础含义:链接.通道.队列.交换机. RabbitMQ 入门系列:3.基础含义: ...

  6. RabbitMQ 入门系列:8、扩展内容:接收信息时:可否根据RoutingKey过滤监听信息,答案是不能。

    系列目录 RabbitMQ 入门系列:1.MQ的应用场景的选择与RabbitMQ安装. RabbitMQ 入门系列:2.基础含义:链接.通道.队列.交换机. RabbitMQ 入门系列:3.基础含义: ...

  7. RabbitMQ 入门系列:9、扩展内容:死信队列:真不适合当延时队列。

    系列目录 RabbitMQ 入门系列:1.MQ的应用场景的选择与RabbitMQ安装. RabbitMQ 入门系列:2.基础含义:链接.通道.队列.交换机. RabbitMQ 入门系列:3.基础含义: ...

  8. RabbitMQ 入门系列:10、扩展内容:延时队列:延时队列插件及其有限的适用场景(系列大结局)。

    系列目录 RabbitMQ 入门系列:1.MQ的应用场景的选择与RabbitMQ安装. RabbitMQ 入门系列:2.基础含义:链接.通道.队列.交换机. RabbitMQ 入门系列:3.基础含义: ...

  9. 快速入门系列--WebAPI--01基础

    ASP.NET MVC和WebAPI已经是.NET Web部分的主流,刚开始时两个公用同一个管道,之后为了更加的轻量化(WebAPI是对WCF Restful的轻量化),WebAPI使用了新的管道,因 ...

随机推荐

  1. vue组件传参的方法--bus事件总线

    定义:事件总线是实现vue任意组件之前传递参数的一种编程技巧,本质上就是组件的自定义事件.事件总线有很多种写法,具体的思路就是创造一个大家都可以访问到的公共的属性,在这个公共的属性上面可以调用$on, ...

  2. 变量作用域——JavaSE基础

    变量作用域 局部变量.成员变量.静态变量的区别 类型 声明位置 从属于 生命周期 局部变量 方法或语句块内部 方法/语句块 从声明位置开始,直到方法或语句块执行完毕,局部变量消失 成员变量 (实例变量 ...

  3. .NET C#基础(1):相等性与同一性判定 - 似乎有点小缺陷的设计

    0. 文章目的   本文面向有一定.NET C#基础知识的学习者,介绍在C#中的常用的对象比较手段,并提供一些编码上的建议. 1. 阅读基础 1:理解C#基本语法与基本概念(如类.方法.字段与变量声明 ...

  4. nginx https证书配置

    1. Nginx配置 server { listen 443; #指定ssl监听端口 server_name www.example.com; ssl on; #开启ssl支持 ssl_certifi ...

  5. 敲了几万行源码后,我给Mybatis画了张“全地图”

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.说说:"产"后感受 有人跟我说,手写Spring难,手写Mybatis ...

  6. vue基本原理

    当一个Vue实例创建时,Vue会遍历data中的属性,用Object.defineProperty(vue3.0使用proxy)将它们转为getter/setter,并且在内部追踪相关依赖,在属性被访 ...

  7. 嵌入式中 动态阿拉伯语字符串 转换 LCD显示字符串【感谢建国雄心】

    本文参考CSDBN:建国雄心 的博客,这里找不到该帖子,放一个类似的仅供参考https://blog.csdn.net/qiaojiongzeng6321/article/details/748572 ...

  8. 利用kubernetes资源锁完成自己的HA应用

    Backgroud 前一章中,对kubernetes的选举原理进行了深度剖析,下面就通过一个example来实现一个,利用kubernetes提供的选举机制完成的高可用应用. 对于此章需要提前对一些概 ...

  9. 3行python代码翻译70种语言,这个OCR神奇太赞了

    写在前面的一些P话: 今天给大家介绍一个超级简单且强大的OCR文本识别工具:easyocr. 这个模块支持70多种语言的即用型OCR,包括中文,日文,韩文和泰文等.完全满足了大家对于语言的要求,不管你 ...

  10. 老掉牙的 synchronized 锁优化,一次给你讲清楚!

    我们都知道 synchronized 关键字能实现线程安全,但是你知道这背后的原理是什么吗?今天我们就来讲一讲 synchronized 实现线程同步背后的原因,以及相关的锁优化策略吧. synchr ...