tnblog
首页
视频
资源
登录

mq交换机的各种类型

6719人阅读 2019/6/16 16:44 总访问:3465175 评论:0 收藏:0 手机
分类: .net后台框架


《1》Message TTL

(1) Queue TTL =》   给队列中的所有消息限定一个时间

(2) Message TTL =》  给队列中指定的消息限定一个时间  


《2》Auto Expire 【自动删除】


(1)当我们的队列在规定的时间内没有来访问,就会被删除

consume,basicget,declare...


《3》Max Length 限定队列的最大长度

《4》Max Length Bytes 限定队列的最大占用空间大小。。。

《5》dead-letter当超出最大值转交给另外交换机和另外队列处理(在此之前请先创建好交换机和队列)

《6》Priority实现先进先出

上代码:

看得懂的干,看不懂的。。!

翻前面案例!

  1. //Queue TTL 形式
  2. //创建队列
  3. //姓名,是否持久化,是否是专有的,是否自动删除,
  4. //channe.QueueDeclare("mytest", false, false, false, new Dictionary<string, object>
  5. //{
  6. //    { "x-message-ttl",1000*8 } //表示该消息在发布8秒后消息消失
  7. //});
  8. //channe.BasicPublish(string.Empty, "mytest", null, Encoding.UTF8.GetBytes("乱说"));
  9. //Message TTL 形式
  10. //channe.QueueDeclare("mytest", false, false, false, new Dictionary<string, object>
  11. //{
  12. //});
  13. //var propertes = channe.CreateBasicProperties();
  14. //propertes.Expiration = "8000";//表示该消息在发布8秒后消息消失
  15. //channe.BasicPublish(string.Empty, "mytest", propertes, Encoding.UTF8.GetBytes("乱说"));
  16. //Auto Expire 形式  8秒后将会删除该队列
  17. //channe.QueueDeclare("mytest", false, false, false, new Dictionary<string, object>
  18. //{
  19. //    {"x-expires",1000*8}
  20. //});
  21. //channe.BasicPublish(string.Empty, "mytest", null, Encoding.UTF8.GetBytes("乱说"));
  22. //消息最大
  23. channe.QueueDeclare("mytest"falsefalsefalsenew Dictionary<stringobject>
  24. {
  25.     {"x-max-length",10}//最大10条消息,然后是按照最先开始进入队列来出队列的
  26. });
  27. for (int i = 0; i < 15; i++)
  28. {
  29.     channe.BasicPublish(string.Empty, "mytest"null, Encoding.UTF8.GetBytes("乱说:" + i));
  30. }
  31. Console.WriteLine("发布消息完成");
  32. Console.Read();
  1.  ////当大过最大数量将会把消息转至mydead_exchange----mydead_queue队列中进行处理
  2.  //channe.QueueDeclare("mytest", false, false, false, new Dictionary<string, object>
  3.  //{
  4.  //    {"x-max-length",10},//最大10条消息,然后是按照最先开始进入队列来出队列的
  5.  //    { "x-dead-letter-exchange","mydead_exchange"},
  6.  //    { "x-dead-letter-routing-key","mydead_queue"}
  7.  //});
  8.  //for (int i = 0; i < 15; i++)
  9.  //{
  10.  //    channe.BasicPublish(string.Empty, "mytest", null, Encoding.UTF8.GetBytes("乱说:" + i));
  11.  //}
  12.  //Console.Read();
  13.  //Priority实现先进先出
  14.  channe.QueueDeclare("mytest"falsefalsefalsenew Dictionary<stringobject>
  15.  {
  16.      {"x-max-length",10},//最大10条消息,然后是按照最先开始进入队列来出队列的
  17.  });
  18.  var prox = channe.CreateBasicProperties();
  19.  for (int i = 0; i < 15; i++)
  20.  {
  21.      prox.Priority = (byte)i;//倒序 先进先出
  22.      channe.BasicPublish(string.Empty, "mytest", prox, Encoding.UTF8.GetBytes("乱说:" + i));
  23.  }
  24.  Console.Read();

第五条补充先要执行的代码:

  1. channe.ExchangeDeclare("mydead_exchange", ExchangeType.Direct, truefalsenull);
  2. //当有很多个队列同时在获取数据时
  3. channe.QueueDeclare("mydead_queue"truefalsefalsenull);
  4. //将 error 绑定一下
  5. channe.QueueBind("mydead_queue""mydead_exchange""mydead_queue"null);
  6. //应当用到事件
  7. {
  8.     //官网案例:https://www.rabbitmq.com/tutorials/tutorial-two-dotnet.html
  9.     //可以优化计算压力
  10.     var consumer = new EventingBasicConsumer(channe);
  11.     consumer.Received += (sender, e) =>
  12.     {
  13.         string msg = Encoding.UTF8.GetString(e.Body);
  14.         Console.WriteLine(msg);
  15.     };
  16.     //执行加载的事件
  17.     channe.BasicConsume("mydead_queue"true, consumer);
  18. }
  19. Console.ReadKey();

再见各位!


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

​Windows下安装Rabbitmq

跳过舞,祝大家新年快乐哇!1、下载安装erlang因为rabbitmq是基于erlang实现的所以需要先安装erlang打开网址https://www.er...

net core使用消息队列rabbitmq

使用NuGet下载rabbitmq客户端工具Install-Package RabbitMQ.Client -Version 3.6.5生产消息staticvoidMain(string[]args) ...

rabbitmq常用命令

rabbitmqctl environment:查询环境什么的例如这里可以看到rabbitmq的连接端口是5672,有时间我们想知道端口有没有改起什么...

修改rabbitmq的连接端口

rabbitmq的默认连接端口是5672,如果要修改的话,可以通过配置文件修改当然一般情况下都会遇到坑默认配置文件地址:安装目...

消息队列rabbitmq介绍

消息队列的一般作用 异步调用,延迟处理 应用解耦 流量消峰,处理高并发,秒杀等 说白了,消息队列就是一方生产消息,一方...

rabbitmq官网上六大版块之二(Direct类型交换机通过routingKey分类型输出)

其实rabbitmq,老师都说得差不多了,下面是老师的连接。http://www.tnblog.net/aojiancc2/article/UserCategory/134官网教...

rabbitmq六大版块之三(Fanout类型交换机相同数据多逼格处理)

Fanout类型交换机的特点是:同样的数据分发给每一个自己所绑定的队列,每个队列可以按照自己的需求对数据进行不同的处理【...

rabbitmq中Header类型交换机的处理(and与or的处理)

headers类型交换机是通过 muliple attributes 代替 routing key.x-match [all/any]all: 所有地方header头信息必须匹配any:...

springboot整合rabbitmq

Windows下安装RabbitMQ:http://www.tnblog.net/aojiancc2/article/details/232消息队列rabbitmq介绍:http://www.tnblog.n...

Docker 部署Rabbitmq集群

Docker 部署RabbitMq集群[TOC] 镜像环境docker pull rabbitmq:3-management 镜像后面带management是带web管理界面...

Rabbitmq 命令行运用

RabbitMq 命令行运用[TOC] RabbitMQ是一个开源的多协议消息传递代理。 描述 rabbitmqctl是用于管理RabbitMQ服务器节点...

Rabbitmq 对配置文件的操作

RabbitMq 对配置文件的操作[TOC] 从UI界面中找到配置文件的位置 查看我们的配置文件 在这里我已经对原来的配置文件做了...

.netcore3.1 Rabbitmq 简单运用与相关方法的介绍

.netcore3.1 RabbitMq 简单运用与相关方法的介绍[TOC] 在这里我将使用简单的生产—-&gt;加入队列—-&gt;消费,做一个简...

.netcore3.1 Rabbitmq 工作队列轮询与确认消息

.netcore3.1 RabbitMq 工作队列轮询与确认消息[TOC] https://www.rabbitmq.com/confirms.htmlhttps://www.rabbitmq.com/tu...

.netcore3.1 Rabbitmq Routing的应用

.netcore3.1 RabbitMq Routing的应用[TOC] 在前面很多文章中都用到了routingKey参数但并没有细说它的用途。在这之前我可...
这一世以无限游戏为使命!
排名
2
文章
633
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术