[有意思的代码] message-pipe: 基于`Redis`实现的分布式消息顺序消费管道。

[](#message-pipe)Message Pipe

基于Redis实现的分布式消息顺序消费管道。

CI Build

[](#i-%E4%BB%80%E4%B9%88%E6%98%AFmessage-pipe)I. 什么是Message Pipe?

Message Pipe是基于Redis实现的顺序消息管道,由于内部引入了Redisson分布式锁所以它是线程安全的,多线程情况下也会按照写入管道的顺序执行消费。

Message Pipe采用ClientServer概念进行设计,内部通过grpc-netty来建立消息通道相互通信的长连接,消息的分发由Server负责,而每一个管道内的消息在分发时会通过LoadBalance(负载均衡)的方式来获取在线的Client信息并向Client顺序发送消息。

[](#ii-%E6%9E%B6%E6%9E%84%E5%9B%BE)II. 架构图

...

[](#iii-%E7%89%B9%E6%80%A7)III. 特性

  • 自动注册
  • 心跳检查
  • 消息分发
  • 顺序消费
  • 读写分离
  • 线程安全
  • 负载均衡
  • 自动剔除

[](#iiii-%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B)IIII. 快速上手

为了快速上手,提供了message-pipe使用的示例项目,项目源码:https://github.com/minbox-projects/message-pipe-example

[](#41-%E5%AE%89%E8%A3%85redis)4.1 安装Redis

由于message-pipe基于Redis实现,所以我们首先需要在本机安装Redis,下面是使用Docker方式安装步骤:

# 拉取Redis镜像
docker pull redis
# 创建一个名为"redis"的后台运行容器,端口号映射宿主机6379
docker run --name redis -d -p 6379:6379 redis

[](#42-%E6%9F%A5%E7%9C%8Bredis%E6%95%B0%E6%8D%AE)4.2 查看Redis数据

# 运行容器内命令
docker exec -it redis /bin/sh
# 运行Redis客户端
redis-cli
# 选择索引为1的数据库
select 1
# 查看全部的数据
keys *

[](#43-%E5%90%AF%E5%8A%A8%E7%A4%BA%E4%BE%8B%E9%A1%B9%E7%9B%AE)4.3 启动示例项目

# 下载源码
git clone https://github.com/minbox-projects/message-pipe-example.git
# 进入项目目录
cd message-pipe-example
# 运行Client与Server合并示例项目
cd client-server-merge
# 运行项目
mvn spring-boot:run

[](#v-license)V. License

message-pipe采用Apache2开源许可进行编写。


原网址: 访问
创建于: 2021-03-03 13:40:25
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论