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();
代码仓库
官网
FolkMQ 作个简单的消息中间件(最简单的那种), v1.3.1 发布的更多相关文章
- .Net Core 跨平台:一个简单程序的多平台(windows、Linux、osx)发布
.Net Core 跨平台:一个简单程序的多平台(windows.Linux.osx)发布 .Net Core 3.0 已于2019年9月23日发布了,包含了一些新特性,具体参见Announcing ...
- 【转】C#类的分类(静态类、实例类、嵌套类、结构、简单的抽象类、简单的密封类)
静态类 -------------------------------------------------------------------------------- 静态类就是在class关键字前 ...
- CORS跨域请求之简单请求与非简单请求
先来看一个例子 定义server01的项目,在路由表中添加一条路由记录 url(r'^getData.html$',views.get_data) 对应的视图函数 from django.shortc ...
- Python入门一:简单得不能再简单了##
从python的语法上看,简单得不能再简单了. 想学它,请移步廖雪峰python2.7教程以及python3.这实在是最好的入门教程.参考资料太多: 外国的教程 Python 入门指南 Python ...
- 学python2.7简单还是python3.0简单,两者区别
学python2.7简单还是python3.0简单,谈谈两者区别 1. 使用__future__模块 Python 3.X 引入了一些与Python 2 不兼容的关键字和特性.在Python 2中,可 ...
- 要多简单就有多简单的H5拍照加水印
来一个简单粗暴的gif演示图 先来html 内容 <video id="video" width="320" height="240" ...
- JMS学习篇《一》ActiveMQ消息中间件的简单介绍与用法-概念篇
原创说明:本篇博文为本人原创作品,转载请注明出处 1.何为消息中间件 消息中间件是一种在分布式应用中互相交换信息的一种技术,常见的成熟消息中间件有:RabbitMQ.SonicMQ,activeMQ. ...
- python 简单简绍以及简单的语法
一.Pthon介绍 Pyhton的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆在阿姆斯特丹打发时间,决心开发一款新的脚本解释程序,作为ABC语言的 ...
- socket.io简单入门(一.实现简单的图表推送)
引子:随着nodejs蓬勃发展,虽然主要业务系统因为架构健壮性不会选择nodejs座位应用服务器.但是大量的内部系统却可以使用nodejs试水,大量的前端开发人员转入全堆开发也是一个因素. 研究本例主 ...
- kettle教程(1) 简单入门、kettle简单插入与更新。打开kettle
本文要点:Kettle的建立数据库连接.使用kettle进行简单的全量对比插入更新:kettle会自动对比用户设置的对比字段,若目标表不存在该字段,则新插入该条记录.若存在,则更新. Kettle ...
随机推荐
- elementui表格内容超出显示省略号
有些时候表格的内容太长了: 但是elementui中的表格,会进行换行处理: 此时表格的高度就会发生变化 这样就不好看,此时就要进行省略号来出来这个问题: el-table是有这个控制属性的::sho ...
- Go-操作redis/redigo
目录 Go-操作redis 安装 连接 使用 设置key过期时间 批量获取mget.批量设置mset 列表操作 hash操作 Pipelining(管道) redis发布会订阅模式 事务操作 万能操作 ...
- 3.1 Windows驱动开发:内核远程堆分配与销毁
在开始学习内核内存读写篇之前,我们先来实现一个简单的内存分配销毁堆的功能,在内核空间内用户依然可以动态的申请与销毁一段可控的堆空间,一般而言内核中提供了ZwAllocateVirtualMemory这 ...
- AIX6.1系统NTP同步配置
前言 当AIX系统的本地时间与时间服务器授出的标准时间误差大于±1000秒时.xntpd服务将无法同步时间并变得无法正常工作,请进行ntp配置前,先修改AIX系统的本地时间,尽量和时间服务器的标准 ...
- iOS使用Run Script提升开发效率
通过在Xcode Run Script添加shell脚本,然后通过脚本来帮助我们在编译阶段完成一下资源的copy,文件替换,修改等繁琐的事件.使Xcode在编译过程中自动完成耗时繁琐的操作提升开发效率 ...
- ECMAScript 2023 新特性预览
ECMAScript 2023 的最终版本预计将于今年 6 月底发布.会议基本已经确定 了 ECMAScript 2023 的新功能列表,预计不会再有任何重大的编辑更改. 着该提案已被 ECMAScr ...
- 目录 - JavaScript指南
目 录 第一章. JavaScript概述 第二章. JavaScript语法基础 第三章. JavaScript编程规范 第四章. JavaScript工具集合 第五章. JavaSc ...
- 【Docker内容大集合】Docker从认识到实践再到底层原理大汇总
前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量博客汇总https://blog.cs ...
- C++ GDAL提取多时相遥感影像中像素随时间变化的数值数组
本文介绍基于C++语言GDAL库,批量读取大量栅格遥感影像文件,并生成各像元数值的时间序列数组的方法. 首先,我们来明确一下本文所需实现的需求.现在有一个文件夹,其中包含了很多不同格式的文件, ...
- 记录一则exachk进程占用大量CPU资源
有Exadata客户在进行exachk巡检之后反馈,发现系统中,exachk进程占用了大量CPU资源. 了解之前的变更,只是巡检之前升级了AHF,然后进行标准的exachk巡检. 现象: 目前机器整体 ...