jetlinks之Codec&config(四)

jetlinks之Codec

提示:jetlinks之Codec编码器,用于元素对象的编码解密


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:jetlinks编码器,主要对各种数据类型的编码解码,
包含以下类型:
Boolean,ByteBuf,Byte,byte[],Double,Enum,Throwable,Float,Integer
,JSONArray,JSONObject,Message(消息),Payload(消息负载) 等


一、编码器

在这里插入图片描述
Decoder 解码
Encoder 编码
Codec 编码器接口定义
CodecsSupport 编码支持接口定义,支持编解码优先级排序设置
DefaultCodecsSupport 默认编码支持实现,若有具体泛型类型则按具体类型进行编解码,若无则按json进行编解码
Codecs 编码器 加载所有类型编码器,支持编码器注册, 查询等操作

        ServiceLoader
                .load(CodecsSupport.class)
                .forEach(allCodec::add);
        allCodec.sort(Comparator.comparingInt(CodecsSupport::getOrder));

二、配置

1.代码结构

在这里插入图片描述

ConfigKey 用于定义配置key,增加key的可读性,支持key,名称说明,类型设置,提供相关of构造器,
ConfigKeyValue 键值对定义,继承ConfigKey 增加value定义
ConfigStorage 配置存储器,用于定义配置存储接口以及常用方法(添加,删除,清空方法)
ConfigStorageManager 配置存储管理器
SimpleConfigKey 简单配置实现
StorageConfigurable 配置化支撑
Configurable 可配置接口定义
该包主要定义配置相关,对配置类型进行定义,配置存储管理器设定及可配置接口进行定义。
目前jetlinks-core包中主要有以下类都实现了
在这里插入图片描述

三、jetlinks的defaults默认配置

1.代码概览

在这里插入图片描述
提示:主要包含一些基础的定义

ProtocolSupport 消息协议支持接口,通过实现此接口来自定义消息协议
主要包含一些基础的定义包含 协议ID ,协议名称,说明 属性,提供 获取支持的协议类型,获取设备消息编码解码器,获取设备消息发送拦截器, 用于拦截发送消息的行为,获取默认的设备物模型编解码器,获取协议所需的配置信息定义,获取自定义设备状态检查器
ProtocolSupports 多协议支持接口 是否支持多协议

Authenticator 认证器,用于设备连接的时候进行认证,
CompositeProtocolSupport 组合协议支撑
DefaultDeviceMessageSender 消息发送器默认实现 实现消息发送器定义

2.消息协议

初次熟悉代码,本章仅做记录,简单理解下协议部分,等对整体有更深的认知后再进行单独学习理解
ProtocolSupport 消息协议支持接口,通过实现此接口来自定义消息协议,包含 协议ID ,协议名称,说明等属性,提供获取协议类型,编码解码器,发送拦截器,物模型等方法
CompositeProtocolSupport 组合协议支撑
在这里插入图片描述
协议实现ProtocolSupport接口
组合协议实现主要包含以下属性:
基础属性:协议ID,协议名称,协议说明
协议物模型编码器,协议配置信息定义,设备物模型定义,消息转换器定义
物模型拓展信息定义,设备消息拦截器,设备认证,设备状态检查器,初始化配置信息
方法:设备注册生效回调函数,设备注销前调用函数,当设备物模型变更时调用函数,产品注册后调用函数,产品注销前调用函数,产品物模型变更回调

ProtocolSupports 协议组定义
CompositeProtocolSupports 协议组实现,多协议设置封装,主要提供是否支持判断,协议获取等方法

3.消息发送器

DeviceMessageSender 消息发送器定义
DefaultDeviceMessageSender 消息发送器默认实现
FunctionInvokeMessageSender 通用设备功能消息发送器定义

  /**
     * 发送一个支持回复的消息.    
     */
 <R extends DeviceMessageReply> Flux<R> send(Publisher<RepayableDeviceMessage<R>> message);
     /**
     * 发送消息并自定义返回结果转换器
     */
  <R extends DeviceMessage> Flux<R> send(Publisher<? extends DeviceMessage> message, Function<Object, R> replyMapping);
   /**
     * 发送消息并获取返回
     */
    <R extends DeviceMessage> Flux<R> send(DeviceMessage message);
       /**
     * 发送消息后返回结果,不等待回复
     */
    default Mono<Void> sendAndForget(DeviceMessage message) {
    }
        /**
     * 发送{@link org.jetlinks.core.message.function.FunctionInvokeMessage}消息更便捷的API
     */
 FunctionInvokeMessageSender invokeFunction(String function);
     /**
     * 发送{@link org.jetlinks.core.message.property.ReadPropertyMessage}消息更便捷的API
     */
    ReadPropertyMessageSender readProperty(String... property);

FunctionInvokeMessageSender 通用消息发送器 理解:为自定义发送消息提供的简便API
在这里插入图片描述
该接口主要提供了以下方法:
消息回调,header设置,消息ID设置,消息参数添加,消息参数集合设置,消息发送器检查(检查相关设备操作配置等是否完善),有回复发送,异步发送(忽略返回)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JetLinks开源物联网平台基于Java8、Spring Boot 2.x、WebFlux、Netty、Vert.x、Reactor等开发,是一个开箱即用,可二次开发的企业级物联网基础平台。平台实现了物联网相关的众多基础功能,能帮助你快速建立物联网相关业务系统。 JetLinks开源物联网平台核心特性: 支持统一物模型管理,多种设备,多种厂家,统一管理。 统一设备连接管理,多协议适配(TCP、MQTT、UDP、CoAP、HTTP等),屏蔽网络编程复杂性,灵活接入不同厂家不同协议的设备。 灵活的规则引擎,设备告警,消息通知,数据转发。可基于SQL进行复杂的数据处理逻辑。 地理位置:统一管理地理位置信息,支持区域搜索。 数据可视化:实现拖拽配置数据图表,设备组态等。 JetLinks开源物联网平台技术栈: Spring Boot 2.2.x Spring WebFlux 响应式Web支持 R2DBC 响应式关系型数据库驱动 Project Reactor 响应式编程框架 Netty、Vert.x 高性能网络编程框架 ElasticSearch 全文检索,日志,时序数据存储 PostgreSQL 业务功能数据管理 hsweb framework 4 业务功能基础框架     JetLinks开源物联网平台 更新日志: v1.9 1、增加设备独立物模型支持,可给单独的设备配置物模型. 2、基本实现GB28181国标视频设备接入,支持直播,云台控制,级联操作.(选配模块) 3、RabbitMQ增加routeKey配置,可在配置文件中指定device.message.writer.rabbitmq.consumer-route-key和device.message.writer.rabbitmq.producer-route-key.(Pro) 4、当设置了device.message.writer.rabbitmq.consumer=false时,不创建MQ消费者.(Pro) 5、设备支持独立物模型,可单独配置设备的物模型. 6、适配tdengine 2.0.16.0,优化sql长度策略. (pro) 7、优化规则引擎编辑器,实现组件模块化动态加载.(Pro) 8、修复启动服务时,如果某个产品物模型发布失败,导致后面的产品终止发布的问题. 9、增加ignoreLatest消息头,message.addHeader("ignoreLatest",true) 忽略记录最新数据到数据库. 10、修复租户下操作设备告警提示无权限.(Pro) 11、优化租户在解绑成员时,同时解绑成员的资产信息.(Pro) 12、优化子设备消息回复处理 13、物模型属性增加存储方式功能,可配置部分属性不存储. 14、增加虚拟属性功能,可通过规则来计算出虚拟属性值.(Pro) 15、增加租户成员绑定(TenantMemberBindEvent),解绑(TenantMemberUnBindEvent)事件.可通过spring-event订阅处理此事件.(Pro) 16、优化子设备状态检查,当检查子设备状态时,将会尝试发送ChildDeviceMessage<DeviceStateCheckMessage>给网关,处理后返回ChildDeviceMessageReply<DeviceStateCheckMessageReply>. 17、增加ClickHouse设备数据存储策略支持.(Pro) 18、增加权限过滤功能,可配置禁止赋予自己没有的权限给其他用户.hsweb.permission.filter相关配置 19、设备和产品的租户绑定逻辑优化: 绑定设备时,自动绑定产品.解绑产品时,自动解绑设备.(Pro) 20、用户管理增加租户权限控制.(Pro) 21、当向keepOnline的设备发送消息时,如果原始连接已断开,将返回CONNECTION_LOST错误. 22、设置keepOnline的会话将被持久化,重启服务后自动恢复.(Pro) 23、默认关闭设备最新数据存储,通过jetlinks.device.storage.enable-last-data-in-db=true开启.(Pro) 24、属性物模型增加属性值来源,配置为手动时,在发送修改属性指令(WritePropertyMessage)时,将直接生效,不会发送到设备. 25、优化租户资产解绑逻辑,当删除数据时,解绑资产全部的绑定关系.(Pro) 26、用户管理,机构管理增加租户端支持,租户可以自己管理自己的用户和机构.(Pro)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值