• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    .Net使用RabbitMQ即時發消息Demo

    來源:懂視網 責編:小采 時間:2020-11-27 22:34:56
    文檔

    .Net使用RabbitMQ即時發消息Demo

    .Net使用RabbitMQ即時發消息Demo:前言 最近項目要使用RabbitMQ,網上已經有很多優秀的文章了,百度百科對RabbitMQ闡述也非常明確,建議去看下,還有amqp協議。必須一提的是rabbitmq是由LShift提供的一個消息隊列協議(AMQP)的開源實現,由以高性能、健壯以及可伸縮性出名的Erlang寫成(
    推薦度:
    導讀.Net使用RabbitMQ即時發消息Demo:前言 最近項目要使用RabbitMQ,網上已經有很多優秀的文章了,百度百科對RabbitMQ闡述也非常明確,建議去看下,還有amqp協議。必須一提的是rabbitmq是由LShift提供的一個消息隊列協議(AMQP)的開源實現,由以高性能、健壯以及可伸縮性出名的Erlang寫成(

    前言

    最近項目要使用RabbitMQ,網上已經有很多優秀的文章了,百度百科對RabbitMQ闡述也非常明確,建議去看下,還有amqp協議。必須一提的是rabbitmq是由LShift提供的一個消息隊列協議(AMQP)的開源實現,由以高性能、健壯以及可伸縮性出名的Erlang寫成(因此也是繼承了這些優點)。

    最近參考大神們的博客,自己做了一個RabbitMQ即時發消息的Demo。下面話不多說了,來一起看看詳細的介紹吧。

    步驟如下: 

    1.使用VS的NuGet安裝包管理工具安裝RabbitMQ.Client:

    2.生產者端代碼:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using RabbitMQ.Client;
    
    namespace RabbitMQ.Producter
    {
     class Program
     {
     /// <summary>
     /// 連接配置
     /// </summary>
     private static readonly ConnectionFactory rabbitMqFactory = new ConnectionFactory()
     {
     HostName="localhost",
     UserName = "guest",
     Password = "guest",
     Port = 5672,
     //VirtualHost = "JentVirtualHost"
     };
     /// <summary>
     /// 路由名稱
     /// </summary>
     const string ExchangeName = "Jent.Exchange";
     /// <summary>
     /// 隊列名稱
     /// </summary>
     const string QueueName = "Jent.Queue";
     static void Main(string[] args)
     {
     DirectExchangeSendMsg();
     Console.WriteLine("按任意鍵退出程序!");
     Console.ReadKey();
     }
     /// <summary>
     /// 單點精確路由模式
     /// </summary>
     private static void DirectExchangeSendMsg()
     {
     using (IConnection conn = rabbitMqFactory.CreateConnection())
     {
     using (IModel channel = conn.CreateModel())
     {
     channel.ExchangeDeclare(ExchangeName, "direct", durable: true, autoDelete: false, arguments: null);
     channel.QueueDeclare(QueueName, durable: true, exclusive: false, autoDelete: false, arguments: null);
     channel.QueueBind(QueueName, ExchangeName, routingKey: QueueName);
    
     var props = channel.CreateBasicProperties();
     props.Persistent = true;
     Console.WriteLine("請輸入需要發送的消息:");
     string vadata = Console.ReadLine();
     while (vadata != "exit")
     {
     var msgBody = Encoding.UTF8.GetBytes(vadata);
     channel.BasicPublish(exchange: ExchangeName, routingKey: QueueName, basicProperties: props, body: msgBody);
     Console.WriteLine(string.Format("發送時間:{0},發送完畢,輸入exit退出消息發送", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
     vadata = Console.ReadLine();
     }
     }
     }
     }
     }
    }

    3.消費者端代碼:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using RabbitMQ.Client;
    
    namespace RabbitMQ.Consumer
    {
     class Program
     {
     /// <summary>
     /// 連接配置
     /// </summary>
     private static readonly ConnectionFactory rabbitMqFactory = new ConnectionFactory()
     {
     HostName = "127.0.0.1",
     UserName = "guest",
     Password = "guest",
     Port = 5672,
     //VirtualHost = "JentVirtualHost"
     };
     /// <summary>
     /// 路由名稱
     /// </summary>
     const string ExchangeName = "Jent.Exchange";
     /// <summary>
     /// 隊列名稱
     /// </summary>
     const string QueueName = "Jent.Queue";
    
     static void Main(string[] args)
     {
     DirectAcceptExchange();
    
     Console.WriteLine("輸入任意值退出程序!");
     Console.ReadKey();
     }
    
     private static void DirectAcceptExchange()
     {
     using (IConnection conn = rabbitMqFactory.CreateConnection())
     {
     using (IModel channel = conn.CreateModel())
     {
     channel.ExchangeDeclare(ExchangeName, "direct", durable: true, autoDelete: false, arguments: null);
     channel.QueueDeclare(QueueName, durable: true, exclusive: false, autoDelete: false, arguments: null);
     channel.QueueBind(QueueName, ExchangeName, routingKey: QueueName);
    
     while (true)
     {
     BasicGetResult msgResponse = channel.BasicGet(QueueName, autoAck: false);
     if (msgResponse != null)
     {
     var msgBody = Encoding.UTF8.GetString(msgResponse.Body);
     Console.WriteLine(string.Format("接收時間:{0},消息內容:{1}", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), msgBody));
     }
     //System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));
     }
     }
     }
     }
     }
    }

    4.程序結果:

    注:在第一步之前,你需要安裝RabbitMQ客戶端,可從http://www.rabbitmq.com/download.html下載,

            但是RabbitMQ又是依賴于Erlang OTP平臺,所以,安裝RabbitMQ之前,需要先從http://www.erlang.org/download.html下載安裝erlang

            關于這部分的內容,推薦閱讀:https://www.gxlcms.com/article/143499.htm

    總結

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    .Net使用RabbitMQ即時發消息Demo

    .Net使用RabbitMQ即時發消息Demo:前言 最近項目要使用RabbitMQ,網上已經有很多優秀的文章了,百度百科對RabbitMQ闡述也非常明確,建議去看下,還有amqp協議。必須一提的是rabbitmq是由LShift提供的一個消息隊列協議(AMQP)的開源實現,由以高性能、健壯以及可伸縮性出名的Erlang寫成(
    推薦度:
    標簽: 消息 發送 實時
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 真实国产乱子伦精品免费| 久久精品成人免费看| 国产成人亚洲精品青草天美| 国产成人无码精品一区在线观看 | 国内精品久久久久久中文字幕| 国产精品水嫩水嫩| 无码国模国产在线无码精品国产自在久国产 | 久久亚洲精品无码播放| 四虎最新永久在线精品免费| 国产麻豆精品一区二区三区v视界| 亚洲2022国产成人精品无码区| 99热亚洲精品6码| 国产精品爽黄69天堂a| 精品无码AV一区二区三区不卡| 亚洲婷婷国产精品电影人久久| 国内精品免费久久影院| 亚洲精品线在线观看| 国产成人精品天堂| 欧美精品中文字幕亚洲专区| 国产精品无码午夜福利| 四虎成人精品| 久久精品国产精品亚洲人人| 97精品伊人久久久大香线蕉 | 中国国产精品| 日韩欧美一区二区三区中文精品| 国产午夜福利精品久久| 日韩精品欧美| 久久精品国产精品亚洲人人| 精品国产91久久久久久久a| 国产玖玖玖九九精品视频| 国产成人高清精品免费观看| 中文精品一卡2卡3卡4卡| 午夜精品视频在线观看| 久久久精品一区二区三区| 秋霞午夜鲁丝片午夜精品久| 久久久久夜夜夜精品国产| 欧美亚洲国产精品第一页| 亚洲午夜精品久久久久久人妖| 91在线手机精品超级观看| 国产精品99久久久久久www| 国产乱子伦精品免费视频|