# 仿RabbitMQ实现消息队列 **Repository Path**: zhaobohan/message-queue ## Basic Information - **Project Name**: 仿RabbitMQ实现消息队列 - **Description**: 这是一个仿RabbitMQ实现的消息队列组件项目 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: http://111.230.81.226:8080/login.html - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2024-05-23 - **Last Updated**: 2025-04-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: 项目, 组件, 消息队列, Sqlite, protubuf ## README # 仿RabbitMQ消息队列组件 ## 项目简介 本项目旨在模仿RabbitMQ实现一个功能全面、高效的消息队列系统,适用于分布式系统中的消息传递与解耦。它遵循AMQP(Advanced Message Queuing Protocol)的核心原则,支持生产者-消费者模型,提供了消息的持久化、交换机类型选择、消息应答机制、以及丰富的客户端与服务器交互能力。通过C++实现,采用Muduo网络库构建,实现了高度的可扩展性和灵活性。 ## 功能特性 - **消息队列管理**:支持队列的创建、删除、消息的持久化存储与检索。 - **交换机类型**:实现了Direct, Fanout, Topic类型的交换机,支持消息按规则路由。 - **消息应答机制**:支持自动应答与手动应答,确保消息的可靠处理。 - **持久化与垃圾回收**:确保消息的持久存储,同时实现高效的垃圾回收机制。 - **客户端接口**:为生产者与消费者提供简洁的API,简化消息发布与订阅操作。 - **虚拟机概念**:将交换机、队列、绑定等作为一个逻辑单元管理,便于数据的组织和持久化。 - **路由匹配**:根据交换机类型与绑定规则,实现消息到队列的精确或模式匹配。 - **多线程与异步**:利用Muduo库实现高性能的事件驱动处理,提高系统并发处理能力。 ## 项目结构 - **服务端模块**:包括BrokerServer,负责消息的存储与转发,管理连接与消息队列。 - **客户端模块**:包含发布客户端与订阅客户端,实现消息的发布与订阅功能。 - **数据管理模块**:管理交换机、队列、绑定、消息数据,以及虚拟机信息。 - **路由匹配模块**:实现消息路由逻辑,决定消息如何从交换机路由到队列。 - **消费者管理模块**:管理消费者订阅信息与消息确认。 - **信道管理模块**:提供信道的生命周期管理,确保消息的有序处理与传输。 - **连接管理模块**:维护客户端与服务端的连接状态,支持连接的创建与关闭。 ## 技术栈 - **编程语言**:C++ - **网络库**:Muduo - **持久化存储**:SQLite - **消息序列化**:Google Protobuf - **日志系统**:自定义可变参数日志实现 ## 快速开始 ### 环境要求 - **Linux环境**:推荐使用Ubuntu或CentOS,内核版本 >= 2.6.28 - **编译工具**:GCC >= 4.7 或 Clang >= 3.5 - **依赖库**:Boost(仅用于boost::any) - **其他工具**:CMake, Git ### 安装步骤 1. **安装依赖**: ```bash # Ubuntu sudo apt install g++ cmake make libboost-dev # CentOS sudo yum install gcc-c++ cmake make boost-devel ``` 2. **获取项目源码**: ```bash git clone https://gitee.com/zhaobohan/message-queue.git ``` 3. **安装基础工具和库**: - 安装wget(如果未默认安装): ``` sudo apt-get install wget ``` - 更换国内软件源,备份原始sources.list文件,并添加新的软件源内容。例如,使用阿里云或清华大学的源: ``` sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo apt-get update ``` - 安装lrzsz传输工具: ``` sudo apt-get install lrzsz ``` - 安装编译器gcc和g++: ``` sudo apt-get install gcc g++ ``` - 安装项目构建工具make: ``` sudo apt-get install make ``` - 安装调试器gdb: ``` sudo apt-get install gdb ``` - 安装版本控制系统git: ``` sudo apt-get install git ``` 4. **安装CMake**: - 安装CMake: ``` sudo apt-get install cmake ``` 5. **安装Protobuf**: - 安装Protobuf的依赖库: ``` sudo apt-get install autoconf automake libtool curl unzip gzip ``` - 下载Protobuf包,并编译安装: ``` wget https://github.com/protocolbuffers/protobuf/releases/download/v3.20.2/protobuf-all-3.20.2.tar.gz tar -zxf protobuf-all-3.20.2.tar.gz ./autogen.sh ./configure make sudo make install protoc --version ``` 6. **安装Muduo库**: - 通过git下载Muduo库的源码或使用备用下载链接: ``` git clone https://github.com/chenshuo/muduo.git wget https://gitee.com/hansionz/mq/raw/master/resource/muduo-master.zip ``` - 安装依赖环境,并运行脚本编译安装: ``` sudo apt-get install libz-dev libboost-all-dev unzip muduo-master.zip ./build.sh ./build.sh install ``` 7. **安装SQLite3**: - 安装SQLite3: ``` sudo apt-get install sqlite3 libsqlite3-dev ``` 8. **安装Gtest**: - 安装Gtest: ``` sudo apt-get install libgtest-dev ``` ## 文档与贡献 - **项目文档**:详细文档位于项目仓库的`README.md`和`文档`目录。 - **贡献指南**:欢迎通过邮件(zhaobohan_free@163.com)与我们联系,参与项目讨论与贡献。 --- 此README文件概述了仿RabbitMQ消息队列组件的关键特性和使用方法,旨在帮助开发者快速上手并理解项目结构。