【rabbitMQ】-延迟队列-模拟控制智能家居的操作指令 热推荐
(资料图片仅供参考)
二.如何设置延迟队列?
1.配置2个业务队列(扫地机执行命令业务队列,洗衣机执行命令业务队列),绑定到业务交换机上
2.为业务队列配置死信交换机和路由key
3.为死信交换机配置2个延迟队列(扫地机执行命令延迟队列,洗衣机执行命令延迟队列)三.延迟队列代码落地
using MengLin.Shopping.RabbitMQ.Common;using RabbitMQ.Client;using System;using System.Collections;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace MengLin.Shopping.RabbitMQ.MsgProducer.QueueType.Delay{ ////// 延迟队列 /// public class DelayQueue { public static void SendMessage() { //业务交换机 var exchangeBusiness = "business-exchange"; var queueBusinessSaoDiJiCommand = "SaoDiJiCommand-business-queue";//扫地机执行命令业务队列 var routeKeyBusinessSaoDiJiCommand = "SaoDiJiCommand-business-routekey";//扫地机执行命令路由key var queueBusinessXiYiJiCommand = "XiYiJiCommand-business-queue";//洗衣机执行命令业务队列 var routeKeyBusinessXiYiJiCommand = "XiYiJiCommand-business-routekey";//洗衣机执行命令路由key //死信交换机 var exchangeDeadLetter = "deadLetter-exchange"; //扫地机执行命令的延时队列和路由key var delaySaoDiJiCommandQueue = "SaoDiJiCommand-delay-queue"; var routeKeyDelaySaoDiJi = "SaoDiJi-delay-routekey"; //洗衣机执行命令的延时队列和路由key var delayXiYiJiCommandQueue = "XiYiJiCommand-delay-queue"; var routeKeyDelayXiYiJi = "XiYiJi-delay-routekey"; using (var connection = RabbitMQHelper.GetConnection()) { using (var channel = connection.CreateModel()) { //创建死信交换机(死信交换机对交换机类型没有要求) channel.ExchangeDeclare(exchange: exchangeDeadLetter, type: ExchangeType.Direct, durable: true, autoDelete: false); //创建扫地机执行命令的延时队列 channel.QueueDeclare(queue: delaySaoDiJiCommandQueue, durable: true, exclusive: false, autoDelete: false); //创建洗衣机执行命令的延时队列 channel.QueueDeclare(queue: delayXiYiJiCommandQueue, durable: true, exclusive: false, autoDelete: false); //绑定死信交换机到扫地机执行命令的延时队列 channel.QueueBind(exchange: exchangeDeadLetter, queue: delaySaoDiJiCommandQueue, routingKey: routeKeyDelaySaoDiJi); //绑定死信交换机到洗衣机执行命令的延时队列 channel.QueueBind(exchange: exchangeDeadLetter, queue: delayXiYiJiCommandQueue, routingKey: routeKeyDelayXiYiJi); //创建业务交换机 channel.ExchangeDeclare(exchange: exchangeBusiness, type: ExchangeType.Direct, durable: true, autoDelete: false); //创建扫地机命令业务队列 Dictionarydic1 = new Dictionary (); dic1.Add("x-expires", 30 * 6 * 10000); //30分钟后扫地机命令业务队列自动干掉 dic1.Add("x-message-ttl", 10 * 6 * 10000);//设置消息在扫地机命令业务队列中的存活时间,即过期时间(消息如果10分钟内没有消费,就会放入扫地机执行命令的延时队列里) dic1.Add("x-dead-letter-exchange", exchangeDeadLetter);//过期消息转向路由 dic1.Add("x-dead-letter-routing-key", routeKeyDelaySaoDiJi);//设置死信交换机的路由key,死信交换机会根据路由key去找到对应的延迟队列 channel.QueueDeclare(queue: queueBusinessSaoDiJiCommand, durable: true, exclusive: false, autoDelete: false, arguments:dic1); //绑定业务交换机到扫地机命令业务队列 channel.QueueBind(queue: queueBusinessSaoDiJiCommand, exchange: exchangeBusiness, routingKey: routeKeyBusinessSaoDiJiCommand); //创建洗衣机命令业务队列 Dictionary dic2 = new Dictionary (); dic2.Add("x-expires", 30 * 6 * 10000); //30分钟后洗衣机命令业务队列自动干掉 dic2.Add("x-message-ttl", 20 * 6 * 10000);//设置消息在洗衣机命令业务队列中的存活时间,即过期时间(消息如果20分钟内没有消费,就会放入洗衣机执行命令的延时队列里) dic2.Add("x-dead-letter-exchange", exchangeDeadLetter);//过期消息转向路由 dic2.Add("x-dead-letter-routing-key", routeKeyDelayXiYiJi);//过期消息转向路由相匹配routingkey channel.QueueDeclare(queue: queueBusinessXiYiJiCommand, durable: true, exclusive: false, autoDelete: false, arguments: dic2); //绑定业务交换机到洗衣机命令业务队列 channel.QueueBind(queue: queueBusinessXiYiJiCommand, exchange: exchangeBusiness, routingKey: routeKeyBusinessXiYiJiCommand); Console.WriteLine("请输入发送的内容:"); var message = Console.ReadLine(); var body = Encoding.UTF8.GetBytes(message); //消息持久化,既然都要用到死信队列了,说明这条消息还是比较重要的 var properties = channel.CreateBasicProperties(); properties.Persistent = true; if(message.Contains("aa")) { //发布消息到扫地机命令业务队列 channel.BasicPublish(exchange: exchangeBusiness, routingKey: routeKeyBusinessSaoDiJiCommand, basicProperties: properties, body: body); } else { //发布消息洗衣机命令业务队列 channel.BasicPublish(exchange: exchangeBusiness, routingKey: routeKeyBusinessXiYiJiCommand, basicProperties: properties, body: body); } } } } }}
下一篇:最后一页
X 关闭
-
“大春不足小春补” 小春作物为农户打开增收新路
近年来,受全国市场供过于求的影响,宾川县拉乌乡大春传统支柱产业核桃产业颓势明显。拉乌乡党委、乡政府积极思变,理清发展思路,树立大春
-
一墒墒蔬菜长势喜人 村民“钱袋子”鼓起来了
三月的文山壮族苗族自治州广南县那洒镇贵马村,山清水秀,春意盎然。走进贵马村河畔1000亩连片农田,一墒墒蔬菜长势喜人,村民们正忙着采收
-
楚雄市新能源公交车占公交车总数的72%
近日,楚雄市公共汽车有限公司结合公交线路营运情况,再次将部分线路的54辆燃油公交车更换为新能源纯电动公交车。截至目前,全市运行的533
-
落实减费让利政策 为小微企业和个体工商户纾困减负
近年来,农行云南省分行积极贯彻落实党中央、国务院关于金融回归本源、服从服务于经济社会发展的决策部署,持续推进和加大减费让利、减轻企