<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

        (1)消費消息失敗后,重新加入隊列并優先級處理;

        (2)根據消息的內容篩選出優先級高的進行設置,并發送

      1. 生產者

      using RabbitMQMsgProducer.MessageProducer;
      using Microsoft.Extensions.Configuration;
      using System;
      using System.IO;
      
      namespace RabbitMQMsgProducer
      {
          class Program
          {
              static void Main(string[] args)
              {
                  try
                  {
                      {
                          // 優先級
                          // 1. 消費消息失敗后,重新加入隊列并優先級處理
                          PriorityMsg.Send01();
                      }
                      {
                          // 優先級
                          // 2. 根據消息的內容篩選出優先級高的進行設置,并發送
                          //PriorityMsg.Send02();
                      }
                      Console.ReadLine();
                  }
                  catch (Exception ex)
                  {
                      Console.WriteLine(ex.Message);
                  }
              }
          }
      }
      using RabbitMQ.Client;
      using System;
      using System.Collections.Generic;
      using System.Text;
      
      namespace RabbitMQMsgProducer.MessageProducer
      {
          public class PriorityMsg
          {
              /// <summary>
              /// 消費消息失敗后,重新加入隊列并優先級處理
              /// </summary>
              public static void Send01()
              {
                  ConnectionFactory connectionFactory = new ConnectionFactory();
                  connectionFactory.HostName = "localhost";
                  connectionFactory.UserName = "guest";
                  connectionFactory.Password = "guest";
                  string queueName = "PriorityMsgQueue";
                  string exchangeName = "PriorityMsgExchange";
                  string routingKeyName = "PriorityKey";
                  using (IConnection connection = connectionFactory.CreateConnection())
                  {
                      using (IModel channel = connection.CreateModel())
                      {
                          // 聲明exchange
                          channel.ExchangeDeclare(exchange: exchangeName, type: ExchangeType.Direct, durable: true, autoDelete: false, arguments: null);
                          // 聲明隊列
                          // x-max-priority 指定隊列的優先級設置,必須的
                          channel.QueueDeclare(queue: queueName, durable: true, exclusive: false, autoDelete: false, arguments: new Dictionary<string, object>()
                          {
                              {"x-max-priority",10 }
                          });
                          // 綁定
                          channel.QueueBind(queue: queueName, exchange: exchangeName, routingKey: routingKeyName);
      
                          IBasicProperties props = channel.CreateBasicProperties();
                          props.DeliveryMode = 2;
                          int i = 1;
                          while (true)
                          {
                              props.Priority = 1; // 設置優先級
                              string msg = $"the message is {i}";
                              channel.BasicPublish(exchange: exchangeName, routingKey: routingKeyName, basicProperties: props, body: Encoding.UTF8.GetBytes(msg));
                              Console.WriteLine($"{msg} is send.");
                              i++;
                              if (i > 29)
                              {
                                  break;
                              }
                          }
                          Console.WriteLine("press [enter] exit.");
                          Console.Read();
                      }
                  }
              }
      
              /// <summary>
              /// 根據消息的內容篩選出優先級高的進行設置,并發送
              /// </summary>
              public static void Send02()
              {
                  ConnectionFactory connectionFactory = new ConnectionFactory();
                  connectionFactory.HostName = "localhost";
                  connectionFactory.UserName = "guest";
                  connectionFactory.Password = "guest";
                  string queueName = "PriorityMsgQueue";
                  string exchangeName = "PriorityMsgExchange";
                  string routingKeyName = "PriorityKey";
                  using (IConnection connection = connectionFactory.CreateConnection())
                  {
                      using (IModel channel = connection.CreateModel())
                      {
                          // 聲明exchange
                          channel.ExchangeDeclare(exchange: exchangeName, type: ExchangeType.Direct, durable: true, autoDelete: false, arguments: null);
                          // 聲明隊列
                          // x-max-priority 指定隊列的優先級設置,必須的
                          channel.QueueDeclare(queue: queueName, durable: true, exclusive: false, autoDelete: false, arguments: new Dictionary<string, object>()
                          {
                              {"x-max-priority",10 }
                          });
                          // 綁定
                          channel.QueueBind(queue: queueName, exchange: exchangeName, routingKey: routingKeyName);
      
                          string[] msgList =
                          {
                              "頂頭上司 給你一個任務1",
                              "1部門領導 約你溝通問題",
                              "2部門領導 約你溝通問題",
                              "3部門領導 約你溝通問題",
                              "人力 談談漲薪",
                              "頂頭上司 給你一個任務2",
                          };
                          IBasicProperties props = channel.CreateBasicProperties();
                          foreach (string msg in msgList)
                          {
                              ////沒有優先級這樣寫
                              //channel.BasicPublish(exchange: exchangeName, routingKey: routingKeyName, basicProperties: null, body: Encoding.UTF8.GetBytes(msg));
                              if (msg.StartsWith("頂頭上司"))
                              {
                                  props.Priority = 10;
                              }
                              else if (msg.Contains("漲薪"))
                              {
                                  props.Priority = 9;
                              }
                              else
                              {
                                  props.Priority = 1;
                              }
                              channel.BasicPublish(exchange: exchangeName, routingKey: routingKeyName, basicProperties: props, body: Encoding.UTF8.GetBytes(msg));
                              Console.WriteLine($"{msg} is send.");
                          }
                          Console.WriteLine("press [enter] exit.");
                          Console.Read();
                      }
                  }
              }
          }
      }

       

      2. 消費者

      using RabbitMQMsgProducer.MessageProducer;
      using Microsoft.Extensions.Configuration;
      using System;
      using System.IO;
      
      namespace RabbitMQMsgProducer
      {
          class Program
          {
              static void Main(string[] args)
              {
                  try
                  {
                      {
                          // 優先級
                          // 1. 消費消息失敗后,重新加入隊列并優先級處理
                          PriorityMsg.Send01();
                      }
                      {
                          // 優先級
                          // 2. 根據消息的內容篩選出優先級高的進行設置,并發送
                          //PriorityMsg.Send02();
                      }
                      Console.ReadLine();
                  }
                  catch (Exception ex)
                  {
                      Console.WriteLine(ex.Message);
                  }
              }
          }
      }
      using RabbitMQ.Client;
      using RabbitMQ.Client.Events;
      using System;
      using System.Collections.Generic;
      using System.Text;
      
      namespace RabbitMQMsgConsumer001.MessageConsumer
      {
          public class PriorityMsg
          {
              /// <summary>
              /// 消費消息失敗后,重新加入隊列并優先級處理
              /// </summary>
              public static void Receive01()
              {
                  ConnectionFactory connectionFactory = new ConnectionFactory();
                  connectionFactory.HostName = "localhost";
                  connectionFactory.UserName = "guest";
                  connectionFactory.Password = "guest";
                  string queueName = "PriorityMsgQueue";
                  string exchangeName = "PriorityMsgExchange";
                  string routingKeyName = "PriorityKey";
                  using (IConnection connection = connectionFactory.CreateConnection())
                  {
                      using (IModel channel = connection.CreateModel())
                      {
                          EventingBasicConsumer consumer = new EventingBasicConsumer(channel);
                          consumer.Received += (model, ea) =>
                          {
                              string msg = Encoding.UTF8.GetString(ea.Body.ToArray());
                              Console.WriteLine($"the consumer receive {msg}");
                              if(msg.Equals("the message is 1"))
                              {
                                  // 這里重新刪除消息隊列中消息,并重新設置消息優先級,寫入隊列
                                  // 消息默認隊列優先級是1,重新寫入設置為10。
                                  //否定:告訴Broker,這個消息我沒有正常消費;  requeue: true:重新寫入到隊列里去; false:你還是刪除掉;
                                  channel.BasicReject(deliveryTag: ea.DeliveryTag, requeue: false);
      
                                  ///設置消息優先級最高 重新寫入到隊列中去
                                  IBasicProperties props = channel.CreateBasicProperties();
                                  props.Priority = 10;
                                  channel.BasicPublish(exchange: exchangeName, routingKey: routingKeyName, basicProperties: props, body: Encoding.UTF8.GetBytes(msg + "double.."));
                              }
                              else
                              {
                                  //手動確認  消息正常消費  告訴Broker:你可以把當前這條消息刪除掉了
                                  channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);
                              }
                          };
                          Console.WriteLine("the consumer is ready.");
                          //處理消息 
                          //autoAck: false  顯示確認;
                          channel.BasicConsume(queue: queueName, autoAck: false, consumer: consumer);
                          Console.ReadKey();
                      }
                  }
              }
      
              /// <summary>
              /// 根據消息的內容篩選出優先級高的進行設置,并發送
              /// </summary>
              public static void Receive02()
              {
                  ConnectionFactory connectionFactory = new ConnectionFactory();
                  connectionFactory.HostName = "localhost";
                  connectionFactory.UserName = "guest";
                  connectionFactory.Password = "guest";
                  string queueName = "PriorityMsgQueue";
                  string exchangeName = "PriorityMsgExchange";
                  string routingKeyName = "PriorityKey";
                  using (IConnection connection = connectionFactory.CreateConnection())
                  {
                      using (IModel channel = connection.CreateModel())
                      {
                          EventingBasicConsumer consumer = new EventingBasicConsumer(channel);
                          consumer.Received += (model, ea) =>
                          {
                              string msg = Encoding.UTF8.GetString(ea.Body.ToArray());
                              Console.WriteLine($"the consumer receive {msg}");
                              //手動確認  消息正常消費  告訴Broker:你可以把當前這條消息刪除掉了
                              channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);
                          };
                          Console.WriteLine("the consumer is ready.");
                          //處理消息 
                          //autoAck: false  顯示確認;
                          channel.BasicConsume(queue: queueName, autoAck: false, consumer: consumer);
                          Console.ReadKey();
                      }
                  }
              }
          }
      }

       

      3. 結果

        消費消息失敗后,重新加入隊列并優先級處理;

       

       4. 結果

         根據消息的內容篩選出優先級高的進行設置,并發送

       

      posted on 2021-01-18 19:53  Fletcher  閱讀(97)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 狠狠色噜噜狠狠狠777米奇小说| 亚洲国产在一区二区三区| 777奇米四色成人影视色区| 激情国产一区二区三区四| 久久精品国产一区二区蜜芽| 国产精品香港三级国产av| 国产亚洲综合区成人国产| 年轻女教师hd中字3| 少妇无套内谢免费视频| 激情文学一区二区国产区| 幻女free性俄罗斯毛片| 熟妇激情一区二区三区| а∨天堂一区中文字幕| 国产av午夜精品福利| 西城区| 老男人久久青草av高清| 中文字幕国产精品专区| 2021国产精品一卡2卡三卡4卡| 奶头又大又白喷奶水av| 少妇无套内谢免费视频| 国产成人综合久久亚洲av| 成年午夜免费韩国做受视频| 亚洲日韩成人无码不卡网站| 白丝乳交内射一二三区| 99精产国品一二三产品香蕉| 北岛玲中文字幕人妻系列| 亚洲欧洲日产国码AV天堂偷窥| 亚洲人成电影网站色mp4| 国产精品综合av一区二区| 好男人官网资源在线观看| 一二三四日本高清社区5| 免费的特黄特色大片| 亚洲中文在线精品国产| 精品不卡一区二区三区| 国产精品毛片av999999| 国产一区二区三区黄色片| 亚洲全网成人资源在线观看| 久久天堂无码av网站| 久久99精品久久久久麻豆| 4hu四虎永久在线观看| 亚洲欧美自偷自拍视频图片|