mirror of
https://gitee.com/NexIoT/Universal-IoT-Java.git
synced 2026-08-29 06:51:35 +08:00
数据桥接模块
概述
数据桥接模块是一个可扩展的插件化系统,用于将IoT设备数据桥接到各种外部数据源,如MySQL、Kafka、MQTT、HTTP等。
特性
- 插件化架构: 支持JDBC、Kafka、MQTT、HTTP等多种数据桥接插件
- 轻量级日志: 执行日志仅打印到控制台,不存储数据库
- 动态配置: 支持运行时启用/禁用插件
- 模板引擎: 支持SQL、JSON、TEXT模板处理
- 异步处理: 使用独立线程池异步处理数据桥接
- 资源中心: 统一管理各种数据源连接配置
模块结构
cn-universal-data-bridge/
├── cn-universal-data-bridge-core/ # 核心模块
├── cn-universal-data-bridge-plugins/ # 插件模块
│ ├── cn-universal-data-bridge-plugin-jdbc/
│ ├── cn-universal-data-bridge-plugin-kafka/
│ ├── cn-universal-data-bridge-plugin-mqtt/
│ └── cn-universal-data-bridge-plugin-http/
├── cn-universal-data-bridge-starter/ # 自动配置
└── cn-universal-data-bridge-web/ # Web接口
配置
基础配置
# 启用数据桥接模块
databridge.enabled=true
# 插件启用配置
databridge.plugins.jdbc.enabled=true
databridge.plugins.kafka.enabled=true
databridge.plugins.mqtt.enabled=true
databridge.plugins.http.enabled=true
线程池配置
# 数据桥接线程池配置
databridge.executor.core-pool-size=4
databridge.executor.max-pool-size=16
databridge.executor.queue-capacity=1000
API接口
插件管理
GET /api/databridge/plugins/status- 获取插件状态GET /api/databridge/plugins/info- 获取插件信息
资源连接管理
GET /api/databridge/resources- 获取资源连接列表POST /api/databridge/resources- 创建资源连接PUT /api/databridge/resources/{id}/status- 更新连接状态DELETE /api/databridge/resources/{id}- 删除资源连接POST /api/databridge/resources/{id}/test- 测试连接
桥接配置管理
GET /api/databridge/configs- 获取桥接配置列表POST /api/databridge/configs- 创建桥接配置PUT /api/databridge/configs/{id}/status- 更新配置状态DELETE /api/databridge/configs/{id}- 删除桥接配置POST /api/databridge/configs/{id}/validate- 验证配置
使用示例
1. 创建资源连接
POST /api/databridge/resources
{
"name": "MySQL数据库",
"type": "MYSQL",
"host": "localhost",
"port": 3306,
"username": "root",
"password": "password",
"databaseName": "iot_data",
"status": 1
}
2. 创建桥接配置
POST /api/databridge/configs
{
"name": "设备数据桥接",
"sourceProductKey": "product001",
"targetResourceId": 1,
"bridgeType": "JDBC",
"template": "INSERT INTO device_data (device_key, message_type, timestamp, properties) VALUES ('{deviceKey}', '{messageType}', '{timestamp}', '{properties}')",
"status": 1
}
3. 模板变量
支持的模板变量:
{deviceKey}- 设备ID{productKey}- 产品KEY{messageType}- 消息类型{timestamp}- 时间戳{properties}- 属性JSON{property_xxx}- 具体属性值
插件开发
实现DataBridgePlugin接口
@Component("custom")
@ConditionalOnProperty(prefix = "databridge.plugins.custom", name = "enabled", havingValue = "true")
public class CustomDataBridgePlugin implements DataBridgePlugin {
@Override
public PluginInfo getPluginInfo() {
return PluginInfo.builder()
.name("自定义插件")
.version("1.0.0")
.description("自定义数据桥接插件")
.author("开发者")
.pluginType("CUSTOM")
.supportedResourceTypes(List.of("CUSTOM"))
.build();
}
// 实现其他方法...
}
集成说明
数据桥接模块已集成到 IoTUPPushAdapter.afterPush 方法中,当设备数据推送完成后会自动触发数据桥接处理。
注意事项
- 插件默认启用,可通过配置禁用
- 数据桥接采用异步处理,不影响主流程性能
- 执行日志仅打印到控制台,不存储数据库
- 支持批量处理,提高处理效率
- 模板引擎支持变量替换和条件过滤