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):

java 复制代码
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();

代码仓库

官网

相关推荐
Hello-Brand6 天前
RocketMQ系列3:核心技术介绍
消息队列·rabbitmq·rocketmq·mq·消息中间件·削峰填谷
Hello-Brand17 天前
RocketMQ系列2:领域模型和技术概念
消息队列·rocketmq·消息中间件
power-辰南18 天前
Kafka 常见面试题深度解析
java·大数据·分布式·kafka·架构师·消息中间件·2024面试题
秋凉之夏_惊鸿之羽18 天前
消息中间件-Kafka1-实现原理
java·消息中间件
baozhengw19 天前
IntelliJ+SpringBoot项目实战(23)--整合RabbitMQ
spring boot·rabbitmq·java-rabbitmq·消息中间件
码农爱java1 个月前
Kafka 之事务消息
spring boot·微服务·kafka·mq·消息中间件·事务消息
码农爱java2 个月前
Kafka 之消息并发消费
spring boot·微服务·kafka·mq·消息中间件·并发消费
码农爱java2 个月前
Kafka 之顺序消息
spring boot·分布式·微服务·kafka·mq·消息中间件·顺序消息
码农爱java2 个月前
Kafka 之消息广播消费
spring boot·微服务·kafka·mq·消息中间件·广播消息
zhuweisky2 个月前
实现信创Linux麦克风摄像头RTMP推流(源码,银河麒麟、统信UOS)
rtmp推流·信创国产化·linux推流·推流麦克风·推流摄像头·信创推流