FolkMQ 作个简单的消息中间件(最简单的那种), v1.3.1 发布

功能简介

角色 功能
生产端(或发起端) 发布消息、定时消息(或叫延时)、顺序消息、可过期消息、事务消息。发送消息(rpc)
支持 Qos0、Qos1
消费端(或接收端) 订阅、取消订阅。消费-ACK(自动、手动)。监听(rpc)
服务端 发布-Confirm、订阅-Confirm、取消订阅-Confirm、派发-Retry、派发-Delayed
服务端 单线程、内存运行、快照持久化(自动、停机、手动)、Broker 模式集群、集群热扩展

中间件特点

  • 高吞吐量、低延迟

集群模式每秒能处理百万消息,最低延迟不到1毫秒。

  • 可扩展性

集群模式支持服务节点热扩展。流量高时随时加,流量低时可减。视频:

消息被快照持久化(类似于 redis)到本地磁盘,并且支持数据备份防止数据丢失

  • 可集群、高可用

可单机,可集群。集群内任何节点坏掉只要还有“一个”同类节点,仍可提供服务。视频:

本次更新

  • 新增 javascript 语言客户端实现
  • 调整 docker 基础镜像改为:adoptopenjdk/openjdk11-openj9 (内存可省一半)
  • 调整 folkmq-broker 更名为:folkmq-server-broker (相互兼容,体验不变)
  • 添加 folkmq-server 对 ws 输传协议的支持
  • 添加 rpc 异常传导机制
  • 完善 顺序消息的消费逻辑(改为串行消费),更适合数据库有序同步之类的场景
  • 完善 许可证本地处理机制(基于rsa签名机制)

启动服务:

docker run -p 18602:18602 -p 8602:8602 noearorg/folkmq-server:1.3.1

新功能示例(for Js or Node.js Demo):

const {FolkMQ} = require("@noear/folkmq");

async function main() {
    //创建客户端,并连接
    const client = await FolkMQ.createClient("folkmq:ws://127.0.0.1:18602")
                            .nameAs("demoapp")
                            .connect();

    //订阅主题,并指定加入的消费者分组
    client.subscribe("demo", null, true, message => {
        console.log(message);
    });

    //发布消息
    client.publish("demo", FolkMQ.newMqMessage("helloworld!"));
}

main();

代码仓库

官网

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章