如何在 C 中使用 RabbitMQ

2021-10-12 14:58:15 字數 1645 閱讀 2854

rabbitmq 是乙個非常流行的,開源的,使用erlang語言編寫的框架,通常在電信級平台中作為訊息中介軟體使用,rabbitmq實現了高階的amqp協議用於實現程序間,應用程式間,伺服器之間的訊息互動,而且它還有乙個非常??的特性,你可以使用自定義外掛程式來擴充套件rabbitmq的功能,而且它還支援多協議,高效能,高可靠,集群以及高可用佇列。

建立佇列的方式也多種多樣,你可以編碼建立,也可以通過管理員使用者介面,甚至通過 powershell 進行佇列建立。

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

現在 erlang 和 rabbitmq 已經成功安裝到你的windows上,如果想和rabbitmq server進行互動,你需要安裝乙個rabbitmq .net client, 可以用nuget package manager控制台去安裝 rabbitmq client。

connectionfactory connectionfactory = new connectionfactory();

iconnection connection = connectionfactory.createconnection();

現在再次假定 rabbitmq 跑在遠端伺服器上,下面的方法返回了乙個通往 rabbitmq service 的 connection 連線。

public iconnection getconnection(string hostname, string username, string password)

現在 rabbitmq service 已經在本地正常執行,使用下面的方法向佇列傳送訊息,請注意通往 rabbitmq service 的 connection 用的是預設配置。

public static void send(string queue, string data)

}}

channel 常用於和 server 進行通訊從而傳送和接收訊息,不過上面這種佇列是不持久的,為啥這麼說呢?因為我在queuedeclare方法的第二個引數中設定了 false,所以送往這個 queue 的 message 只會存留於記憶體中,一旦 server 重啟,這個資料將會丟失。

下面的**展示了如何從 queue 中消費資料。

public static void receive(string queue)}}

}

接下來的**片段展示了如何使用 send 和 receive 方法進行資料的傳送和消費。

static void main(string args)

值得一提的是:rabbitmq 對持久化也提供了非常好的支援,有兩種模式的 queue 可供選擇:持久化和非持久化,如果採用持久化模式,訊息是存放在硬碟中的,反之非持久化的模式,資料僅僅存放於記憶體中,一旦server重啟,非持久化模式的佇列資料將會丟失,最後補充一下,持久化可以用於以下三個級別上: queue,exchange 和 message。

更多高質量乾貨:參見我的 github: dotnetfly

如何在C 中使用WebService

將他解壓後,進入到資料夾 gsoap 2.8.18 gsoap 2.8 gsoap bin win32 裡面有2個我們要用到的exe,wsdl2h.exe和soapcpp2.exe,如果缺少乙個typemap.dat,則從gsoap 2.8.18 gsoap 2.8 gsoap下拷貝進來,最後就可以...

如何在 C 中使用 Attribute

attribute 在 c 中是乙個非常強大的特性,它能夠給你的程式集新增元資料資訊。attribute 實際上是乙個物件,它可以與以下元素中的任何乙個相關聯 程式集 類 方法 委託 列舉 事件 字段 介面 屬性和結構,它會在這些物件上做資訊宣告,當程式執行之後,你可以通過反射來獲取關聯到這些物件上...

如何在 C 中使用 反射

c 中的反射常用於在程式的執行時獲取型別的元資料,可獲取的資訊包括已載入到程序中的程式集和型別資訊,它和 c 中的rtti runtime type information 的作用是差不多的。為了能夠使用反射,需要在專案中引用system.reflection命名空間,在使用反射的開始,你會獲取乙個...