登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
Gitee AI
NEW
我知道了
查看详情
登录
注册
12月28日,「开源中国源创会年终盛典」珠海站再次回归!点击免费报名参会
代码拉取完成,页面将自动刷新
开源项目
>
服务器应用
>
消息服务器/消息队列
&&
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
25
Star
277
Fork
58
noear
/
folkmq
代码
Issues
24
Pull Requests
0
Wiki
统计
流水线
服务
Gitee Pages
JavaDoc
PHPDoc
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
我知道了,不再自动展开
发行版
v1.2.4
2d37d9f
2024-03-01 14:58
对比
FolkMQ v1.2.4
西东
## 一、更新说明 * 添加 folkmq-server 对 ws 输传协议的支持(方便 js 客户端使用) 新功能演示: ``` docker run -p 18602:18602 -p 8602:8602 -e folkmq.schema='sd:ws' noearorg/folkmq-server:1.2.4 ``` ```javascript 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(); ``` ## 二、兼容说明 * 本次更新,向下兼容。 * 新增的功能功能(事务消息,发送与监听模式模式,消息属性),需要新版服务端和客户端支持。
最后提交信息为:
1.2.4
v1.2.3
284c88a
2024-02-29 17:47
对比
FolkMQ v1.2.3
西东
## 一、更新说明 ### (1) for Java * 添加 rpc 异常传导机制 ### (2) for JavaScript * 完成 js 客户端开发(兼容:浏览器,uni-app,node.js) ### (3) 新功能演示 * 事务消息 for js: ```java //准备(1.取名字;2.添加事务回查) const client = await FolkMQ.createClient("folkmq:ws://127.0.0.1:18602") .nameAs("demoapp") //一般用当前应用名 .connect(); //用于服务端发起的事务回查 client.transactionCheckback(m => { //极端特殊的情况下,客户端未完成事务确认。由服务端发起补尝确认 if("1" == m.getAttr("orderId")) { //一般这里,需要查询数据库之类的 m.acknowledge(true); } }); //发送事务消息 const tran = client.newTransaction(); try { client.publish("demo", FolkMQ.newMessage("demo1").attr("orderId","1").transaction(tran)); client.publish("demo", FolkMQ.newMessage("demo2").attr("orderId","1").transaction(tran)); client.publish("demo", FolkMQ.newMessage("demo3").attr("orderId","1").transaction(tran)); client.publish("demo", FolkMQ.newMessage("demo4").attr("orderId","1").transaction(tran)); tran.commit(); } catch (err) { tran.rollback(); } ``` * 发送与监听模式模式 - rpc for js: ```java //客户端1 const client1 = await FolkMQ.createClient("folkmq:ws://127.0.0.1:18602") .nameAs("demoapp1") .connect(); //客户端1监听 const router = FolkMQ.newRouter(m => m.getTag()).doOn("/hello", req => { req.respone(SocketD.newEntity("me to!")); }); client1.listen(router.consume.bind(router)); //客户端2 const client2 = await FolkMQ.createClient("folkmq:ws://127.0.0.1:18602") .nameAs("demoapp2") .connect(); //客户端2发送 const resp = client2.send(FolkMQ.newMessage("helloworld!").tag("hello"), "demoapp1").await(); console.log(resp.dataAsString()); ``` ## 二、兼容说明 * 本次更新,向下兼容。 * 新增的功能功能(事务消息,发送与监听模式模式,消息属性),需要新版服务端和客户端支持。
最后提交信息为:
1.2.3
v1.2.2
cdb4485
2024-02-27 14:07
对比
FolkMQ v1.2.2
西东
### 更新说明(优化 rpc 接口体验;强化 trans 概念) * 调整 response 拆分为:transactionCheckback 和 listen * 调整 request 改为 send * 添加 transactionCheckback 用于响应服务端的事务回查 * 添加 listen 和 send 配套接口 * 添加 后台图标 * 完善 许可证本地处理机制 * sokcet.d 升为 2.4.4 新功能示例(事务消息): ```java //准备(1.取名字;2.添加事务回查) MqClient client = FolkMQ.createClient("folkmq://127.0.0.1:18602") .nameAs("demoapp") //一般用当前应用名 .connect(); //用于服务端发起的事务回查 client.transactionCheckback(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(); } ``` 新功能示例(发送与监听模式模式 - rpc): ```java //客户端1 MqClient client1 = FolkMQ.createClient("folkmq://127.0.0.1:18602") .nameAs("demoapp1") .connect(); //客户端1监听 client1.listen(new MqRouter(m -> m.getTag()).doOn("hello", request -> { System.out.println(request); request.acknowledge(new StringEntity("me to!")); })); //客户端2 MqClient client2 = FolkMQ.createClient("folkmq://127.0.0.1:18602") .nameAs("demoapp2") .connect(); //客户端2发送 Reply reply = client2.send(new MqMessage("helloworld!").tag("hello"), "demoapp1").await(); System.out.println(reply.dataAsString()); ``` ### 兼容说明 * 本次更新,向下兼容。 * 新增的功能功能(事务消息,发送与监听模式模式,消息属性),需要新版服务端和客户端支持。
最后提交信息为:
1.2.2
v1.2.1
4322afb
2024-02-23 16:05
对比
FolkMQ v1.2.1
西东
本次版本发布,增加了"事务消息"、"消息属性"、"请求与响应模式(rpc)" 的支持。 ### 更新说明 * 添加 协议版本的握手传递 * 添加 消息事务支持(即二段式提交),支持反向事务确认 * 添加 请求响应模式支持(即 rpc 模式) * 添加 消息用户属性支持 * 优化 内存占用与快照大小 * 优化 安全停止延时改为4秒 * 优化 客户端相关参数校验 * 优化 客户端的心跳间隔为6秒 * 优化 停止打印信息 * sokcet.d 升为 2.4.3 新功能示例(事务消息): ```java //准备(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(); } ``` 新功能示例(请求响应模式): ```java //客户端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()); ``` ### 兼容说明 * 本次更新,向下兼容。 * 新增的功能功能(事务消息,RPC模式,消息属性),需要新版服务端和客户端支持。
最后提交信息为:
1.2.1
v1.2.0
bac0f32
2024-02-23 15:17
对比
FolkMQ v1.2.0
西东
### 更新说明 * 添加 协议版本的握手传递 * 添加 消息事务支持(即二段式提交),支持反向事务确认 * 添加 请求响应模式支持(即 rpc 模式) * 添加 消息用户属性支持 * 优化 内存占用与快照大小 * 优化 安全停止延时改为4秒 * 优化 客户端相关参数校验 * 优化 客户端的心跳间隔为6秒 * 优化 停止打印信息 * sokcet.d 升为 2.4.3 新功能示例(事务消息): ```java //准备(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(); } ``` 新功能示例(请求响应模式): ```java //客户端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()); ``` ### 兼容说明 * 本次更新,向下兼容。 * 新增的功能功能(事务消息,RPC模式,消息属性),需要新版服务端和客户端支持。
最后提交信息为:
1.2.0
v1.1.0
792723b
2024-02-08 12:26
对比
FolkMQ v1.1.0
西东
### 更新说明 * 调整 消息流处理改为单线程架构! * 添加 “绝对顺序”消息支持(同时支持单机模式与集群模式)! * 修复 客户端问题:同一个项目内,用不同的 consumerGroup 订阅同一个topic 会被覆盖的问题 * sokcet.d 升为 2.4.0 新功能示例: ```java //同步 client.publish("demo", new MqMessage("hello").sequence(true))); //异步 client.publishAsync("demo", new MqMessage("hello").sequence(true))); ``` ### 兼容说明 本次更新,向下兼容。新增的顺序消息功能,需要新版服务端支持。
最后提交信息为:
README
v1.0.32
7ab0eed
2024-02-06 10:15
对比
FolkMQ v1.0.32
西东
### 更新说明: * 服务端的消息主处理,改为单线程模式 向 redis 学习。消息的主处理,基本在内存里进行。所以改成单线程后,性能没啥变化。 * 添加 单机模式下绝对有序支持 ```java //消息绝对有序配置支持(发送有序,接收有序) MqClient client = FolkMQ.createClient("folkmq://127.0.0.1:18601?ak=ak1&sk=sk1", "folkmq://127.0.0.1:18602?ak=ak1&sk=sk1") .config(c->c.sequenceMode(true).coreThreads(1).maxThreads(1)) .connect(); ``` * 添加 集群安全停止支持。实现一端停止,另一端完全无感知(不异常,不卡顿) 新的高可用演示视频:[https://www.bilibili.com/video/BV1Ha4y1R73b/](https://www.bilibili.com/video/BV1Ha4y1R73b/) * 添加 管理接口支持 ```java //管理接口,一般用于用户自己开发管理界面,通过接口管理 FolkMQ String json = client.call(MqApis.MQ_QUEUE_VIEW_MESSAGE, token, "demo","demoApp").get(); ``` ### 兼容说明: 本次更新,向下兼容
最后提交信息为:
1.0.32
v1.0.31
3edef9e
2024-01-23 17:40
对比
FolkMQ v1.0.31
西东
### 更新说明: * sokcet.d 升为 2.3.8 ### 兼容说明: * 本次更新,向下兼容
最后提交信息为:
1.0.31
v1.0.30
0a6a52e
2024-01-17 21:47
对比
FolkMQ v1.0.30
西东
### 更新说明: * 修复 消息过期判断(修复 1.0.29 的bug) ```java let msg = new MqMessage("hello").expiration(new Date(System.currentTimeMillis() + 5000)); client.publish("demo", msg); ``` ### 兼容说明: * 本次更新,向下兼容
最后提交信息为:
1.0.30
v1.0.29
15160ab
2024-01-16 16:40
对比
FolkMQ v1.0.29
西东
### 更新说明: * 添加 消息过期支持 * sokcet.d 升为 2.3.6 * solon 升为 2.6.5 ```java let msg = new MqMessage("hello").expiration(new Date(System.currentTimeMillis() + 5000)); client.publish("demo", msg); ``` ### 兼容说明: * 本次更新,向下兼容
最后提交信息为:
1.0.29
v1.0.28
ac73800
2024-01-10 18:55
对比
FolkMQ v1.0.28
西东
### 更新说明: * 添加 管理后台“强制派发”和“强制删除”功能 * 优化 快照保存的速度 * 减少 快照保存时的内存使用 * sokcet.d 升为 2.3.4 ### 兼容说明: * 本次更新,向下兼容
最后提交信息为:
1.0.28
v1.0.27
1b3de96
2024-01-08 12:43
对比
FolkMQ v1.0.27
西东
### 更新说明: * sokcet.d 升为 2.3.0 ### 兼容说明: * 本次更新,向下兼容
最后提交信息为:
1.0.27
v1.0.26
cb68501
2024-01-01 11:47
对比
FolkMQ v1.0.26
西东
更新说明: * 添加 folkmq-broker 对 ws 协议的支持(后续可能增加 js client) * sokcet.d 升为 2.2.2 兼容说明: * 本次更新,向下兼容
最后提交信息为:
1.0.26
v1.0.25
0fd0f9a
2023-12-27 19:25
对比
FolkMQ v1.0.25
西东
更新说明: * 添加 消息者列表弹窗(在消息看板界面) * 调整 访问改为单账号模式(使用 ak,sk 名字配置简单些) * 优化 几处细节 * sokcet.d 升为 2.2.0 兼容说明: * 本次更新,向下兼容
最后提交信息为:
1.0.25
v1.0.24
f17f40a
2023-12-23 22:24
对比
FolkMQ v1.0.24
西东
更新说明: * 优化 客户端连接器的资源回收处理 * 减少 IO层的线程数使用 兼容说明: * 本次更新,向下兼容
最后提交信息为:
1.0.24
v1.0.23
f38bda4
2023-12-19 18:57
对比
FolkMQ v1.0.23
西东
更新说明: * 修复 “时序处理”在特殊情况下引发派发慢的问题 兼容说明: * 本次更新,向下兼容
最后提交信息为:
修复 scheduled 特殊情况下引发派发慢的问题
v1.0.22
65b290c
2023-12-15 11:45
对比
FolkMQ v1.0.22
西东
更新说明: * 完善 集群可用性(只要有一个同类的节点即可用) * 优化 节点断链灵敏度(毫秒级) 兼容说明: * 本次更新,向下兼容
最后提交信息为:
1.0.22
v1.0.21
accb4cf
2023-12-14 14:14
对比
FolkMQ v1.0.21
西东
更新说明: * 添加 broker 集群热扩展机制 * 添加 mq.event.join 新指令(用于加入集群时,同步订阅) * 添加 client 批量订阅支持(连接前订阅,即为批量) * 添加 client::unpublishAsync 取消发布异步模式 * 调整 各端打开时的日志打印 * 调整 ServiceListener 打开时的日志打印 兼容说明: * 本次更新,向下兼容
最后提交信息为:
1.0.21
v1.0.20
bfeabf4
2023-12-13 21:21
对比
FolkMQ v1.0.20
西东
更新说明: * 添加 folkmq-server 控制台消息发布功能 * 添加 folkmq-broker 控制台消息发布功能 * 添加 MqClient 取消发布的方法 * 添加 后端服务启动打印信息 * 添加 队列会话去重处理 * sokcet.d 升为 2.1.12 兼容说明: * 本次更新,兼容之前的版本
最后提交信息为:
添加 队列会话去重处理
v1.0.19
0cc4259
2023-12-10 22:58
对比
FolkMQ v1.0.19
西东
* 添加 folkmq-server 最大消息等待时间配置(默认 180s,之前为2h)!!! * 优化 folkmq-server 快照持久化可用性,增加“临时文件”与“备份文件”概念!!! * 优化 folkmq-broker 客户端异常断连的恢复速度与性能!!! * 调整 folkmq-broker 控制台,会话看板合并到消息看板 * 调整 集群模式下消费者的订阅名字(由 consumerGroup 改为 topic#consumerGroup)!!! * 调整 服务端派发改为单线程模式(更适合很多队列的情况)!!! * 调整 客户端分片大小配置(之前为默认16m,现改为1m) * 取消 发布重试功能(如有需要用户自行处理)
最后提交信息为:
1.0.19
下载
请输入验证码,防止盗链导致资源被占用
取消
下载
1
https://gitee.com/noear/folkmq.git
git@gitee.com:noear/folkmq.git
noear
folkmq
folkmq
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册