簡(jiǎn)單易用的.NET免費(fèi)開(kāi)源RabbitMQ操作組件EasyNetQ
背景
在現(xiàn)在的項(xiàng)目中,消息隊(duì)列的使用比較的頻繁,消息隊(duì)列的種類(lèi)也較多,如:ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等。消息隊(duì)列中間件是分布式系統(tǒng)中重要的組件,主要解決應(yīng)用耦合,異步消息,流量削鋒等問(wèn)題。實(shí)現(xiàn)高性能,高可用,可伸縮和最終一致性架構(gòu)。是大型分布式系統(tǒng)不可缺少的中間件。
其中RabbitMQ是實(shí)現(xiàn)了高級(jí)消息隊(duì)列協(xié)議(AMQP)的開(kāi)源消息代理軟件(亦稱(chēng)面向消息的中間件)。RabbitMQ服務(wù)器是用Erlang語(yǔ)言編寫(xiě)的,而集群和故障轉(zhuǎn)移是構(gòu)建在開(kāi)放電信平臺(tái)框架上的。所有主要的編程語(yǔ)言均有與代理接口通訊的客戶(hù)端庫(kù)。
特性
- 可伸縮性:集群服務(wù)
- 消息持久化:從內(nèi)存持久化消息到硬盤(pán),再?gòu)挠脖P(pán)加載到內(nèi)存
目前是.NET使用率比較高的消息隊(duì)列;
好用的輪子
其中EasyNetQ是.NET上RabbitMQ的領(lǐng)先客戶(hù)端API,在NuGet.org上有超過(guò)400萬(wàn)次下載。這是一個(gè)開(kāi)放源代碼項(xiàng)目。
圖片
EasyNetQ是為了提供一個(gè)盡可能簡(jiǎn)潔的適用與RabbitMQ的.NET類(lèi)庫(kù)。為了實(shí)現(xiàn)這些目標(biāo),EasyNetQ提供一種自認(rèn)為你會(huì)在.NET下使用RabbitMQ的視圖。為了保持使用靈活性,簡(jiǎn)單起見(jiàn),EasyNetQ強(qiáng)制使用了一些簡(jiǎn)單的約定。包括如下:
- 消息用 .NET 類(lèi)型表示
- 消息通過(guò).NET類(lèi)型路由
目標(biāo)
盡可能簡(jiǎn)化在.NET上使用RabbitMQ的工作。
入門(mén)
要連接到RabbitMQ代理...
var bus = RabbitHutch.CreateBus("host=localhost");
要發(fā)布消息...
bus.Publish(message);
訂閱消息...
bus.Subscribe<MyMessage>("my_subscription_id", msg => Console.WriteLine(msg.Text));
遠(yuǎn)程過(guò)程調(diào)用...
var request = new TestRequestMessage {Text = "Hello from the client! "};
bus.Request<TestRequestMessage, TestResponseMessage>(request, response =>
Console.WriteLine("Got response: '{0}'", response.Text));
RPC服務(wù)器...
bus.Respond<TestRequestMessage, TestResponseMessage>(request =>
new TestResponseMessage{ Text = request.Text + " all done!" });
開(kāi)源地址
更多功能見(jiàn):https://github.com/EasyNetQ/EasyNetQ