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

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

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

      RabbitMQ - 方法的簡(jiǎn)單封裝

       說(shuō)明

         為了方便使用,做了簡(jiǎn)單的封裝,生產(chǎn)消息可以使用泛型等,可以每次創(chuàng)建,可以使用單例模式,或者IOC使配合單例模式使用。這里就不一一介紹,請(qǐng)大家根據(jù)自己的業(yè)務(wù)場(chǎng)景設(shè)計(jì)。

       測(cè)試代碼:只有簡(jiǎn)單隊(duì)列的代碼作為參考
      •  RabbitMQHelper
      using RabbitMQ.Client;
      using RabbitMQ.Client.Events;
      using System;
      using System.Text;
      
      namespace RabbitMQTest.Common
      {
          public class RabbitMQHelper
          {
              /// <summary>
              /// 連接工廠
              /// </summary>
              ConnectionFactory connectionFactory;
      
              /// <summary>
              /// 連接
              /// </summary>
              IConnection connection;
      
              /// <summary>
              /// 通道
              /// </summary>
              IModel channel;
      
              /// <summary>
              /// 交換機(jī)名稱(chēng)
              /// </summary>
              string exchangeName;
      
              /// <summary>
              /// 構(gòu)造函數(shù)
              /// </summary>
              private RabbitMQHelper()
              {
                  //創(chuàng)建連接工廠
                  connectionFactory = new ConnectionFactory()
                  {
                      HostName = "192.168.1.101",
                      Port = 5672,
                      UserName = "admin",
                      Password = "admin",
                      VirtualHost = "testhost"
                  };
                  //創(chuàng)建連接
                  connection = connectionFactory.CreateConnection();
                  //創(chuàng)建通道
                  channel = connection.CreateModel();
              }
      
              private static readonly Lazy<RabbitMQHelper> _singletonLock = new Lazy<RabbitMQHelper>(() => new RabbitMQHelper());
      
              public static RabbitMQHelper Instance
              {
                  get
                  {
                      return _singletonLock.Value;
                  }
              }
      
              /// <summary>
              /// 生產(chǎn)消息
              /// <para>簡(jiǎn)單隊(duì)列(一對(duì)一模式)、Worker隊(duì)列(一對(duì)多模式)</para>
              /// </summary>
              /// <param name="queueName">隊(duì)列名稱(chēng)</param>
              /// <param name="msg">消息內(nèi)容</param>
              public void SendMsg(string queueName, string msg)
              {
                  //聲明一個(gè)隊(duì)列
                  channel.QueueDeclare(queue: queueName, durable: false, exclusive: false, autoDelete: false, arguments: null);
                  byte[] body = Encoding.UTF8.GetBytes(msg);
                  channel.BasicPublish(exchange: "", routingKey: queueName, basicProperties: null, body: body);
              }
      
              /// <summary>
              /// 消費(fèi)消息
              /// <para>簡(jiǎn)單隊(duì)列(一對(duì)一模式)、Worker隊(duì)列(一對(duì)多模式)</para>
              /// </summary>
              /// <param name="queueName">隊(duì)列名稱(chēng)</param>
              /// <param name="received">消費(fèi)消息</param>
              public void Receive(string queueName, Action<string> received)
              {
                  EventingBasicConsumer consumer = new EventingBasicConsumer(channel);
                  consumer.Received += (ch, ea) =>
                  {
                      string message = Encoding.Default.GetString(ea.Body.ToArray());
                      received(message);
                      channel.BasicAck(ea.DeliveryTag, false);
                  };
                  channel.BasicConsume(queueName, false, consumer);
              }
          }
      }
      
      •  使用方式
      using RabbitMQTest.Common;
      using System;
      using System.Threading;
      using System.Threading.Tasks;
      
      namespace RabbitMQTest.Con
      {
          class Program
          {
              static void Main(string[] args)
              {
                  Console.WriteLine("請(qǐng)輸入消息隊(duì)列測(cè)試數(shù)據(jù):");
                  string input = string.Empty;
                  Task.Run(() =>
                  {
                      do
                      {
                          input = Console.ReadLine();
      
                          RabbitMQHelper.Instance.SendMsg("test_queue_1", input);
                      } while (input.Trim().ToLower() != "exit");
                  });
      
                  Task.Run(() =>
                  {
                      RabbitMQHelper.Instance.Receive("test_queue_1", item =>
                      {
                          Console.WriteLine($"消費(fèi)消息:{item}");
                      });
                  });
      
                  //主線程不死
                  while (true)
                  {
                      Thread.Sleep(10000);
                      if (input == "exit") return;
                  }
              }
          }
      }
      posted @ 2021-06-24 16:36  gygtech  Views(316)  Comments(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 91蜜臀国产自产在线观看| 亚洲热视频这里只有精品| 亚洲女人的天堂在线观看| 久久av色欲av久久蜜桃网| аⅴ天堂中文在线网| 亚洲一区二区三区色视频| 亚洲av专区一区| 加勒比中文字幕无码一区| 人妻少妇偷人一区二区| 久久精品国产99精品国产2021| 国内极度色诱视频网站| 亚洲av乱码久久亚洲精品| 又色又爽又黄18禁美女裸身无遮挡| 国产成人综合亚洲欧美日韩| 麻豆成人精品国产免费| 秋霞av鲁丝片一区二区| 国产精品自拍视频我看看| 午夜在线观看成人av| 亚洲а∨天堂久久精品2021| 99久久无色码中文字幕| 国产成人不卡无码免费视频| 久久精品一本到99热免费| 中文天堂资源| 国产精品视频一区二区亚瑟| 日韩中文字幕精品人妻| 久久一夜天堂av一区二区| 日产国产精品亚洲系列| 色综合激情丁香七月色综合| 欧美不卡无线在线一二三区观| 韩国19禁无遮挡啪啪无码网站| 亚洲男人第一无码av网站| 日韩精品人妻系列无码av东京| 亚洲熟妇自偷自拍另欧美| 日韩乱码视频一区二区三区| 三年片在线观看免费观看高清动漫| 亚洲精品日本久久久中文字幕| 国产精品一区在线免费看| 大又大又粗又硬又爽少妇毛片| 丝袜a∨在线一区二区三区不卡 | 中文有码字幕日本第一页| 亚洲人成色77777在线观看|