天天看點

libminimsgbus網絡通信庫libminimsgbus介紹程式使用其他說明項目位址

libminimsgbus介紹

     libminimsgbus內建集中常用的通信方式,主要滿足訂閱釋出模式和點對點通信。以c++11标準開發。已經做來測試。

   libminimsgbus的訂閱釋出分細化了協定,可以直接分為程序内,程序間,網絡三種方式。

網絡訂閱釋出

    其中網絡訂閱釋出又分為無中心的和有中心的MQ模式:

           無中心模式存在丢失資料的可能,這是因為在查找主題時有延遲,同時無中心的不會保證資料的順序,根據設計,在初始化等待時,如果在不停的釋出資料則會等待,但是新釋出的資料在不停的按照訂閱節點發送資料,多線程運作。

       有中心MQ模式不會丢失資料,該模式是将資料直接傳輸到MQ中心,在中心節點分發資料,但是不緩存資料。劣勢是必須有中心節點,并且要保障一直運作。

點對點通信

  點對點通信則直接時用戶端向服務端發送資料。

程式使用

  訂閱釋出

    BusFactory::Create(BusType::Inpoc);

    BusFactory::Create(BusType::Ipc);

    BusFactory::Create(BusType::tcp);

1.inpoc:觀察着模式  

2.ipc:記憶體共享  

3.tcp:封裝zmq多點傳播管理主題,nng傳輸資料;此模式使用需要設定本地網絡位址,  

使用方法:   

    MsgLocalNode::LocalAddress = "127.0.0.1";  

    MsgLocalNode::LocalPort = 5567;  

    預設位址為*,程式自動擷取可用ip,端口預設:0.  

    說明:如果多點傳播不通,可以直接設定遠端位址  

MsgLocalNode::remote  

4.mq模式,支援中心節點資料轉發。  

1).中心節點  

    BridgeCore *bridge = new BridgeCore();  

    list<string> lstsub;  

    list<string> lstrec;   

    lstsub.push_back("tcp://127.0.0.1:4456");  

    lstrec.push_back("tcp://127.0.0.1:4457");   

    bridge->pubAddress = lstsub;//通過此位址接收訂閱方訂閱;  

    bridge->recAddress = lstrec;//通過此位址接收釋出方資料;  

    bridge->start();  

    說明:接收資料和訂閱資料2類位址不能相同  

2).用戶端釋出訂閱  

 BusFactory::CreateMQ();   

3)訂閱對象回收,則自動取消訂閱

點對點通信

 PtpFactory::Create();

 建立對象,設定其中的位址和端口,即可使用。

其他說明

1. 程式內建了zmq,ipc,nng三個通信元件  ,zmq使用pgm作為多點傳播庫,該方式是可靠的,通過zmq多點傳播方式通知主題節點,該方式通常适合小、少量傳輸。

  采用ipc通訊解決一台機器時多程序占用端口問題,zmq隻能一個程序通訊。

nng庫用來傳輸真實的資料。

2.使用cmake直接生成,c++11編寫,支援Windows和Linux

項目位址

  GitHub - jinyuttt/libminimsgbus: 內建訂閱釋出和點對點通信

上一篇: 11.25 H1N1
下一篇: 終于遭遇H1N1

繼續閱讀