功能简介

角色 功能
生产端(或发起端) 发布消息、定时消息(或叫延时)、顺序消息、可过期消息、事务消息。发送消息(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 发布的更多相关文章

  1. .Net Core 跨平台:一个简单程序的多平台(windows、Linux、osx)发布

    .Net Core 跨平台:一个简单程序的多平台(windows.Linux.osx)发布 .Net Core 3.0 已于2019年9月23日发布了,包含了一些新特性,具体参见Announcing ...

  2. 【转】C#类的分类(静态类、实例类、嵌套类、结构、简单的抽象类、简单的密封类)

    静态类 -------------------------------------------------------------------------------- 静态类就是在class关键字前 ...

  3. CORS跨域请求之简单请求与非简单请求

    先来看一个例子 定义server01的项目,在路由表中添加一条路由记录 url(r'^getData.html$',views.get_data) 对应的视图函数 from django.shortc ...

  4. Python入门一:简单得不能再简单了##

    从python的语法上看,简单得不能再简单了. 想学它,请移步廖雪峰python2.7教程以及python3.这实在是最好的入门教程.参考资料太多: 外国的教程 Python 入门指南 Python ...

  5. 学python2.7简单还是python3.0简单,两者区别

    学python2.7简单还是python3.0简单,谈谈两者区别 1. 使用__future__模块 Python 3.X 引入了一些与Python 2 不兼容的关键字和特性.在Python 2中,可 ...

  6. 要多简单就有多简单的H5拍照加水印

    来一个简单粗暴的gif演示图 先来html 内容 <video id="video" width="320" height="240" ...

  7. JMS学习篇《一》ActiveMQ消息中间件的简单介绍与用法-概念篇

    原创说明:本篇博文为本人原创作品,转载请注明出处 1.何为消息中间件 消息中间件是一种在分布式应用中互相交换信息的一种技术,常见的成熟消息中间件有:RabbitMQ.SonicMQ,activeMQ. ...

  8. python 简单简绍以及简单的语法

    一.Pthon介绍 Pyhton的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆在阿姆斯特丹打发时间,决心开发一款新的脚本解释程序,作为ABC语言的 ...

  9. socket.io简单入门(一.实现简单的图表推送)

    引子:随着nodejs蓬勃发展,虽然主要业务系统因为架构健壮性不会选择nodejs座位应用服务器.但是大量的内部系统却可以使用nodejs试水,大量的前端开发人员转入全堆开发也是一个因素. 研究本例主 ...

  10. kettle教程(1) 简单入门、kettle简单插入与更新。打开kettle

    本文要点:Kettle的建立数据库连接.使用kettle进行简单的全量对比插入更新:kettle会自动对比用户设置的对比字段,若目标表不存在该字段,则新插入该条记录.若存在,则更新.   Kettle ...

随机推荐

  1. elementUI封装 el-dialog

    讲解 // 讲解: @close="$emit('update:show1', false)"是子组件跟新父组件中的某值show1,将值变为false // :visible.sy ...

  2. 动态添加input,然后获取所有的input框中的值

    今天遇见一个问题. 点击按钮,动态添加input框(可以添加多个) 然后搜集用户在input中输入的值. 我刚刚在纠结,给input框中注入事件. 但是这样会很麻烦. 经过同事的指点. 我直接去拿v- ...

  3. MySQL数据库精选(从入门使用到底层结构)

    基本使用MySQL 通用语法及分类 DDL: 数据定义语言,用来定义数据库对象(数据库.表.字段) DML: 数据操作语言,用来对数据库表中的数据进行增删改 DQL: 数据查询语言,用来查询数据库中表 ...

  4. ClickHouse(14)ClickHouse合并树MergeTree家族表引擎之VersionedCollapsingMergeTree详细解析

    目录 建表语法 使用场景 合并算法 使用例子. 资料分享 参考文章 VersionedCollapsingMergeTree引擎继承自MergeTree并将折叠行的逻辑添加到合并数据部分的算法中.Ve ...

  5. 虚幻引擎 4 学习笔记 [1] :蓝图编程 Demo

    虚幻引擎 4 学习笔记 [1] :蓝图编程 Demo ​ 最近学习虚幻引擎,主要看的是 Siki 学院的课,课程链接:Unreal蓝图案例 - 基础入门 - SiKi学院|SiKi学堂 - unity ...

  6. 3.1 C/C++ 使用字符与指针

    C/C++语言是一种通用的编程语言,具有高效.灵活和可移植等特点.C语言主要用于系统编程,如操作系统.编译器.数据库等:C语言是C语言的扩展,增加了面向对象编程的特性,适用于大型软件系统.图形用户界面 ...

  7. Visual Studio部署C++矩阵库Armadillo的方法

      本文介绍在Visual Studio软件中配置C++环境下线性代数运算库Armadillo的方法.   首先,我们需要在Armadillo库官网下载其源代码,直接点击下图所示红色框内部分即可.   ...

  8. 使用DoraCloud搭建支持统信UOS桌面的信创云桌面系统

    信创云桌面 信创云桌面采用国产的芯片,支持国产的桌面操作系统.本方案采用海光CPU的服务器,运行DoraCloud云桌面系统.可以支持统信UOS桌面系统和麒麟桌面操作系统. 环境准备 服务器:海光 5 ...

  9. 19.1 DLL基础--《Windows核心编程》

    Windows 中最重要的三个DLL是: Kernel32.dll:包含的函数用来管理内存.进程以及线程 User32.dll:包含的函数用来执行和用户界面相关的任务 GDI32.dll:包含的函数用 ...

  10. 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) ...