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

歡迎訪問 生活随笔!

生活随笔

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

C#

如何在 C# 中使用 RabbitMQ

發布時間:2023/12/4 C# 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何在 C# 中使用 RabbitMQ 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

譯文鏈接:https://www.infoworld.com/article/3200210/how-to-work-with-rabbitmq-in-c.html

RabbitMQ 是一個非常流行的,開源的,使用Erlang語言編寫的框架,通常在電信級平臺中作為消息中間件使用,RabbitMQ實現了高級的AMQP協議用于實現進程間,應用程序間,服務器之間的消息交互,而且它還有一個非常????????的特性,你可以使用自定義插件來擴展RabbitMQ的功能,而且它還支持多協議,高性能,高可靠,集群以及高可用隊列。

創建隊列的方式也多種多樣,你可以編碼創建,也可以通過管理員用戶界面,甚至通過 PowerShell 進行隊列創建。

RabbitMQ 術語

當你在用 RabbitMQ 時,你要理解下面兩個術語

  • 隊列是一個數據結構上的概念,支持 FIFO 特性,在本文中,消息隊列就是一個可以存放消息的巨大緩存。

  • producer(生產者) 的使命是生成數據并推送到隊列的一種角色組件,consumer(消費者)它能夠從存儲消息的隊列中提取數據進行消費,生產者-消費者 是并行編程中非常流行的設計模式之一。

安裝和啟動

安裝 RabbitMQ 是非常簡單的,在安裝之前,你需要先安裝 Erlang,根據你的操作系統選擇正確版本呢的 Erlang,下載地址:https://www.erlang.org/downloads ?,然后繼續下載安裝 RabbitMQ Server ,下載地址:https://www.rabbitmq.com/download.html

用 C# 構建 RabbitMQ

現在 Erlang 和 RabbitMQ 已經成功安裝到你的windows上,如果想和 Rabbitmq Server 進行交互,你需要安裝一個 RabbitMQ .NET client , 可以用 NuGet Package Manager 控制臺去安裝 RabbitMQ Client。

在 Visual Studio 中新建一個 Console Application,然后通過 NuGet Package Manager 安裝 RabbitMQ.Client 開發包,假定 RabbitMQ Server 是運行在本機,下面的代碼片段創建了一個和 RabbitMQ Server 交互的 Connection 連接,代碼如下:

ConnectionFactory?connectionFactory?=?new?ConnectionFactory(); IConnection?connection?=?connectionFactory.CreateConnection();

現在再次假定 RabbitMQ 跑在遠程服務器上,下面的方法返回了一個通往 Rabbitmq Service 的 Connection 連接。

public?IConnection?GetConnection(string?hostName,?string?userName,?string?password){ConnectionFactory?connectionFactory?=?new?ConnectionFactory();connectionFactory.HostName?=?hostName;connectionFactory.UserName?=?userName;connectionFactory.Password?=?password;return?connectionFactory.CreateConnection();}

發送和接收消息

現在 RabbitMQ Service 已經在本地正常運行,使用下面的方法向隊列發送消息,請注意通往 RabbitMQ Service 的 Connection 用的是默認配置。

public?static?void?Send(string?queue,?string?data){using?(IConnection?connection?=?new?ConnectionFactory().CreateConnection()){using?(IModel?channel?=?connection.CreateModel()){channel.QueueDeclare(queue,?false,?false,?false,?null);channel.BasicPublish(string.Empty,?queue,?null,?Encoding.UTF8.GetBytes(data));}}}

channel 常用于和 server 進行通訊從而發送和接收消息,不過上面這種隊列是不持久的,為啥這么說呢?因為我在 QueueDeclare 方法的第二個參數中設置了 false,所以送往這個 queue 的 message 只會存留于內存中,一旦 server 重啟,這個數據將會丟失。

下面的代碼展示了如何從 queue 中消費數據。

public?static?void?Receive(string?queue){using?(IConnection?connection?=?new?ConnectionFactory().CreateConnection()){using?(IModel?channel?=?connection.CreateModel()){channel.QueueDeclare(queue,?false,?false,?false,?null);var?consumer?=?new?EventingBasicConsumer(channel);BasicGetResult?result?=?channel.BasicGet(queue,?true);if?(result?!=?null){string?data?=Encoding.UTF8.GetString(result.Body);Console.WriteLine(data);}}}}

接下來的代碼片段展示了如何使用 Send 和 Receive 方法進行數據的發送和消費。

static?void?Main(string[]?args) {Send("IDG","Hello?World!");Receive("IDG");Console.ReadLine(); }

值得一提的是:RabbitMQ 對持久化也提供了非常好的支持,有兩種模式的 queue 可供選擇:持久化和非持久化,如果采用持久化模式,消息是存放在硬盤中的,反之非持久化的模式,數據僅僅存放于內存中,一旦server重啟,非持久化模式的隊列數據將會丟失,最后補充一下,持久化可以用于以下三個級別上:Queue,Exchange 和 Message。

總結

以上是生活随笔為你收集整理的如何在 C# 中使用 RabbitMQ的全部內容,希望文章能夠幫你解決所遇到的問題。

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