日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

RabbitMQ初探--用C#简单实现通信服务

發布時間:2023/12/20 C# 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RabbitMQ初探--用C#简单实现通信服务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MQ全稱為Message Queue,?消息隊列(MQ)是一種應用程序對應用程序的通信方法。應用程序通過讀寫出入隊列的消息(針對應用程序的數據)來通信,而無需專用連接來鏈接它們。

消息傳遞指的是程序之間通過在消息中發送數據進行通信,而不是通過直接調用彼此來通信,直接調用通常是用于諸如遠程過程調用(例如上篇文章說到的Thrift)的技術。排隊指的是應用程序通過 隊列來通信。隊列的使用除去了接收和發送應用程序同時執行的要求。

?

來,我們開始進入初探的大門。

第一步:

當然是下載相關東西。

因為RabbitMQ是由erlang實現的,所以需要先安裝erlang。

下載erlang并安裝,目前最新版本是21.0.1。

再下載RabbitMQ-server并安裝,目前最新版本是3.7.7。

?

第二步:

用VisualStudio創建兩個如下程序集(控制臺程序),ConsumerClient(消費端)、ProducerClient(生產端)。

?

第三步:

兩個程序集都用NuGet添加EasyNetQ引用,EasyNetQ是RabbitMQ官方封裝好的一個組件,利用它可以更方便的使用RabbitMQ。當然EasyNetQ會依賴于RabbitMQ.Client,所以你添加EasyNetQ引用的同時,也會添加RabbitMQ.Client。

?

第四步:

編寫具體代碼:

ConsumerClient端中Program.cs部分代碼為:

/// <summary>/// 主函數/// </summary>/// <param name="args"></param>static void Main(string[] args){IBus bus = RabbitHutch.CreateBus(string.Format("host={0}", "127.0.0.1:5672"));IAdvancedBus advancedBus = bus.Advanced;IExchange exChange = advancedBus.ExchangeDeclare("fanout_mq", "fanout");IQueue queue = advancedBus.QueueDeclare();advancedBus.Bind(exChange, queue, string.Empty);advancedBus.Consume(queue, registration => { registration.Add<string>((message, info) => { Console.WriteLine("接收到消息【{0}】", message.Body); }); });Console.ReadLine();}

?

ProducerClient端中Program.cs部分代碼為:

/// <summary>/// 主函數/// </summary>/// <param name="args"></param>static void Main(string[] args){try{IBus bus = RabbitHutch.CreateBus(string.Format("host={0}", "127.0.0.1:5672"));IAdvancedBus advancedBus = bus.Advanced;IExchange exChange = advancedBus.ExchangeDeclare("fanout_mq", "fanout");new Action(() =>{for (int i = 0; i < 1000; i++){Thread.Sleep(1000);string message = "$$$$$$一號比較長的消息類型$$$$$$" + i;advancedBus.Publish(exChange, string.Empty, false, new Message<string>(message));Console.WriteLine("已發送消息【{0}】", message);}}).BeginInvoke(null, null);IExchange exChange2 = advancedBus.ExchangeDeclare("fanout_mq", "fanout");new Action(() =>{for (int i = 0; i < 2000; i++){Thread.Sleep(500);string message = "######二號短消息類型" + i;advancedBus.Publish(exChange2, string.Empty, false, new Message<string>(message));Console.WriteLine("已發送消息【{0}】", message);}}).BeginInvoke(null, null);}catch (Exception ex){Console.WriteLine(ex.Message);}Console.ReadLine();}

?

?

第五步:

執行程序,先執行ConsumerClient,再執行ProducerClient,測試一下,兩個進程就通過這個消息隊列達到通信的目的了,大功告成!

轉載于:https://www.cnblogs.com/yuwuji/p/9305900.html

總結

以上是生活随笔為你收集整理的RabbitMQ初探--用C#简单实现通信服务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。