JetLinks 基于Java8,Spring Boot 2.x ,WebFlux,Netty,Vert.x,Reactor等开发, 是一个全响应式的企业级物联网平台。支持统一物模型管理,多种设备,多种厂家,统一管理。统一设备连接管理,多协议适配(TCP,MQTT,UDP,CoAP,HTTP等),屏蔽网络编程复杂性,灵活接入不同厂家不同协议等设备。实时数据处理,设备告警,消息通知,数据转发。地理位置,数据可视化等。能帮助你快速建立物联网相关业务系统。
Full Changelog: https://github.com/jetlinks/jetlinks-community/compare/1.13.0...2.1.0
Full Changelog: https://github.com/jetlinks/jetlinks-community/compare/1.13.0...2.0.0
主要优化:
netty 4.1.73.Final
以及vertx 4.2.3
版本,支持mqtt5
.FileManager
,来统一管理相对敏感的文件上传以及访问.升级说明
文件上传配置调整,协议包,数据导入等相关文件上传已调整使用新的FileManager
进行管理,可根据配置文件进行配置
file:
manager:
storage-base-path: "./data/files"
read-buffer-size: 64KB
cluster-key: file-manager # 修改此值并保证整个集群的值一致
server-node-id: ${jetlinks.server-id}
# cluster-rute:
## 集群ID: 访问地址
# "[jetlinks-platform:8844]": "127.0.0.1:8844"
# "[jetlinks-platform:8840]": "127.0.0.1:8840"
where id dev-alarm 'state not xxx'
.save
时,可能导致部分数据字段被设置为null.@Subscribe
注解可以使用表达式来引用配置值,如: @Subscribe("/device/${a.b.c:default}")
2.17.1
,升级logback为1.2.9
.(平台未直接使用log4j,而是使用log4j-to-slf4j
,最终使用logback).主要优化:
CompositeProtocolSupport.onBeforeDeviceCreate
增加自定义设备信息,在创建设备时,可自定义生成设备的相关配置.EntityBeforeXXX
,EntityPrepareXXX
事件.spring.r2dbc.pool
相关配置,支持配置连接有效期.modelType(模型类型)
,jobExecutor(节点执行器)
,ruleConf(规则的其他配置信息)
配置,可在直接从事件数据中获取进行处理.BUG修复:
更新时间: 2021-08-02
代码分支: 1.10
属性源时间
和属性状态
;行式存储时,会使用源时间当作时间戳进行存储.I18nEnumDict
),异常(I18nSupportException
))。查看说明
scoll
为true
时,表示游标分页,此时不支持使用pageIndex
进行分页,下一页查询时需要在动态查询条件中指定上一页返回的scrollId
:"context":{"scrollId":"上一页的ID"}
,并且查询条件变化后,需要重置页码以及scrollId
.MQTT Broker
方式接入设备支持设置QoS.FileQueue
工具类,可将队列数据持久化到本地文件.ParallelIntervalHelper
工具类,可对并行操作进行延迟来实现并行转串行的效果.DeviceDataManager
接口增加getTags
方法,可在协议包中通过此方式来获取设备标签.parser.newBuffer()
方法,使用方法.直播
,云台控制
,级联操作
.(选配模块)routeKey
配置,可在配置文件中指定device.message.writer.rabbitmq.consumer-route-key
和device.message.writer.rabbitmq.producer-route-key
.(Pro)device.message.writer.rabbitmq.consumer=false
时,不创建MQ消费者.(Pro)tdengine 2.0.16.0
,优化sql长度策略. (pro)ignoreLatest
消息头,message.addHeader("ignoreLatest",true)
忽略记录最新数据到数据库.TenantMemberBindEvent
),解绑(TenantMemberUnBindEvent
)事件.可通过spring-event
订阅处理此事件.(Pro)ChildDeviceMessage<DeviceStateCheckMessage>
给网关,处理后返回ChildDeviceMessageReply<DeviceStateCheckMessageReply>
.ClickHouse
设备数据存储策略支持.(Pro)hsweb.permission.filter
相关配置keepOnline
的设备发送消息时,如果原始连接已断开,将返回CONNECTION_LOST
错误.keepOnline
的会话将被持久化,重启服务后自动恢复.(Pro)jetlinks.device.storage.enable-last-data-in-db=true
开启.(Pro)手动
时,在发送修改属性指令(WritePropertyMessage
)时,将直接生效,不会发送到设备.size
属性device.setConfig
设置的配置也可以在设备详情中查看到./device/instance/messages
,可在消息体中指定deviceId
或者通过where
条件指定要发送到的设备.(Pro)object
和array
类型的属性使用json字符串
来进行存储,减少es的压力.rabbitMQ
和kafka
.headers.force
跳过校验)-
进行id分隔(使用|
可能导致400错误.)-Djetlinks.eventbus.payload.pool.enabled=true
开启事件总线对象池,提升性能.DefaultConfigMetadata.add
方法.id$dev-tag
)支持表达式: tag1=value1 and tag2=value2
(没有sql注入,放心使用).headers.force
标记是否强制拉取固件,使用headers.latest
标记是否拉取最新的固件信息. (Pro)headers
中增加members
,标记此设备所属的用户id.(需要重新激活设备) (Pro)Headers.mergeLatest
消息头,设备属性相关消息设置此头,将合并旧的属性数据到消息中.(此操作会降低系统吞吐量)(Pro)jetlinks.event-bus.roskcet.enabled
开启.(Pro)_window_until
和_window_until_change
函数.(Pro)TopicPayload
后需要手动调用release()
释放资源.设备数据行式存储策略
:取消存储propertyName
,formatValue
字段,influxdb
下只存储numberValue
,timeValue
,value
.support.setExpandsConfigMetadata
来指定配置(需要升级jetlinks-core 1.1.4)-Dmemory.waterline=0.15
进行配置.(Pro)elasticsearch
和influxdb
写入策略,丢弃无法写入的Buffer防止内存溢出.(Pro)influxdb
查询条件的类型转换,修复如果使用数字作为设备id,无法查询到数据.(Pro)/org/device/**
,可通过headers.orgId
获取当前设备机构ID。(需要再次激活设备).DeviceMessage.addHeader("ignoreLog",true)
指定不记录此消息日志.