🎉FolkMQ v1.2 发布(添加事务消息)


简介

  • 采用 “单线程” + “多路复用” + "内存运行" + "快照持久化" + "Broker 集群模式"(可选)
  • 基于 Socket.D 网络应用协议 开发。全新设计,自主架构!
角色 功能
生产端 发布消息、定时消息、顺序消息、可过期消息、事务消息。发送请求(rpc)。支持 Qos0、Qos1
   
消费端 订阅、取消订阅。响应请求
消费者 消费-ACK(自动、手动)
   
服务端 发布-Confirm、订阅-Confirm、取消订阅-Confirm、派发-Retry、派发-Delayed
服务端 单线程、内存运行、快照持久化(自动、停机、手动)、Broker 模式集群、集群热扩展

特点

  • 高吞吐量、低延迟

FolkMQ 纯内存运行,每秒能处理几十万条消息,最低延迟不到1毫秒。

  • 可扩展性

FolkMQ Broker 集群支持 folkmq-server 节点热扩展。流量高时随时加,流量低时可减

  • 持久性、可靠性

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

  • 高可用

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

  • 快(单机版,180K TPS)。

有点像 Redis 之于 MySql。

本次更新

  • 添加 协议版本的握手传递
  • 添加 消息事务支持(即二段式提交),支持反向事务确认
  • 添加 请求响应模式支持(即 rpc 模式)
  • 添加 消息用户属性支持
  • 优化 内存占用与快照大小
  • 优化 安全停止延时改为4秒
  • 优化 客户端相关参数校验
  • 优化 客户端的心跳间隔为6秒
  • 优化 停止打印信息
  • sokcet.d 升为 2.4.3

新功能示例(事务消息):

//准备(1.取名字;2.添加响应实现)
MqClient client = FolkMQ.createClient("folkmq://127.0.0.1:18602")
.nameAs("demoapp") //一般用当前应用名(也当默认消息者组用)
.connect();

//用于响应服务端发起的反向确认
client.response(m->{
if (m.isTransaction()) {
//极端特殊的情况下,客户端未完成事务确认。由服务端发起补尝确认
if("1".equals(m.getAttr("orderId"))) {
//一般这里,需要查询数据库之类的
m.acknowledge(true);
}
}
});

//发送事务消息
MqTransaction tran = client.newTransaction();

try {
client.publish("demo", new MqMessage("demo1").attr("orderId","1").transaction(tran));
client.publish("demo", new MqMessage("demo2").attr("orderId","1").transaction(tran));
client.publish("demo", new MqMessage("demo3").attr("orderId","1").transaction(tran));
client.publish("demo", new MqMessage("demo4").attr("orderId","1").transaction(tran));

tran.commit();
} catch (Throwable e) {
tran.rollback();
}

新功能示例(请求响应模式):

//客户端2
MqClient client1 = FolkMQ.createClient("folkmq://127.0.0.1:18602")
.nameAs("demo-app1") 
.connect();

//要支持 rpc 响应,要添加响应实现(MqResponseRouter 带了主体路由功能)
client1.response(new MqResponseRouter().doOn("test.hello", m -> {
m.acknowledge(true, new StringEntity(m.getSender() +": me to! rev: " + m.getContent()));
}));

//客户端2
MqClient client2 = FolkMQ.createClient("folkmq://127.0.0.1:18602")
.nameAs("demo-app2")
.connect();

//发起请求并等响应,同步模式
Reply reply = client2.request("demo-app1", "test.hello", new MqMessage("hello")).await();
print(reply.dataAsString());

代码仓库

  • https://gitee.com/noear/folkmq
  • https://github.com/noear/folkmq

官网

  • https://folkmq.noear.org

相關推薦

2024-04-17

编程 1) 启动服务 docker run -p 18602:18602 -p 8602:8602 noearorg/folkmq-server:1.4.2 2) 编写程序 引入一个小依赖 <dependency> <groupId>org.noear</groupId> <artifactId>folkmq-transport-netty</artifactId> <version>1.4.2</version> &

2024-03-08

FolkMQ,作一个最简单的消息中间件(单机版,约 180K TPS)。面向简单,面向未来! 功能简介 角色 功能 生产端(或发起端) 发布消息、定时消息(或叫延时)、顺序消息、可过期消息、事务消息。发送消息

2023-11-29

FolkMQ,是一个内存型消息中间件。它采用了类似 Redis 的策略(内存运行 + 快照持久化) 功能 发布消息、发布定时消息(支持 Qos0、Qos1) 订阅、取消订阅 ACK,自动重试、有策略的延时(可做分布式事务应用) 主要特点

2024-01-03

服务端 集群热扩展 特点 高吞吐量、低延迟 FolkMQ 纯内存运行,每秒能处理几十万条消息,最低延迟不到1毫秒。 可扩展性 FolkMQ Broker 集群支持 folkmq-server 节点热扩展。流量高时随时加,流量低时可减 持久性

2024-02-07

热扩展、集群高可用 特点 高吞吐量、低延迟 FolkMQ 纯内存运行,每秒能处理几十万条消息,最低延迟不到1毫秒。 可扩展性 FolkMQ Broker 集群支持 folkmq-server 节点热扩展。流量高时随时加,流量低时可减 持久性

2024-01-18

服务端 集群热扩展 特点 高吞吐量、低延迟 FolkMQ 纯内存运行,每秒能处理几十万条消息,最低延迟不到1毫秒。 可扩展性 FolkMQ Broker 集群支持 folkmq-server 节点热扩展。流量高时随时加,流量低时可减 持久性

2023-12-16

FolkMQ 是一个新起的内存型消息中间件。 简介 采用 “多路复用” + "内存运行" + "快照持久化" + "Broker 集群模式"(可选)+ 基于 Socket.D 网络应用协议 开发。全新设计,自主架构! 角色 功能 生产端

2024-04-18

bsp;验证注解支持参数 添加 AppContext::removeWrap 接口 添加 folkmq-solon-cloud-plugin 对 event:key 支持 添加 大写开头的环境变量注入支持 调整 bean 的基类注册的排除条件改为“java.”开头(之前为包含) 修复 solon.scheduling.simple 在使用

2023-12-13

调整 solon.data nested 事务微略处理 socket.d 升为 2.1.7 folkmq 升为 1.0.18 nacos2 升为 2.3.0 sqltoy 升为 5.2.85 项目仓库地址? gitee:https://gitee.com/noear/solon github:https://github.com/noear/solon

2023-05-04

请求同时发送,从而导致网络拥塞和负载增加。 v1.1.0 发布内容: RetryAspect添加Ordered,支持动态调整Aop执行顺序【新增】 手动添加重试任务【新增】 更新核心字段描述【更新】 更新类名定义【更新】 删除重试retry_task

2023-05-11

更多的时间专注于自己的事情。 Mybatis-Flex 是于3月1号发布了第一次 push 代码到 gitee 仓库,并发布了第一个版本。到今天为止,开源了 2个月+ 的时间; 1、已经发布了 20+ 个版本,差不多 3 天发布个新的版本 2、一共迎来了

2022-07-14

,提供高性能和简单易用的分布式事务服务。 目前 Seata 发布了 1.5.2 版本,带来如下修改: 新功能 [ #4661 ] 支持 xid 一致性负载均衡 [ #4676 ] 支持服务器通过挂载 SLB 暴露 Nacos 服务 [ #4642 ] 支持批量消息并行处理 [ #4567 ]

2023-03-26

wgcloud-msg 是一个辅助微信,钉钉,邮件,飞书等消息发送的工具 在 v1.2版本,使用很少的脚本,就可以发送消息了,非常简单 码云仓库:https://gitee.com/wanghouhou/wgcloud GITHUB 仓库:https://github.com/tianshiyeben/wgcloud WGCLOUD 唯一官网

2024-03-27

9年积累,沉淀出来的高性能通用通讯服务,支持即时通讯,站内/系统消息,消息中台,物联网通讯,音视频信令,直播弹幕,客服系统,AI通讯,即时社区等场景 特点 📚 完全自研:自研消息数据库,消息分区永久存储,