RabbitMq 队列的一些常见方法及参数

方法:

1、QueueDeclare  声明队列

1 public static QueueDeclareOk QueueDeclare(String queue, Boolean durable, Boolean exclusive, Boolean autoDelete, IDictionary<String, Object> arguments);

queue:声明的队列名称
durable:是否持久化,是否将队列持久化到mnesia数据库中,有专门的表保存我们的队列声明。
exclusive:排外,①当前定义的队列是connection的channel是共享的,其他的connection是访问不到的。②当connection关闭的时候,队列将被删除。
autoDelete:自动删除,当最后一个consumer(消费者)断开之后,队列将自动删除。
arguments:参数是rabbitmq的一个扩展,功能非常强大,基本是AMPQ中没有的。

2、QueueDeclareNoWait  声明队列无需等待
1 public static Void QueueDeclareNoWait(String queue, Boolean durable, Boolean exclusive, Boolean autoDelete, IDictionary<String, Object> arguments);
  3、QueueDeclarePassive  消极的队列声明

1 public static QueueDeclareOk QueueDeclarePassive(String queue);
  被用来检测队列是否存在,不存在则抛出异常,存在则不做任何操作。

参数:

1.x-message-ttl:Number

1个发布的消息在队列中存在多长时间后被取消(单位毫秒)

*可以对单个消息设置过期时间

复制代码
1 //设置消息属性
2 var properties = channel.CreateBasicProperties();
3 properties.Headers = new Dictionary<String, Object>();
4 properties.Headers.Add(“username”, “fanqi”);
5 //设置过期时间
6 properties.Expiration = “8000”;
7 //发布消息
8 //String exchange, 交换机名称
9 //String routingKey, routingKey
10 //IBasicProperties basicProperties, 发布属性
11 //Byte[] body 消息内容
12 channel.BasicPublish(“headersExchange”, string.Empty, properties, Encoding.UTF8.GetBytes(“来自.net的问候”));
复制代码
  2.x-expires:Number

当Queue(队列)在指定的时间未被访问,则队列将被自动删除。

3.x-max-length:Number

队列所能容下消息的最大长度。当超出长度后,新消息将会覆盖最前面的消息,类似于Redis的LRU算法。

4.x-max-length-bytes:Number

限定队列的最大占用空间,当超出后也使用类似于Redis的LRU算法。

5.x-overflow:String

设置队列溢出行为。这决定了当达到队列的最大长度时,消息会发生什么。有效值为Drop Head或Reject Publish。

6.x-dead-letter-exchange:String

有时候我们希望当队列的消息达到上限后溢出的消息不会被删除掉,而是走到另一个队列中保存起来。

7.x-dead-letter-routing-key:String

如果不定义,则默认为溢出队列的routing-key,因此,一般和6一起定义。

8.x-max-priority:Number

如果将一个队列加上优先级参数,那么该队列为优先级队列。

1)、给队列加上优先级参数使其成为优先级队列

x-max-priority=10【值不要太大,本质是一个树结构】

2)、给消息加上优先级属性

复制代码
1 //设置消息属性
2 var properties = channel.CreateBasicProperties();
3 properties.Headers = new Dictionary<String, Object>();
4 properties.Headers.Add(“username”, “fanqi”);
5 //设置过期时间
6 properties.Expiration = “8000”;
7 //设置优先级
8 properties.Priority = 7;
9 //发布消息
10 //String exchange, 交换机名称
11 //String routingKey, routingKey
12 //IBasicProperties basicProperties, 发布属性
13 //Byte[] body 消息内容
14 channel.BasicPublish(“headersExchange”, string.Empty, properties, Encoding.UTF8.GetBytes(“来自.net的问候”));
复制代码
  通过优先级特性,将一个队列编程stack(堆栈)

9.x-queue-mode:String

队列类型  x-queue-mode=lazy  懒队列,在磁盘上尽可能多地保留消息以减少RAM使用;如果未设置,则队列将保留内存缓存以尽可能快地传递消息。

10.x-queue-master-locator:String

将队列设置为主位置模式,确定在节点集群上声明时队列主位置所依据的规则。

作者:奇
出处:https://www.cnblogs.com/fanqisoft/
本文版权归作者和博客园共有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值