C# - MQ測試

xx online
xx want to say something
2 min readJan 13, 2019

因為公司專案,做了個 API ,因為欄位很多要存,又要求速度
所以想要用非同步的方式, 把存資料和回傳client資料分開來加快速度
試過寫DB,寫TXT,最後想到試一下MQ

上網找了一下,目前多人討論的MQ有activeMQ、NetMQ…,
加上之前用過的MSMQ

MSMQ相對簡單,參考「System.Messaging」元件就可以使用了
activeMQ 是 Apache 的產品,可參考官網,
首先要安裝JDK,再下載ActiveMQ,
解壓縮在「\bin\win64」目錄下執行 activemq.bat

然後在網頁上執行「http://localhost:8161/」開啟管理介面,
帳密是 admin / admin,基本上就安裝完了。
程式可以參考網頁,server 發送訊息出去, client 端就會收到訊息,
如果client 第一時間沒有開啟,訊息會保留,
等到 client 啟動,就會把資料讀出來
在管理介面上也可以看到有多少訊息還未讀取,一共有多少訊息,
基本上很符合我的需求
但是就要安裝JDK,另外啟用AciveMQ,
C#裡NuGet 搜尋「Apache.NMS.ActiveMQ」,安裝後才能使用。

NetMQ是網路上討論很多的一種,速度很快,應用面好像很多,
也沒有管理的介面,是直接建立一個socket通道,Doc連結,
NuGet 裡搜尋「NetMQ」,安裝後就可以使用。
程式碼可以參考網頁,基本上,他沒有中繼,
所以接收端要先開啟準備接收,否則之前發送的會讀不到,
另外我自己的測試,因為運用在API上,
所以每次的request 都要建立socket連線,
如果發送端速度很快,加上要連線也得花個幾毫秒,會掉訊息的可能
其實MQ還有很多功能,但我沒有深入研究,只是針對專案來測

經過自己的測試,速度上是 NetMQ > ActiveMQ > MSMQ
使用方便 MSMQ > NetMQ > ActiveMQ
我最後選擇 ActiveMQ,但我覺得應該要看需求的應用,各有各的特色
下次不知道什麼時後會用到,以上提供自己未來加快回憶

--

--