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: 集成订阅发布和点对点通信

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值