专栏首页SpringBoot 核心技术顺序消息管道《Message Pipe》v1.0.1版本发布

顺序消息管道《Message Pipe》v1.0.1版本发布

知识改变命运,撸码使我快乐,2020继续游走在开源界 点赞再看,养成习惯 给我来个Star吧,点击了解下基于SpringBoot的组件化接口服务落地解决方案

Message Pipe是什么?

它是minbox开源组织内的新成员,Message Pipe从字面的意思上理解为 "消息管道",它确实是一个消息管道的定位,是基于Redis实现的分布式顺序消息管道。

源码地址

目前Message Pipe开源平台以GitHub为主,Gitee则是一个同步库。

可以解决什么问题?

它主要是来解决分布式系统下消息的顺序消费的方案,内部通过Redisson的分布式锁以及分布式队列的特性来完成消息的处理,消息的分发则是由Grpc来完成的。

消息分发时支持常见的负载均衡策略,比如:随机策略、IP轮询方式等。

由于内部采用的是分布式锁的方式实现,所以支持多个Server同时就行消息的轮询获取以及分发操作。

特性

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

更新日志

详见:https://github.com/minbox-projects/message-pipe/releases/tag/1.0.1.RELEASE

✨ New Features

  • [ #39 ] Client通过 "Cglib动态代理" 的方式实现动态绑定管道
  • [ #40 ] Client/Server 通过正则表达式进行匹配 "pipeName"
  • [ #41 ] 禁用Server接收注册请求后根据每一个"Pipe Name"创建消息管道
  • [ #47 ] 使用Jackson代替fastjson转换实体与json字符串之间的相互转换方式
  • [ #51 ] MessageProcessor新增正则表达式方式处理消息,并为每个匹配的表达式管道建立一个Porxy代理类
  • [ #59 ] Server启动时自动加载Redis内的消息管道列表,并自动创建MessagePipe实例
  • [ #64 ] 重构Client连接Server的实现方式,新增支持Nacos NamingService方式

? Fix Bugs

  • [ #45 ] 修复Client启动时一直重试注册到Server,导致阻塞主线程
  • [ #48 ] 删除客户端ReceiveMessageService处理消息时使用线程池
  • [ #53 ] 修复Redisson在高并发下出现的解锁异常
  • [ #55 ] 修复获取MessageProcessors实例时可能出现线程安全性问题
  • [ #57 ] 消息分发时,只有存在客户端列表才进行处理消息发送逻辑
  • [ #61 ] Server运行过程中CPU飙升
  • [ #65 ] Client注册时偶尔会出现获取IP地址为 "127.0.0.1"的情况

快速上手

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

安装Redis

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

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

查看Redis数据

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

启动示例项目

# 下载源码
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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 福利:长期免费开放一台Eureka Server服务

    恒宇少年为了大家学习SpringCloud方便,特意给大家提供了一个在线开放的Eureka Server服务,大家可以直接在学习使用服务注册时配置使用开放的Eu...

    恒宇少年
  • SpringCloud组件:搭建Eureka服务注册中心

    Eureka服务注册中心是netflix开源组织提供的一个服务高可用的解决方案,在前端时间一直在疯传的2.0开源流产的问题,其实并不影响我们的使用,netfli...

    恒宇少年
  • SpringCloud组件:你的Eureka服务注册中心安全吗?

    在之前的章节我们讲到了SpringCloud组件:搭建Eureka服务注册中心,已经可以让我们自定义的微服务节点进行注册到该Eureka Server上,不过在...

    恒宇少年
  • MR-base:高效准确的进行孟德尔随机化研究的网站

    通过孟德尔随机化研究,可以基于GWAS的结果来推断不同表型之间的因果关系, 比如使用的很广泛的两样本MR分析

    生信修炼手册
  • 权限-Linux每日一练(5)

    答:file1.txt 文件对于 alice 用户有所有权限,对于 hr 用户组里的所有成员有读写权限,没有可执行权限,对于其他人来说只读。怎么看呢?大概讲讲

    机智的程序员小熊
  • linux中chmod命令用法详解

    下面是可以为用户,组以及计算机上的其他所有人设置的几个数字权限的列表。数字旁边是读/写/执行字母等价物。

    砸漏
  • 将Spring Boot作为守护进程启动的一种简单的方法

    我有一个SpringBoot应用,通过shell脚本start.sh启动。现在我期望通过守护进程的方式启动这个应用,这样我即使关掉终端,该应用也能继续运行。

    Jerry Wang
  • 美情报机构多方面发展人工智能技术

    据陆海空通信和电子协会(AFCEA)网站(www.afcea.org)报道,地理空间影像以及面部识别和其他生物识别技术正在推动情报界对人工智能的研究。由情报界研...

    人工智能快报
  • MacOS安装npm全局包的权限问题

    修改npm包所安装目录的权限:sudo chown -R $USER /usr/local 然后输入密码就可以了

    hankleo
  • Redis数据库云端最佳技术实践

    邹鹏,腾讯高级工程师,腾讯云数据库Redis负责人,多年数据库、网络安全研发经验。在网络、计算、存储、安全等领域有深入的研究和丰富的产品化经验。 在Redis、...

    腾讯云数据库 TencentDB

扫码关注云+社区

领取腾讯云代金券