queuedeclare参数说明_RabbitMQ 声明队列时候的参数解释

本文详细解析了RabbitMQ中QueueDeclare方法的参数,包括durable、exclusive、autoDelete等,以及arguments参数如Message TTL、Auto Expire、Max Length等高级特性,帮助理解如何在声明队列时设置各种属性。
摘要由CSDN通过智能技术生成

参考链接: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 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 { { "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 { { "x-expires", 5000 } });

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

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

//声明一个queue,最大长度10,最大大小2048bytes

channel.QueueDeclare("queue", true, false, false, new Dictionary

{

{ "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 声明Queue时的参数们的Power

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

Spring Boot &plus; RabbitMQ 配置参数解释

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

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

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

RabbitMQ &lpar;八&rpar; 队列的参数详解

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

RabbitMQ消息队列入门篇(环境配置&plus;Java实例&plus;基础概念)

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

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之中的基本概念. 二 .基 ...

随机推荐

error at &colon;&colon;0 can&&num;39&semi;t find referenced pointcut messageInsertAspect

解决方法: http://stackoverflow.com/questions/10482563/aop-java-lang-illegalargumentexception-error-at-0- ...

Android通用流行框架大全

1. 缓存 名称 描述 DiskLruCache Java实现基于LRU的磁盘缓存 2.图片加载 名称 描述 Android Universal Image Loader 一个强大的加载,缓存,展示图 ...

CentOS7 开机调整亮度

默认亮度是100,受不了,所与就自己想了个办法,依赖其它的自启动服务使我的设置生效. /usr/lib/systemd/scripts/nfs-utils_env.sh这是一个开机自启动服务要用到的脚 ...

scp远程复制

scp 源 目标 -r 复制目录 scp -r  root@ip:/XXX/path  /XXX 注意:复制目录,包括该目录本身,目的地址无需再加该目录

spring3 mvc:方法返回值的学习

新建后台代码用以测试返回类型,在这里我新建的如下: /** * 项目名称:Spring3mvc demo * Copyright ? 2010-2012 spartacus.org.cn All Ri ...

c&num; 数据库操作学习

一. 如何处理数据库连接 1. 数据库连接可以分为“物理连接”和“逻辑连接”(默认使用连接池的情况下Pooling=true): 物理连接:创建数据库连接时,默认会有一定数量的物理连接(默认Min P ...

Swagger的简单入门【转载】

一.Swagger简介 上一篇文章中我们介绍了Spring Boot对Restful的支持,这篇文章我们继续讨论这个话题,不过,我们这里不再讨论Restful API如何实现,而是讨论Restful ...

springboot集成redis(mybatis、分布式session)

安装Redis请参考: 一.springboot集成redis并实现DB与缓存同步 1.添加redis及数据库相关依赖(pom.xml)

第三部分:Android 应用程序接口指南---第一节:应用程序组件---第一章1-1&period;Fragment

第1-1章 Fragments 在Activity中的fragment代表的是一种行为或用户界面的一部分.你可以在activity中结合多个fragments创建一个多面板UI,并可以在多个activ ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值