RabbitMQ學習系列二:.net 環境下 C#程式碼使用 RabbitMQ 訊息佇列
上一篇已經講了Rabbitmq如何在Windows平臺安裝,不懂請移步:RabbitMQ學習系列一:windows下安裝RabbitMQ服務
一、理論:
.net環境下,C#程式碼呼叫RabbitMQ訊息佇列,本文用easynetq開源的.net Rabbitmq api來實現。
EasyNetQ 是一個易於使用的RabbitMQ的.Net客戶端API。
RabbitMQ 是由 LShift 提供的一個 Advanced Message Queuing Protocol (AMQP) 的開源實現,由以高效能、健壯以及可伸縮性出名的 Erlang 寫成,因此也是繼承了這些優點。
AMQP 裡主要要說兩個元件:Exchange 和 Queue (在 AMQP 1.0 裡還會有變動),
如下圖所示,綠色的 X 就是 Exchange ,紅色的是 Queue ,這兩者都在 Server 端,又稱作 Broker ,
這部分是 RabbitMQ 實現的,而藍色的則是客戶端,通常有 Producer 和 Consumer 兩種型別:
二、asp.net專案搭建
1、新建專案(略)
2、專案nuget需要使用的三方dll,本文案例使用的版本如下圖
3、訊息佇列類庫結構說明
4、BusBuilder.cs管道建立類,主要負責連結Rabbitmq
/// <summary> /// 訊息伺服器聯結器 /// </summary> public class BusBuilder { public static IBus CreateMessageBus() { //訊息伺服器連線字串 var connectionString = ConfigurationManager.ConnectionStrings["RabbitMQ"]; if (connectionString == null || connectionString.ConnectionString == string.Empty) { throw new Exception("messageserver connection string is missing or empty"); } return RabbitHutch.CreateBus(connectionString.ConnectionString); } }5、IProcessMessage類,定義了一個訊息方法,用於訊息傳遞
public interface IProcessMessage { void ProcessMsg(Message msg); void Notice(); }6、Message類,定義了訊息傳遞的實體屬性欄位等資訊
public class Message { public string MessageID { get; set; } public string MessageTitle { get; set; } public string MessageBody { get; set; } public string MessageRouter { get; set; } }7、MQHelper類,負責建立訊息管道、建立訊息管道、傳送訊息體等工作
/// <summary> /// 傳送訊息 /// </summary> public static void Publish(Message msg) { //// 建立訊息bus IBus bus = BusBuilder.CreateMessageBus(); try { using (var publishChannel = bus.OpenPublishChannel()) //建立訊息管道 { publishChannel.Publish(msg, x => x.WithTopic(msg.MessageRouter)); //通過管道傳送訊息 } } catch (EasyNetQException ex) { //處理連線訊息伺服器異常 } bus.Dispose();//與資料庫connection類似,使用後記得銷燬bus物件 }8、web專案進行呼叫後臺訊息佇列方法
RabbitMQ.Message msg = new RabbitMQ.Message(); msg.MessageID = "test"; msg.MessageBody = DateTime.Now.ToString(); msg.MessageTitle = "test"; msg.MessageRouter = "pcm.notice.zhangsan"; RabbitMQ.MQHelper.Publish(msg);
這樣就可以用c#傳送訊息到佇列中,測試結果如下圖:
檢視佇列下的訊息記錄
獲取佇列訊息嘗試
至此,C#向Rabbitmq訊息佇列傳送訊息已經簡單完成
下一篇:C#訂閱訊息、獲取訊息的方式,敬請期待。。。
由請喊我大龍哥最後編輯於:3年前
內容均為作者獨立觀點,不代表八零IT人立場,如涉及侵權,請及時告知。
相關文章
- RabbitMQ學習系列三:.net 環境下 C#程式碼訂閱 RabbitMQ 訊息並處理MQC#
- RabbitMQ .NET訊息佇列使用入門(五)【RabbitMQ例子】MQ佇列
- RabbitMQ .NET訊息佇列使用入門(四)【RabbitMQ用法大全】MQ佇列
- [訊息佇列]RabbitMQ佇列MQ
- RabbitMQ訊息佇列MQ佇列
- RabbitMQ訊息佇列(二):”Hello, World“MQ佇列
- RabbitMQ學習(三)之 “訊息佇列高階使用”MQ佇列
- rabbitmq訊息佇列原理MQ佇列
- MQ訊息佇列_RabbitMQMQ佇列
- 訊息佇列之RabbitMQ佇列MQ
- RabbitMQ 訊息佇列之佇列模型MQ佇列模型
- SpringBoot:初探 RabbitMQ 訊息佇列Spring BootMQ佇列
- RabbitMQ訊息佇列-Centos7下安裝RabbitMQ3.6.1MQ佇列CentOS
- RabbitMQ訊息佇列(五):Routing 訊息路由MQ佇列路由
- 訊息佇列的使用場景之RabbitMQ佇列MQ
- RabbitMQ 訊息佇列之 Exchange TypesMQ佇列
- Laravel5.6 整合 RabbitMQ 訊息佇列LaravelMQ佇列
- 萬字長文:從 C# 入門學會 RabbitMQ 訊息佇列程式設計C#MQ佇列程式設計
- RabbitMQ訊息佇列(六):使用主題進行訊息分發MQ佇列
- 2018-06-14: Java 訊息佇列之 RabbitMQ 使用Java佇列MQ
- 【訊息佇列】RabbitMq-宣告佇列與交換機佇列MQ
- 【訊息佇列】RabbitMq-交換機模型佇列MQ模型
- RabbitMQ訊息佇列(九):Publisher的訊息確認機制MQ佇列
- 訊息佇列Rabbitmq的交換器型別佇列MQ型別
- 學習在.NET Core中使用RabbitMQ進行訊息傳遞之持久化(二MQ持久化
- RabbitMQ高階之訊息限流與延時佇列MQ佇列
- RabbitMQ訊息佇列(三):任務分發機制MQ佇列
- RabbitMQ,RocketMQ,Kafka 幾種訊息佇列的對比MQKafka佇列
- 架構設計之NodeJS操作訊息佇列RabbitMQ架構NodeJS佇列MQ
- lumen 8.0 使用 rabbitmq 佇列MQ佇列
- RabbitMQ系列(一)RabbitMQ在Ubuntu上的環境搭建MQUbuntu
- C# Queue與RabbitMQ的愛恨情仇(文末附原始碼):Q與MQ訊息佇列簡單應用(二)C#MQ原始碼佇列
- rabbitmq環境,c#程式接收q,(未完成)MQC#
- RabbitMQ訊息佇列(四):分發到多Consumer(Publish/Subscribe)MQ佇列
- Java訊息佇列:RabbitMQ與Kafka的整合與應用Java佇列MQKafka
- 基於訊息佇列(RabbitMQ)實現延遲任務佇列MQ
- RabbitMQ學習系列一:windows下安裝RabbitMQ服務MQWindows
- Springboot + rabbitMq佇列Spring BootMQ佇列