
《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实现先进先出
上代码:
看得懂的干,看不懂的。。!
翻前面案例!
- //Queue TTL 形式
- //创建队列
- //姓名,是否持久化,是否是专有的,是否自动删除,
-
- //channe.QueueDeclare("mytest", false, false, false, new Dictionary<string, object>
- //{
- // { "x-message-ttl",1000*8 } //表示该消息在发布8秒后消息消失
- //});
- //channe.BasicPublish(string.Empty, "mytest", null, Encoding.UTF8.GetBytes("乱说"));
-
- //Message TTL 形式
- //channe.QueueDeclare("mytest", false, false, false, new Dictionary<string, object>
- //{
-
- //});
- //var propertes = channe.CreateBasicProperties();
- //propertes.Expiration = "8000";//表示该消息在发布8秒后消息消失
-
- //channe.BasicPublish(string.Empty, "mytest", propertes, Encoding.UTF8.GetBytes("乱说"));
-
-
- //Auto Expire 形式 8秒后将会删除该队列
- //channe.QueueDeclare("mytest", false, false, false, new Dictionary<string, object>
- //{
- // {"x-expires",1000*8}
- //});
-
- //channe.BasicPublish(string.Empty, "mytest", null, Encoding.UTF8.GetBytes("乱说"));
-
- //消息最大
- channe.QueueDeclare("mytest", false, false, false, new Dictionary<string, object>
- {
- {"x-max-length",10}//最大10条消息,然后是按照最先开始进入队列来出队列的
- });
- for (int i = 0; i < 15; i++)
- {
- channe.BasicPublish(string.Empty, "mytest", null, Encoding.UTF8.GetBytes("乱说:" + i));
- }
-
- Console.WriteLine("发布消息完成");
- Console.Read();
- ////当大过最大数量将会把消息转至mydead_exchange----mydead_queue队列中进行处理
- //channe.QueueDeclare("mytest", false, false, false, new Dictionary<string, object>
- //{
- // {"x-max-length",10},//最大10条消息,然后是按照最先开始进入队列来出队列的
- // { "x-dead-letter-exchange","mydead_exchange"},
- // { "x-dead-letter-routing-key","mydead_queue"}
- //});
- //for (int i = 0; i < 15; i++)
- //{
- // channe.BasicPublish(string.Empty, "mytest", null, Encoding.UTF8.GetBytes("乱说:" + i));
- //}
-
- //Console.Read();
-
- //Priority实现先进先出
- channe.QueueDeclare("mytest", false, false, false, new Dictionary<string, object>
- {
- {"x-max-length",10},//最大10条消息,然后是按照最先开始进入队列来出队列的
- });
- var prox = channe.CreateBasicProperties();
-
- for (int i = 0; i < 15; i++)
- {
- prox.Priority = (byte)i;//倒序 先进先出
- channe.BasicPublish(string.Empty, "mytest", prox, Encoding.UTF8.GetBytes("乱说:" + i));
- }
-
- Console.Read();
第五条补充先要执行的代码:
-
- channe.ExchangeDeclare("mydead_exchange", ExchangeType.Direct, true, false, null);
- //当有很多个队列同时在获取数据时
- channe.QueueDeclare("mydead_queue", true, false, false, null);
-
- //将 error 绑定一下
- channe.QueueBind("mydead_queue", "mydead_exchange", "mydead_queue", null);
- //应当用到事件
- {
- //官网案例:https://www.rabbitmq.com/tutorials/tutorial-two-dotnet.html
- //可以优化计算压力
- var consumer = new EventingBasicConsumer(channe);
- consumer.Received += (sender, e) =>
- {
- string msg = Encoding.UTF8.GetString(e.Body);
- Console.WriteLine(msg);
- };
- //执行加载的事件
- channe.BasicConsume("mydead_queue", true, consumer);
-
- }
-
- Console.ReadKey();
再见各位!
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
评价
排名
2
文章
633
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 :
好是好,这个对效率影响大不大哇,效率高不高
一个bug让程序员走上法庭 索赔金额达400亿日元
剑轩 : 有点可怕
ASP.NET Core 服务注册生命周期
剑轩 :
http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术