1 Star 1 Fork 0

jinyucd / minimsg

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

MiniMsg

集成消息通信

说明

1.ZMQ集成PGM通信,只负责发布节点的主题发布地址
2.一个节点的数据发布地址与订阅接收地址相同
3.可以绑定多网卡,数据通过节点标识和消息ID订阅节点去重
3.发布节点根据订阅节点的标识,选择其中一个地址发送数据,逐步稳定后就不往多卡发送,减少订阅方去重压力
4.发布节点根据订阅节点返回判断订阅节点是否已经无效,可以移除
5.数据通信集成nanomsg.nng库通信 6.进程间采用内存共享通信c++程序,同时支持windows和Linux

测试

1.windows平台已经测试
2.项目已经完成订阅发布模式,代码简单,注释明确
3.使用的zmq和nng库在项目中的dll文件夹,64位
4.linux平台已经测试(deepin)
5.该组件可以使用了

程序介绍

1.通信组件初始化,可以设置IP与端口,也可以不设置
2.启动全局发布地址通信(pgm和ipc)
3.通过pgm和ipc发布global主题,从其它节点获取全局发布地址
4.初始化完成

发布数据

1.检查本地订阅方地址,根据地址发送数据
2.本地无订阅,则检查全局发布地址是否有本节点地址,有则表示没有节点订阅,抛弃数据,没有则表示第一次发布数据,立即通知一次发布节点,等待1秒订阅,再次检查发送
3.通知发布地址时,将本地通信地址发布,如果ip是*,则获取本地全部ip,组合ip全部发送

订阅数据

1.检查全局发布地址,向发布此主题的地址发送订阅信息(主题+本地通信地址)
2.订阅是否成功不用考虑

翻译

有兴趣的童鞋可以全部翻译成c++程序

使用

1.订阅发布 支持三类通信,进程内(观察者模式),进程间(内存共享),网络通信(订阅发布)
var bus= BusFactory.Create(BusType.Ipc);
bus.Subscribe("AA");
bus.OnCall += Bus_OnCall;
bus.Publish("AA", new byte[] { 34 });
2.点对点通信
直接创建tcp通信
var ptp = PtpFactory.Create();
ptp.Address = "127.0.0.1";
ptp.Port = 6667;
ptp.Start();
ptp.Send(new byte[] { 45 });
3.订阅发布扩展RPC
var rpc = BusFactory.Create(BusType.tcp);
LocalNode.IsMsgReturn = true;//启用消息反馈
// rpc.Subscribe("AA");
// rpc.OnCall += Bus_OnCall;
msgid= rpc.Publish("AA", new byte[] { 34 });
MsgTopicCount.Instance.OnCall += Instance_OnCall;

private static void Instance_OnCall(PubRecords obj)
{ if(obj.MsgId==msgid)
{ if(obj.SucessNum>0)
{
// }
else
{
//失败 }
}
}

欢迎测试

感兴趣的童鞋可以测试

MIT License Copyright (c) 2021 jinyuttt Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

无中心订阅发布组件。采用zmq通信,实现无中心发布订阅。此组件只是简单通信,没有实现任何标准的规范。 展开 收起
C# 等 3 种语言
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C#
1
https://gitee.com/jinyucd/minimsg.git
git@gitee.com:jinyucd/minimsg.git
jinyucd
minimsg
minimsg
master

搜索帮助