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. python基础学习7

    python基础学习7 内容概要 字符串的内置方法 字符串的内置方法(补充) 列表的内置方法 可变类型与不可变类型 队列与堆栈 内容详情 字符串的内置方法 # 1.strip 移除字符串首尾的指定字符 ...

  2. Crontab在服务端进行设置定时执行任务

    Crontab简crontab是一个可以根据时间.日期.月份.星期的组合调度对重复任务的执行的守护进程.也可以讲Linux crontab是用来定期执行程序的命令. 当安装完成操作系统之后,默认便会启 ...

  3. ElasticSearch7.3学习(三十一)----Logstash基础学习

    一.Logstash基本介绍 Logstash 是一个功能强大的工具,可与各种部署集成. 它提供了大量插件,可帮助你解析,丰富,转换和缓冲来自各种来源的数据(文件.数据库......).logstas ...

  4. 开源流程引擎Camunda BPM如何扩展数据库表

    前言 在使用开源流程引擎(如:JBPM.Activiti.Flowable.Camunda等)的时候,经常会遇到这样的需求,我们需要按照业务需求增加一张数据库的表,而且这张表是跟工作流引擎有交互的(注 ...

  5. ExtJS 布局-Accordion布局(Accordion layout)

    更新记录: 2022年6月2日 开始. 2022年6月3日 发布. 1.说明 accordion(手风琴)布局一次仅显示一个子组件,内置支持 折叠 和 展开.当需要堆叠多个子组件,并每次只显示一次时, ...

  6. JAVA面向对象之封装和调用

    一   面向对象 面向对象的三大特性   1 封装:概念:封装是把过程和数据私有化,打包封存起来,对数据访问只能通过指定的方式.简单的可以理解为你把钱存到银行里,银行专员首先要给你开一个账户,之后你的 ...

  7. 某CMS后台通杀getshell

    此CMS是基于thinkphp框架二次开发的,目前有thinkphp5,以及thinkphp6两种版本.这些漏洞挖掘出来的时候已经在cnvd被提交过了.但是网上并没有漏洞文章.避免风险这里只分享思路. ...

  8. 线程池:ThreadPoolExcutor源码阅读

    ThreadPoolExcutor源码流程图:(图片较大,下载再看比较方便) 线程池里的二进制奥秘 前言: 线程池的五种状态state(RUNNING.SHUTDOWN.STOP.TIDYING.TE ...

  9. Vue关于echats的使用(浅显易懂)

    安装 npm install echarts --save 引入 (全局) main.js import * as echarts from 'echarts'; Vue.prototype.$ech ...

  10. React技巧之处理tab页关闭事件

    原文链接:https://bobbyhadz.com/blog/react-handle-tab-close-event 作者:Borislav Hadzhiev 正文从这开始~ 总览 在React中 ...