RabbitMQ 声明队列时候的参数解释
参考链接: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 声明队列时候的参数解释的更多相关文章
- RabbitMQ 声明Queue时的参数们的Power
参数们的Power 在声明队列的时候会有很多的参数 public static QueueDeclareOk QueueDeclare(this IModel model, string queue ...
- Spring Boot + RabbitMQ 配置参数解释
最近生产RabbitMQ出了几次问题,所以抽时间整理了一份关于Spring Boot 整合RabbitMQ环境下的配置参数解释,通过官网文档和网上其他朋友一些文章参考归纳整理而得,有错误之处还请指正~ ...
- RabbitMQ Queue中Arguments属性参数过期队列,过期消息,超时队列的声明
开发十年,就只剩下这套Java开发体系了 >>> 创建队列时指定参数 队列属性:x-message-ttl 可以控制被publish到queue中的message 被丢弃前能够存 ...
- RabbitMQ (八) 队列的参数详解
代码中,我们通常这样声明一个队列: //声明队列 channel.QueueDeclare ( queue: QueueName, //队列名称 durable: false, //队列是否持久化.f ...
- RabbitMQ消息队列入门篇(环境配置+Java实例+基础概念)
一.消息队列使用场景或者其好处 消息队列一般是在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量. 在项目启 ...
- RabbitMQ 消息队列 应用
安装参考 详细介绍 学习参考 RabbitMQ 消息队列 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. M ...
- python学习之-- RabbitMQ 消息队列
记录:异步网络框架:twisted学习参考:www.cnblogs.com/alex3714/articles/5248247.html RabbitMQ 模块 <消息队列> 先说明:py ...
- RabbitMQ六种队列模式-发布订阅模式
前言 RabbitMQ六种队列模式-简单队列RabbitMQ六种队列模式-工作队列RabbitMQ六种队列模式-发布订阅 [本文]RabbitMQ六种队列模式-路由模式RabbitMQ六种队列模式-主 ...
- RabbitMQ ——简单队列
一 .概述 我们不从开始就讲述基本的概念,尤其是在Rabbitmq之中有些概念确实比较难以理解,我们首先做的就是将光放提供的消息模型 进行实现,然后再总结一下Rabbitmq之中的基本概念. 二 .基 ...
随机推荐
- mysql的服务器构成
什么是实例 这里的实例不是类产生的实例对象,而是Linux系统下的一种机制 1.MySQL的后台进程+线程+预分配的内存结构. 2.MySQL在启动的过程中会启动后台守护进程,并生成工作线程,预分配内 ...
- zabbix 告警小试
zabbix 告警小试 1. 实验内容简述 本次实验,旨在通过zabbix监控,实现对告警信息的实时通知,主要用到了zabbix中的item.trigger.action.user.user grou ...
- 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 ...
- 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) 解 ...
- 深入理解Java设计模式之观察者模式
前言 观察者,即时observer,总结来说就是一个当一个被观察的对象的状态发生变化时,会通知相应的观察者对象. 观察者模式定义了四种角色:抽象主题.具体主题.抽象观察者.具体观察者 1.抽象主题 ...
- 第一节. .Net Core环境的安装和常用指令
一. 环境介绍和安装 1. 环境介绍 .Net FrameWork框架:BCL(基础类库 system.dll).CLR(运行时 仅支持:Windows).FCL(一些框架,比如:MVC.WPF) . ...
- 简单迷宫算法(递归与非递归C++实现)
假定迷宫如下:1代表墙,0代表道路,起点在(1,1),终点(11,9)(PS:下标从0开始计算). 现在寻求一条路径能从起点到达终点(非最短). 有两种解法:递归与非递归. 递归算法思路: 要用递归, ...
- Contest2163 - 2019-3-28 高一noip基础知识点 测试6 题解版
传送门 @dsfz201814 改题 T1:全锕,过 T2:全锕,过 T3:@dsfz201814 先用竖着放置的木块将它变成高度差最大为1的数列 然后对于任意相邻相等的两块,可以将它看成任意 例如, ...
- django数据库迁移报错
当输入C:\Users\太阳之泪\b2p\my_pro>python manage.py makemigrations shop 出现一下情况 然后输入C:\Users\太阳之泪\b2p\my_ ...
- 分布式系列十三: nginx
nginx偏运维, 不过作为开发应该了解它能做什么事情, 其作为技术架构的一部分必不可少 正向代理和反向代理 正向代理是代理的客户端, 反向代理是代理的服务端. nginx就是一款可以作反向代理的we ...