日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

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

發(fā)布時(shí)間:2023/12/20 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RabbitMQ初探--用C#简单实现通信服务 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

MQ全稱為Message Queue,?消息隊(duì)列(MQ)是一種應(yīng)用程序?qū)?yīng)用程序的通信方法。應(yīng)用程序通過(guò)讀寫(xiě)出入隊(duì)列的消息(針對(duì)應(yīng)用程序的數(shù)據(jù))來(lái)通信,而無(wú)需專用連接來(lái)鏈接它們。

消息傳遞指的是程序之間通過(guò)在消息中發(fā)送數(shù)據(jù)進(jìn)行通信,而不是通過(guò)直接調(diào)用彼此來(lái)通信,直接調(diào)用通常是用于諸如遠(yuǎn)程過(guò)程調(diào)用(例如上篇文章說(shuō)到的Thrift)的技術(shù)。排隊(duì)指的是應(yīng)用程序通過(guò) 隊(duì)列來(lái)通信。隊(duì)列的使用除去了接收和發(fā)送應(yīng)用程序同時(shí)執(zhí)行的要求。

?

來(lái),我們開(kāi)始進(jìn)入初探的大門。

第一步:

當(dāng)然是下載相關(guān)東西。

因?yàn)镽abbitMQ是由erlang實(shí)現(xiàn)的,所以需要先安裝erlang。

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

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

?

第二步:

用VisualStudio創(chuàng)建兩個(gè)如下程序集(控制臺(tái)程序),ConsumerClient(消費(fèi)端)、ProducerClient(生產(chǎn)端)。

?

第三步:

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

?

第四步:

編寫(xiě)具體代碼:

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

/// <summary>/// 主函數(shù)/// </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>/// 主函數(shù)/// </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 = "$$$$$$一號(hào)比較長(zhǎng)的消息類型$$$$$$" + i;advancedBus.Publish(exChange, string.Empty, false, new Message<string>(message));Console.WriteLine("已發(fā)送消息【{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 = "######二號(hào)短消息類型" + i;advancedBus.Publish(exChange2, string.Empty, false, new Message<string>(message));Console.WriteLine("已發(fā)送消息【{0}】", message);}}).BeginInvoke(null, null);}catch (Exception ex){Console.WriteLine(ex.Message);}Console.ReadLine();}

?

?

第五步:

執(zhí)行程序,先執(zhí)行ConsumerClient,再執(zhí)行ProducerClient,測(cè)試一下,兩個(gè)進(jìn)程就通過(guò)這個(gè)消息隊(duì)列達(dá)到通信的目的了,大功告成!

轉(zhuǎn)載于:https://www.cnblogs.com/yuwuji/p/9305900.html

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。