# mqct **Repository Path**: ALONE_WORK/mqct ## Basic Information - **Project Name**: mqct - **Description**: MQCT 全称 类消息队列传输协议(Message Queuing Class Transport )是利用单例模式、观察者模式、模板等 C++ 特性结合,实现应用内消息分发,是一种轻量级的发布/订阅消息传输协议。 - **Primary Language**: C++ - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-28 - **Last Updated**: 2025-06-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # mmv ### 介绍 详情参考《[项目介绍](https://gitee.com/ALONE_WORK/mmv/wikis/Home)》 利用订阅模式、单例模式模式和模板结合,实现消息分发。 - 该项目解决类与类之间发送消息不便的问题 - 该库使用了同步消息和异步消息两种消息接口 - 从测试数据初步得出结论:一般的项目中不管是消息发送者或者是消息接受者,单个消息发送者或者接受应不超过 10000,超过 10000 后在绑定/解绑中将会耗时较多 ### 仓库说明 star fork 1. 编译平台 1. Ubuntu 2. Windows 3. arm 4. aarch64 2. 编译方案(已通过) 1. Ubuntu:cmake 2. Ubuntu:configure 3. Windows:cmake+vs2019 4. arm:configure 5. aarch64:configure ### 编译说明 编译详情参考《[编译说明](https://gitee.com/ALONE_WORK/mmv/wikis/%E7%BC%96%E8%AF%91%E8%AF%B4%E6%98%8E)》 1. cmake [linux] ```sh # 创建 build 用于保存编译中间文件 mkdir build # 进入 build 文件夹 cd build # cmake 生成 Makefile cmake .. # 编译 make ``` **注意** example14 默认不编译,由于 example14 引用了 Qt 库,而有的 Qt 库还引用了其他库导致编译复杂。 1. cmake 启动 example14 编译 ```sh # cmake 生成 Makefile cmake .. -DBUILD_EXAMPLE14=ON ``` 2. Autotools 启动 example14 编译 ```sh # cmake 生成 Makefile ./configure --enable-example14 ``` ### 如何使用 详情参考《[使用说明](https://gitee.com/ALONE_WORK/mmv/wikis/%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E)》 ```c++ // 1. 引用头文件 #include "center.hpp" // 2. 定义消息,继承 BaseMessage 基类 class carrier : public BaseMessage { public: string name; }; // 3. 消息接收处理,继承 BaseHandle 基类 class recv1 : public BaseHandle { public: recv1() {} ~recv1() {} virtual bool handle(const carrier* msg) override; }; bool recv1::handle(const carrier* msg) { cout << "carrier--> name: " << msg->name << endl; return true; } // 4. 发送消息 int main() { recv1 r1; carrier m1; m1.name = "ljj"; m1.post(); return 0; } ``` ### 测试数据 详情参考《[测试数据](https://gitee.com/ALONE_WORK/mmv/wikis/%E6%B5%8B%E8%AF%95%E6%95%B0%E6%8D%AE)》 #### send 同步消息测试 [测试代码](examples/example8/main.cpp) | 接受者个数 | 发送消息耗时 | attach 耗时 | detach 耗时 | | ------- | ----------- | ----------- | ---------- | | 100 | 0.297582 ms | 0.508366 ms | 0.478572 ms| | 1000 | 3.85406 ms | 19.194 ms | 32.7948 ms | | 10000 | 32.2579 ms | 986.112 ms | 1637.23 ms | | 100000 | 362.037 ms | 94973.2 ms | 162148 ms | | 200000 | 780.409 ms | 380543 ms | 675723 ms | #### post 异步消息测试 [测试代码](examples/example4/main.cpp) | 接受者个数 | 发送消息耗时 | attach 耗时 | detach 耗时 | | ------- | ----------- | ----------- | ---------- | | 100 | 0.366451 ms | 0.491771 ms | 0.292666 ms| | 1000 | 4.20467 ms | 20.4219 ms | 23.6889 ms | | 10000 | 40.4584 ms | 1001.56 ms | 1664.87 ms | | 100000 | 331.301 ms | 94117.2 ms | 160398 ms | | 200000 | 809.291 ms | 394457 ms | 692483 ms |