RabbitMQ入門學習系列 七 遠端呼叫RPC

2022-02-02 12:33:27 字數 1821 閱讀 4867

生產者和消費者啟動以後,都有乙個接收事件,消費者是接收事件是處理呼叫方法以後等待生產者的返回,生產者的接收事件是處理接收生產者傳送的訊息,進行處理。消費者傳送的時候要在**佇列中加入乙個標識,標明是哪個方法進行的呼叫 。生產者接收到消費以後,如果發現有訊息標識 ,把訊息標識繼續返回去,這樣消費者可以保證接收到的訊息是哪個方法呼叫的

明確哪個函式是呼叫本地的,哪個函式是呼叫遠端的

組合之間的依賴要清晰明了

應該能處理當遠端服務掛掉的時的錯誤

主方法通過例項化rpcclient,然後呼叫rpcclient裡面的方法,獲得結果以後關閉

rpcclient的邏輯如下

宣告連線和通道

建立乙個**的佇列 。

定義乙個消費者的事件,繫結通道。

為通道建立乙個訊息頭,在裡面標識訊息id,和**佇列的名稱

消費者接收事件處理,當收到訊息以後,判斷訊息頭,如果是傳送的訊息id,則加入到返回的訊息集合中。

從訊息集合中取值

static void main(string args)

public class rpcclient

; //建立乙個例項

connection = factory.createconnection(); //建立連線

channel = connection.createmodel(); //建立通道

replyqueuename = channel.queuedeclare().queuename; //建立佇列

consumer = new eventingbasicconsumer(channel);//通過指定的model初台化消費者

props = channel.createbasicproperties();

var relationid = guid.newguid().tostring();

props.correlationid = relationid;//應用相關標識

props.replyto = replyqueuename; //回覆佇列指定

consumer.received += (sender,e)=>};}

public string call(string message)

建立鏈結和通道

宣告乙個佇列,指定佇列名稱。

配置qos,每次取幾條訊息

建立消費者在接收事件中對消費者傳送的訊息進行處理。

事件處理中,body表示接收到的訊息 ,basicproperties是訊息頭,對訊息進行處理以後,再把訊息以及訊息的佇列傳送給消費者

C C 學習筆記 基礎入門系列(七)

第一部分 helloworld的起點 第二部分 初探資料型別 一 第三部分 初探資料型別 二 第四部分 認識運算子 一 第五部分 認識運算子 二 第六部分 理清思路,寫好邏輯結構 一 第七部分 理清思路,寫好邏輯結構 二 第八部分 理清思路,寫好邏輯結構 三 第九部分 資料處理神器之陣列 一 第十部...

cmake入門系列總結七

版本 作者日期 備註0.1 loon 2019.3.17 初稿新增對將測試結果提交到儀表板的支援非常簡單。我們已經在本教程的前面步驟中為我們的專案定義了許多測試。我們只需執行這些測試並將其提交到儀表板。要包括對儀表板的支援,我們在頂級cmakelists.txt檔案中包含ctest模組。enable...

RabbitMQ入門學習系列 四 發布訂閱模式

發布訂閱模式 把訊息傳送給多個訂閱者。也就是有多個消費端都完整的接收生產者的訊息 換句話說 把訊息廣播給多個消費者 rabbitmq不傳送訊息給佇列,生產者也不知道訊息傳送到佇列 生產者只傳送訊息到exchange 交換器,exchange一方面從生產者接收訊息,另一方面把訊息推送到佇列中。exch...