• <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
    主站蜘蛛池模板: 久久国产乱子伦精品免费强| 国产精品福利在线观看免费不卡| 51午夜精品免费视频| 国产高清一级毛片精品| 成人区精品一区二区不卡| 中文国产成人精品久久不卡| 国产精品亚洲二区在线观看| 国产精品一在线观看| 亚洲处破女AV日韩精品| 精品中文高清欧美| 99国内精品久久久久久久| 69久久精品无码一区二区| 日本aⅴ精品中文字幕| 亚洲av午夜精品一区二区三区 | 国产精品久久久久天天影视| 亚洲综合av永久无码精品一区二区 | 99在线精品一区二区三区| 一本一本久久a久久综合精品蜜桃| 久久精品国产99久久香蕉| 办公室久久精品| 日韩精品www| 国产精品亚洲专区在线观看| 国产欧美精品AAAAAA片| 日韩精品无码一区二区三区免费| 亚洲а∨天堂久久精品| 久久夜色撩人精品国产小说| 国产午夜精品一区二区三区小说 | 欧美日韩精品久久久久| 国产成人精品综合在线观看| 久久精品视频网| 国产成人亚洲精品| 69SEX久久精品国产麻豆| 国产成人亚洲综合无码精品| 国产精品无码a∨精品| 久久国产精品成人片免费| 久久精品水蜜桃av综合天堂 | 久久99精品久久久久久9蜜桃| 国产精品亚洲不卡一区二区三区| 国产精品无码免费播放| 国产精品自在线拍国产手机版| 国产精品亚洲mnbav网站|