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. 聊聊OOP中的设计原则以及访问者模式

    一  设计原则 (SOLID) 1.  S - 单一职责原则(Single Responsibllity Principle) 1.1  定义 一个类或者模块只负责完成一个职责(或功能), 认为&qu ...

  2. Hyperledger Fabric 智能合约开发及 fabric-sdk-go/fabric-gateway 使用示例

    前言 在上个实验 Hyperledger Fabric 多组织多排序节点部署在多个主机上 中,我们已经实现了多组织多排序节点部署在多个主机上,但到目前为止,我们所有的实验都只是研究了联盟链的网络配置方 ...

  3. 百度地图API 地图圈区域并计算坐标点是否在区域内

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. dubbo的消费者是怎么获取提供者服务接口引用的?

    本文主要解读dubbo消费者是如何引用服务端接口的,是如何像本地调用一样调用远程服务的. 并试着从设计者的角度思考,为何这样设计. @Component public class DubboConsu ...

  5. Bika LIMS 开源LIMS集—— SENAITE的安装

    安装环境 操作系统 Ubuntu 18.04 LTS Python 2.x. Plone 4 安装步骤 Ubuntu等Linux.Mac系统一般安装有Python的环境,但由于需要安装Python扩展 ...

  6. Spring框架系列(6) - Spring IOC实现原理详解之IOC体系结构设计

    在对IoC有了初步的认知后,我们开始对IOC的实现原理进行深入理解.本文将帮助你站在设计者的角度去看IOC最顶层的结构设计.@pdai Spring框架系列(6) - Spring IOC实现原理详解 ...

  7. docker的平替--podman

    前言 我们都知道,docker这个东西,是CaaS(Container as a Service,容器即服务)的通常解法.我们使用docker来管理容器的生命周期,比如镜像的生成.容器的管理和定制(D ...

  8. Spring框架系列(12) - Spring AOP实现原理详解之JDK代理实现

    上文我们学习了SpringAOP Cglib动态代理的实现,本文主要是SpringAOP JDK动态代理的案例和实现部分.@pdai Spring框架系列(12) - Spring AOP实现原理详解 ...

  9. Docker — 从入门到实践PDF下载(可复制版)

    0.9-rc2(2017-12-09)修订说明:本书内容将基于DockerCEv17.MM进行重新修订,计划2017年底发布0.9.0版本.旧版本(Docker1.13-)内容,请阅读docker-l ...

  10. 关于vm虚拟机的问题

    这几天搞虚拟机搞的头疼,真是一步一个坑,总结以下几个问题: 安装不了或用户不接受协议:原因应该是你之前装过vm,没有彻底清理,和本次安装形成了对抗,所以我们需要安装WindowsInstallerCl ...