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. MySQL - 分页问题

    MySQL中的分页 MySQL中通过LIMIT关键字可以实现分页,如:(其中0表示开始记录数,10表示返回数据的数量) SELETE * FROM table_name LIMIT 0, 10 MyB ...

  2. 并发bug之源(一)-可见性

    CPU三级缓存 要聊可见性,这事儿还得从计算机的组成开始说起,我们都知道,计算机由CPU.内存.磁盘.显卡.外设等几部分组成,对于我们程序员而言,写代码主要关注CPU和内存两部分.放几张马士兵老师的图 ...

  3. 剖析 SPI 在 Spring 中的应用

    vivo 互联网服务器团队 - Ma Jian 一.概述 SPI(Service Provider Interface),是Java内置的一种服务提供发现机制,可以用来提高框架的扩展性,主要用于框架的 ...

  4. SAP 实例- 页签tabsrip

    屏幕页签:项目上有一需求,对标准TCODE 一个屏幕增加一个页签.于是做了个例子. 下面屏幕有两个页签. 我们来看一下屏幕结构.100屏幕是主屏幕,101,102是子屏幕,对应页签test1,test ...

  5. gitlab备份迁移与升级

    升级计划: https://docs.gitlab.com/ee/update/index.html#upgrade-paths 1. 安装gitlab(和源版本必须保持一致) wget https: ...

  6. 【Python基础教程】三种常用、效率最高的Python字符串拼接方法

    python字符串连接的方法,一般有以下三种: **方法1:**直接通过加号(+)操作符连接website=& 39;python& 39;+& 39;tab& 39; ...

  7. Rabbimtq消息传递对象

    对象序列化即可.

  8. NC14661 简单的数据结构

    NC14661 简单的数据结构 题目 题目描述 栗酱有一天在网上冲浪的时候发现了一道很有意思的数据结构题. 该数据结构形如长条形. 一开始该容器为空,有以下七种操作. 1 a从前面插入元素a 2 从前 ...

  9. 更强的 JsonPath 兼容性及性能测试之2022版(Snack3,Fastjson2,jayway.jsonpath)

    2022年了,重新做了一份json path的兼容性与性能测试.三个市面上流行框架比较性测试. 免责声明:可能测试得方式不对而造成不科学的结果(另外,机器不同结果会有不同),可以留言指出来.以下测试数 ...

  10. 如何将 DevSecOps 引入企业?

    前 言 现如今,大部分企业已经在内部实现了 DevOps 实践.DevOps 为团队提供了交付可靠软件和快速更新的方法论.这种方法让团队更专注于质量而不是将时间浪费在运维上.然而,结果是,安全实践往往 ...