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封装 el-dialog
讲解 // 讲解: @close="$emit('update:show1', false)"是子组件跟新父组件中的某值show1,将值变为false // :visible.sy ...
- 动态添加input,然后获取所有的input框中的值
今天遇见一个问题. 点击按钮,动态添加input框(可以添加多个) 然后搜集用户在input中输入的值. 我刚刚在纠结,给input框中注入事件. 但是这样会很麻烦. 经过同事的指点. 我直接去拿v- ...
- MySQL数据库精选(从入门使用到底层结构)
基本使用MySQL 通用语法及分类 DDL: 数据定义语言,用来定义数据库对象(数据库.表.字段) DML: 数据操作语言,用来对数据库表中的数据进行增删改 DQL: 数据查询语言,用来查询数据库中表 ...
- ClickHouse(14)ClickHouse合并树MergeTree家族表引擎之VersionedCollapsingMergeTree详细解析
目录 建表语法 使用场景 合并算法 使用例子. 资料分享 参考文章 VersionedCollapsingMergeTree引擎继承自MergeTree并将折叠行的逻辑添加到合并数据部分的算法中.Ve ...
- 虚幻引擎 4 学习笔记 [1] :蓝图编程 Demo
虚幻引擎 4 学习笔记 [1] :蓝图编程 Demo 最近学习虚幻引擎,主要看的是 Siki 学院的课,课程链接:Unreal蓝图案例 - 基础入门 - SiKi学院|SiKi学堂 - unity ...
- 3.1 C/C++ 使用字符与指针
C/C++语言是一种通用的编程语言,具有高效.灵活和可移植等特点.C语言主要用于系统编程,如操作系统.编译器.数据库等:C语言是C语言的扩展,增加了面向对象编程的特性,适用于大型软件系统.图形用户界面 ...
- Visual Studio部署C++矩阵库Armadillo的方法
本文介绍在Visual Studio软件中配置C++环境下线性代数运算库Armadillo的方法. 首先,我们需要在Armadillo库官网下载其源代码,直接点击下图所示红色框内部分即可. ...
- 使用DoraCloud搭建支持统信UOS桌面的信创云桌面系统
信创云桌面 信创云桌面采用国产的芯片,支持国产的桌面操作系统.本方案采用海光CPU的服务器,运行DoraCloud云桌面系统.可以支持统信UOS桌面系统和麒麟桌面操作系统. 环境准备 服务器:海光 5 ...
- 19.1 DLL基础--《Windows核心编程》
Windows 中最重要的三个DLL是: Kernel32.dll:包含的函数用来管理内存.进程以及线程 User32.dll:包含的函数用来执行和用户界面相关的任务 GDI32.dll:包含的函数用 ...
- NC25005 [USACO 2008 Ope S]Clear And Present Danger
题目链接 题目 题目描述 Farmer John is on a boat seeking fabled treasure on one of the N (1 <= N <= 100) ...