FluxMQ—2.0.8版本更新内容
前言
FLuxMQ是一款基于java开发,支持无限设备连接的云原生分布式物联网接入平台。FluxMQ基于Netty开发,底层采用Reactor3反应堆模型,具备低延迟,高吞吐量,千万、亿级别设备连接;方便企业快速构建其物联网平台与应用。
FluxMQ官网:https://www.fluxmq.com
FluxMQ演示系统:http://demo.fluxmq.com/
新增指令消费
在之前版本指令下发途径有两种:
- MQTT客户端连接,通过发布订阅方式去发送数据
- HTTP接口进行指令下发
在2.0.8版本中,我们新增了多种MQ集成方式,通过配置MQ的主题映射MQTT的主题完成对应指令的下发,方便业务快速集成指令下发,同时我们支持Nacos配置中心,可以方便在SpringCloud-Alibaba项目中直接使用Feign进行服务调用,完成微服务生态的全面融合,而无需开发任何代码。
MQ的集成
目前我们支持Kafka、RocketMQ,RabbitMQ,Pulsar直接集成消费。下面我们以Kafka配置详解如何使用
可以配置从Kafka获取数据的编码,默认使用String的Decoder进行获取数据,可以配置轮询的线程以及周期。数据源的配置就是Kafka的Properties原生配置
可以配置Kafka Topic映射到Mqtt Topic,以及使用的Qos级别以及是否保留消息
Nacos注册中心
如图注册服务后,在SpringCloud可以使用Feign Client进行服务调用。默认我们注册的是 POST /public/mqtt/publish
的请求
@FeignClient("fluxmq")//服务名称
public interface MqttPulishService {
@PostMapping("/public/mqtt/publish")
void send(@RequestBody PublishBody body);
}
@Data
public class PublishBody {
private String topic;
private int qos;
private boolean retain;
private DataType dataType;
private Object message;
}
public enum DataType {
JSON,
STRING,
HEX
}
License授权
在2.0.8中,我们新增了标准的License授权,默认我们提供了一个免费永久的License在安装包中(连接数100),方便小客户免费接入使用,也可以用FluxMQ来进行功能测试。
License集成
默认读取启动目录的 License.base64文件
当然也可以在config.yaml进行license文件指定
license: /soft/icense.base64
指定读取license的文件路径。读取启动目录的/soft/license.base64
文件
服务启动成功后登录管理平台可以查看到License的信息:
Pool配置改动
修改FluxMQ流量控制配置,最新配置如下
pool:
bossThreadSize: 1 # boss线程 默认=cpu核心数
workThreadSize: 10 # work线程 默认=cpu核心数+2
eventThreadSize: 16 # 业务线程数 默认=cpu核心数
bufferSize: 512 # ringBuffer大小
eventMessageSize: 500000 # 最大缓冲消息数
lowWaterMark: 32768
highWaterMark: 65536
globalReadSize: 102400 # 全局读字节数/s 默认不限制
globalWriteSize: 102400 # 全局写字节数/s 默认不限制
channelReadSize: 1024 # 单连接读字节数/s 默认不限制
channelWriteSize: 1024 # 单连接写字节数/s 默认不限制
下面的配置理论上是最优配置,不需要额外设置。
参数名 | 描述 | 默认值 |
---|---|---|
bossThreadSize | netty的bossThreadSize,一般配置1~4 cpu即可 | 必填项 |
workThreadSize | netty的workThreadSize,处理io事件 | 默认cpu |
eventThreadSize | MQTT事件消费线程,主要处理规则引擎等耗时操作, | 默认cpu+2 |
bufferSize | MQTT事件消费RIngBufer大小 | 默认1024 |
eventMessageSize | 全局读写限制:每秒字节数 | 默认50000 |
globalReadSize | 全局读限制:每秒字节数读 | 不推荐配置 |
globalWriteSize | 全局写限制:每秒字节数读 | 不推荐配置 |
channelReadSize | 单个连接读限制:每秒字节数读 | 不推荐配置 |
channelWriteSize | 单个连接写限制:每秒字节数 | 不推荐配置 |
lowWaterMark | 默认 32768 | 不推荐配置 |
highWaterMark | 当写入缓存字节数达到此值,默认 65536 | 不推荐配置 |
FluxMQ免费推广
FluxMQ默认提供免费的接入License许可,直接参考我们文档下载即可。