方法:

  1、QueueDeclare  声明队列

 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  声明队列无需等待
 public static Void QueueDeclareNoWait(String queue, Boolean durable, Boolean exclusive, Boolean autoDelete, IDictionary<String, Object> arguments);

  3、QueueDeclarePassive  消极的队列声明

 public static QueueDeclareOk QueueDeclarePassive(String queue);

  被用来检测队列是否存在,不存在则抛出异常,存在则不做任何操作。

参数:

  1.x-message-ttl:Number

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

  

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

  

             //设置消息属性
var properties = channel.CreateBasicProperties();
properties.Headers = new Dictionary<String, Object>();
properties.Headers.Add("username", "fanqi");
//设置过期时间
properties.Expiration = "";
//发布消息
//String exchange, 交换机名称
//String routingKey, routingKey
//IBasicProperties basicProperties, 发布属性
//Byte[] body 消息内容
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)、给消息加上优先级属性

    

             //设置消息属性
var properties = channel.CreateBasicProperties();
properties.Headers = new Dictionary<String, Object>();
properties.Headers.Add("username", "fanqi");
//设置过期时间
properties.Expiration = "";
//设置优先级
properties.Priority = ;
//发布消息
//String exchange, 交换机名称
//String routingKey, routingKey
//IBasicProperties basicProperties, 发布属性
//Byte[] body 消息内容
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

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

  


最新文章

  1. B窗体继承于A窗体,B启动:问题点
  2. Octopus系列之数据上传格式要求说明
  3. 有关使用Maven常见问题总结(Eclipse中使用Maven、Maven项目部署到tomcat等问题)
  4. sphinx全文检索功能 | windows下测试 (二)
  5. Azure SQL 数据库弹性池现已面市
  6. RGB颜色查询对照表
  7. 剑指XX(游戏10) - 走正步工厂一个安静的农场游戏的代码
  8. 从Openvswitch代码看网络包的旅程
  9. UVA1194 Machine Schedule
  10. 2018-2019-1 20189203《Linux内核原理与分析》第五周作业
  11. Google是如何教会机器玩Atari游戏的
  12. 1、QThreadPool线程池的使用,线程和Widget通过QMetaObject::invokeMethod交互。
  13. 可以在任何时候attach一个shader到program对象
  14. Java单例模式的应用
  15. linux如何删除行首的空格
  16. 2018.09.24 bzoj1816: [Cqoi2010]扑克牌(二分答案)
  17. collectionView itemW宽度计算不对
  18. SSH案例--入门级
  19. Supervisor4.0和python2.7的crit问题,导致python进程阻塞
  20. 【C++】深度探索C++对象模型读书笔记--Data语意学(The Semantics of data)

热门文章

  1. 20135337朱荟潼 Linux第三周学习总结 ——Linux内核源代码简介
  2. 作业六:小学生四则运算之NABCD模型与产品Backlog。
  3. NPM和Yarn添加淘宝镜像
  4. linux C单元测试工具CUnit的编译安装及使用
  5. 新版vue-cli如何使用json-server来mork
  6. JVM的自愈能力
  7. ionic npm安装报错 no such file ,解决办法
  8. Java反射的用法
  9. 【BZOJ1294】[SCOI2009]围豆豆(动态规划,状压)
  10. (转)Maven学习总结(九)——使用Nexus搭建Maven私服