参考链接:http://www.rabbitmq.com/releases/rabbitmq-dotnet-client/v3.6.6/rabbitmq-dotnet-client-3.6.6-client-htmldoc/html/type-RabbitMQ.Client.IModel.html#method-M:RabbitMQ.Client.IModel.BasicConsume(System.String,System.Collections.IDictionary,RabbitMQ.Client.IBasicConsumer)

创建Connection【高成本,tcp的连接】 可以创建无数个channel【低成本】

1.QueueDeclare方法 声明队列
public static QueueDeclareOk QueueDeclare(this IModel model, string queue = "", bool durable = false, bool exclusive = true, bool autoDelete = true, IDictionary<string, object> arguments = null);

durable:持久化
mnesia:erlang 数据库,有专门的表去保存我们的队列声明

exclusive:排外
当前定义的队列connection中的channel是共享的,其他的connection是访问不到的
当conneciton.close的时候,queue被删除

autoDelete:自动删除
当前最后一个consumer断开之后,autoDelete队列

agruments:rabbitmq 的扩展

2.QueueDeclareNoWait方法 声明队列,不等待队列创建结果,异步的

3.QueueDeclarePassive方法:消极的声明创建,判断队列是否存在,不存在报错

4.详细说明下QueueDeclare方法agruments(rabbitmq的扩展)

参考地址:https://www.cnblogs.com/LiangSW/p/6224333.html

1. 我们要知道到底有哪些参数属性。。。。

《1》 Message TTL

<1> Queue TTL =》 Per-Queue Message TTL 【给一个queue的所有message限定一个时间】
Cache的一个效果。。。
//声明一个queue,里面的内容自发布起五秒后被删除
channel.QueueDeclare("messagettlqueue", true, false, false, new Dictionary<string, object> { { "x-message-ttl", 5000 }

<2> Message TTL =》 单独指定。【定制化的】

IBasicProperties basicProperties,
var properties = channel.CreateBasicProperties();
//设置过期时间
properties.Expiration = "5000";
channel.BasicPublish(null, "queue", properties, Encoding.UTF8.GetBytes("我五秒后就会消失"));

2.Auto Expire 【自动删除】

《1》 当我们的queue在指定的时间未被访问,就会被删除。。。

//声明一个queue,queue五秒内而且未被任何形式的消费,则被删除
channel.QueueDeclare("queue", true, false, false, new Dictionary<string, object> { { "x-expires", 5000 } });

3. Max Length 限定队列的最大长度。。。 limit =1000

4. Max Length Bytes 限定队列的最大占用空间大小。。。 【一般来说受制于内存,disk的大小限定】

//声明一个queue,最大长度10,最大大小2048bytes
channel.QueueDeclare("queue", true, false, false, new Dictionary<string, object>
{
{ "x-max-length", 10 },
{ "x-max-length-bytes", 2048}
});
redis,memcache。。。 LRU算法。。。淘汰机制。。。。

5.Dead letter exchagne 与 Dead letter routing key

何为Dead letter,,也就是说那些没有被投递出去的信件

一: Dead letter exchange

有时候我们不希望message被drop掉,而是走到另一个队列中,又或者是保存起来。。。

二: Dead letter routing key

打到exchange中去的时候,他的routingkey是什么,,

和普通定义方式没什么两样。。。

三: Maximum priority

优先级加到队列上,就是一个优先级队列,,, 【堆,大根堆,小根堆】

1. 给队列贴上一个优先级的标签。。。 x-max-priority =10, 这个值不要设置的太大。。。 节点更多。。 sortset。。。

不管你用什么语言实现,都是一个tree结构。。。。

2. 给message打上具体的优先级的value。。。 value<=10

MSMQ的message级别一般也就4,5中。。。low/normal/high/higher//........

我们通过“优先级”特性,,将一个queue 变成了 stack。。。。

RabbitMQ 声明队列时候的参数解释的更多相关文章

  1. RabbitMQ 声明Queue时的参数们的Power

    参数们的Power 在声明队列的时候会有很多的参数 public static QueueDeclareOk QueueDeclare(this IModel model, string queue ...

  2. Spring Boot + RabbitMQ 配置参数解释

    最近生产RabbitMQ出了几次问题,所以抽时间整理了一份关于Spring Boot 整合RabbitMQ环境下的配置参数解释,通过官网文档和网上其他朋友一些文章参考归纳整理而得,有错误之处还请指正~ ...

  3. RabbitMQ Queue中Arguments属性参数过期队列,过期消息,超时队列的声明

    开发十年,就只剩下这套Java开发体系了 >>>   创建队列时指定参数 队列属性:x-message-ttl 可以控制被publish到queue中的message 被丢弃前能够存 ...

  4. RabbitMQ (八) 队列的参数详解

    代码中,我们通常这样声明一个队列: //声明队列 channel.QueueDeclare ( queue: QueueName, //队列名称 durable: false, //队列是否持久化.f ...

  5. RabbitMQ消息队列入门篇(环境配置+Java实例+基础概念)

    一.消息队列使用场景或者其好处 消息队列一般是在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量. 在项目启 ...

  6. RabbitMQ 消息队列 应用

    安装参考    详细介绍   学习参考 RabbitMQ 消息队列 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. M ...

  7. python学习之-- RabbitMQ 消息队列

    记录:异步网络框架:twisted学习参考:www.cnblogs.com/alex3714/articles/5248247.html RabbitMQ 模块 <消息队列> 先说明:py ...

  8. RabbitMQ六种队列模式-发布订阅模式

    前言 RabbitMQ六种队列模式-简单队列RabbitMQ六种队列模式-工作队列RabbitMQ六种队列模式-发布订阅 [本文]RabbitMQ六种队列模式-路由模式RabbitMQ六种队列模式-主 ...

  9. RabbitMQ ——简单队列

    一 .概述 我们不从开始就讲述基本的概念,尤其是在Rabbitmq之中有些概念确实比较难以理解,我们首先做的就是将光放提供的消息模型 进行实现,然后再总结一下Rabbitmq之中的基本概念. 二 .基 ...

随机推荐

  1. mysql的服务器构成

    什么是实例 这里的实例不是类产生的实例对象,而是Linux系统下的一种机制 1.MySQL的后台进程+线程+预分配的内存结构. 2.MySQL在启动的过程中会启动后台守护进程,并生成工作线程,预分配内 ...

  2. zabbix 告警小试

    zabbix 告警小试 1. 实验内容简述 本次实验,旨在通过zabbix监控,实现对告警信息的实时通知,主要用到了zabbix中的item.trigger.action.user.user grou ...

  3. python3.x执行post请求时报错“POST data should be bytes or an iterable of bytes...”的解决方法

    使用python3.5.1执行post请求时,一直报错"POST data should be bytes or an iterable of bytes. It cannot be of ...

  4. mysql全局权限账户%登录不上ERROR 1045 (28000): Access denied for user 'mhz'@'localhost' (using password: YES)

    mysql全局权限账户%登录不上ERROR 1045 (28000): Access denied for user 'mhz'@'localhost' (using password: YES) 解 ...

  5. 深入理解Java设计模式之观察者模式

    前言 观察者,即时observer,总结来说就是一个当一个被观察的对象的状态发生变化时,会通知相应的观察者对象.   观察者模式定义了四种角色:抽象主题.具体主题.抽象观察者.具体观察者 1.抽象主题 ...

  6. 第一节. .Net Core环境的安装和常用指令

    一. 环境介绍和安装 1. 环境介绍 .Net FrameWork框架:BCL(基础类库 system.dll).CLR(运行时 仅支持:Windows).FCL(一些框架,比如:MVC.WPF) . ...

  7. 简单迷宫算法(递归与非递归C++实现)

    假定迷宫如下:1代表墙,0代表道路,起点在(1,1),终点(11,9)(PS:下标从0开始计算). 现在寻求一条路径能从起点到达终点(非最短). 有两种解法:递归与非递归. 递归算法思路: 要用递归, ...

  8. Contest2163 - 2019-3-28 高一noip基础知识点 测试6 题解版

    传送门 @dsfz201814 改题 T1:全锕,过 T2:全锕,过 T3:@dsfz201814 先用竖着放置的木块将它变成高度差最大为1的数列 然后对于任意相邻相等的两块,可以将它看成任意 例如, ...

  9. django数据库迁移报错

    当输入C:\Users\太阳之泪\b2p\my_pro>python manage.py makemigrations shop 出现一下情况 然后输入C:\Users\太阳之泪\b2p\my_ ...

  10. 分布式系列十三: nginx

    nginx偏运维, 不过作为开发应该了解它能做什么事情, 其作为技术架构的一部分必不可少 正向代理和反向代理 正向代理是代理的客户端, 反向代理是代理的服务端. nginx就是一款可以作反向代理的we ...