美文网首页
顺序消息管道《Message Pipe》v1.0.1版本发布

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

作者: 恒宇少年 | 来源:发表于2020-08-31 10:22 被阅读0次

    知识改变命运,撸码使我快乐,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
    

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/uqhusktx.html