【仿RabbitMQ的发布订阅式消息队列】--- 介绍

Welcome to 9ilk's Code World

(๑•́ ₃ •̀๑) 个人主页: 9ilk

(๑•́ ₃ •̀๑) 文章专栏: 项目


本篇博客主要是对仿RabbitMQ消息队列这个组件项目的总体介绍。

为什么做这个项目

之前接触类似消息队列的概念,主要是在学习生产者消费者模型中了解到的阻塞队列。在学习分布式系统的时候,发现消息队列的应用较为广泛,它可以作为跨主机之间使用的生产者消费者模型,其中业界有不少成熟的消息队列中间件,比如RabbitMQ,Kafka,RocketMQ等,本项目主要是用来对消息队列内部主要工作和设计流程进行学习的一个组件项目。

**消息队列(Message Queue,MQ)**其实就是把阻塞队列封装为一个独立的服务器程序,并且赋予更丰富的功能,它主要用于异步传输数据,允许程序应用程序通过发送和接收消息来进行解耦、异步和可靠的通信。它有如下的好处:

  • **异步:**发送方不需要等待接收方处理完成,有利于提升系统的响应速度。
  • 解耦:发送方和接收方不直接依赖,系统更容易扩展和维护。
  • 削峰填谷:高并发时,消息积压在队列中,后端系统可以慢慢处理,防止崩溃。
  • 可靠性:消息可持久化,防止数据丢失。

技术栈

  1. 开发环境
  • Linux(Ubuntu-22.04)
  • VSCode
  • g++ / gdb
  • Makefile
  • C++11
  1. 关键技术
  • 编程语言:C++
  • 序列化框架:Protobuf二进制序列化
  • 网络库:Muduo库
  • 源数据信息数据库:SQLite
  • 单元测试框架:GTest
  • C++11异步操作技术:future/async/packaged_test/promise

项目相关环境依赖

  1. 安装基础工具
  • 安装wget
bash 复制代码
sudo apt-get install wget 
  • 安装lszrz传输工具
cpp 复制代码
sudo apt-get install lrzsz
  • 安装g++编译器
cpp 复制代码
sudo apt-get install g++ gcc
  • 安装构建工具make和调试工具gdb
cpp 复制代码
sudo apt-get install make
sudo apt-get install gdb
  • 安装git
bash 复制代码
sudo apt-get install git
  • 安装cmake
cpp 复制代码
sudo apt-get install cmake
  1. protobuf安装
  • 安装Protobuf依赖库
cpp 复制代码
sudo apt-get install autoconf automake libtool curl unzip gzip
  • 下载Protobuf包,并编译安装
bash 复制代码
wget https://github.com/protocolbuffers/protobuf/releases/download/v3.20.2/protobuf-all-3.20.2.tar.gz
//解压缩
tar -xzf protobuf-all-3.20.2.tar.gz 
//切换目录
cd protobuf-3.20.2/
//环境检测
./autogen.sh
//配置安装路径 默认安装在/usr/local目录,lib、bin都是分散的
./configure
//开始编译
make
//开始安装
sudo make install
//确认是否安装成功
protoc --version
  1. muduo库安装
  • 通过git下载Muduo库的源码或使用备用下载链接
cpp 复制代码
git clone https://github.com/chenshuo/muduo.git
wget https://gitee.com/hansionz/mq/raw/master/resource/muduo-master.zip
  • 安装依赖环境,并运行脚本编译安装
cpp 复制代码
sudo apt-get install libz-dev libboost-all-dev
./build.sh
./build.sh intsall //库文件打包到一起

//测试
#切换编译目录 bin
root@VM-8-14-ubuntu:~/build/release-cpp11# cd bin
#运行protobuf-demo服务端
./protobuf_server  9091
#运行protobuf-demo服务端
./protobuf_client  0.0.0.0 9091    
  1. SQLite安装
cpp 复制代码
sudo apt-get install sqlite3 libsqlite3-dev
sqlite3 --version
  1. GTest安装
bash 复制代码
sudo apt-get install libgtest-dev
相关推荐
期待のcode9 小时前
MyBatisX插件
java·数据库·后端·mybatis·springboot
Light6012 小时前
点燃变革:领码SPARK融合平台如何重塑OA,开启企业智慧协同新纪元?
大数据·分布式·spark
石像鬼₧魂石12 小时前
如何配置Fail2Ban的Jail?
linux·学习·ubuntu
hetao173383712 小时前
2025-12-12~14 hetao1733837的刷题笔记
数据结构·c++·笔记·算法
华仔啊12 小时前
这 10 个 MySQL 高级用法,让你的代码又快又好看
后端·mysql
椰子今天很可爱12 小时前
五种I/O模型与多路转接
linux·c语言·c++
写代码的【黑咖啡】13 小时前
如何在大数据数仓中搭建数据集市
大数据·分布式·spark
Lueeee.13 小时前
Linux kernel Makefile 语法
linux
码事漫谈13 小时前
国产时序数据库崛起:金仓凭什么在复杂场景中碾压InfluxDB
后端
上进小菜猪13 小时前
当时序数据不再“只是时间”:金仓数据库如何在复杂场景中拉开与 InfluxDB 的差距
后端