Skip to content

本地文件连接器

概述

本地文件连接器是 RobustMQ 提供的数据集成组件,用于将 MQTT 消息写入本地文件系统。该连接器简单可靠,适合数据备份、日志记录和离线分析等场景。

配置说明

连接器配置

本地文件连接器使用 LocalFileConnectorConfig 结构进行配置:

rust
pub struct LocalFileConnectorConfig {
    pub local_file_path: String,  // 本地文件路径
}

配置参数

参数名类型必填说明示例
local_file_pathString本地文件的完整路径/var/log/mqtt_messages.log

配置示例

JSON 配置格式

json
{
  "local_file_path": "/var/log/mqtt_messages.log"
}

完整连接器配置

json
{
  "cluster_name": "my_cluster",
  "connector_name": "file_connector",
  "connector_type": "LocalFile",
  "config": "{\"local_file_path\": \"/var/log/mqtt_messages.log\"}",
  "topic_id": "sensor/data",
  "status": "Idle",
  "broker_id": 1,
  "create_time": 1640995200,
  "update_time": 1640995200
}

消息格式

存储格式

本地文件连接器将 MQTT 消息转换为 JSON 格式存储,每个消息占一行。

消息结构

json
{
  "offset": 12345,
  "header": [
    {
      "name": "topic",
      "value": "sensor/temperature"
    },
    {
      "name": "qos",
      "value": "1"
    }
  ],
  "key": "sensor_001",
  "data": "eyJ0ZW1wZXJhdHVyZSI6IDI1LjUsICJodW1pZGl0eSI6IDYwfQ==",
  "tags": ["sensor", "temperature"],
  "timestamp": 1640995200,
  "crc_num": 1234567890
}

字段说明

字段名类型说明
offsetNumber消息偏移量
headerArray消息头信息数组
keyString消息键值
dataString消息内容(Base64 编码)
tagsArray消息标签数组
timestampNumber消息时间戳(秒)
crc_numNumber消息 CRC 校验值

使用 robust-ctl 创建文件连接器

基本语法

使用 robust-ctl 命令行工具可以方便地创建和管理本地文件连接器:

bash
robust-ctl mqtt connector create \
  --connector-name <连接器名> \
  --connector-type <连接器类> \
  --config <> \
  --topic-id <主题ID>

创建本地文件连接器

1. 基本创建命令

bash
# 创建本地文件连接器
robust-ctl mqtt connector create \
  --connector-name "file_connector_01" \
  --connector-type "LocalFile" \
  --config '{"local_file_path": "/var/log/robustmq/mqtt_messages.log"}' \
  --topic-id "sensor/data"

2. 参数说明

参数说明示例值
--connector-name连接器名称,必须唯一file_connector_01
--connector-type连接器类型,固定为 LocalFileLocalFile
--configJSON 格式的配置信息{"local_file_path": "/path/to/file.log"}
--topic-id要监听的 MQTT 主题sensor/data

3. 配置示例

bash
# 创建传感器数据记录连接器
robust-ctl mqtt connector create \
  --connector-name "sensor_logger" \
  --connector-type "LocalFile" \
  --config '{"local_file_path": "/var/log/robustmq/sensor_data.log"}' \
  --topic-id "sensors/+/data"

管理连接器

1. 列出所有连接器

bash
# 列出所有连接器
robust-ctl mqtt connector list

# 列出指定名称的连接器
robust-ctl mqtt connector list --connector-name "file_connector_01"

2. 删除连接器

bash
# 删除指定连接器
robust-ctl mqtt connector delete --connector-name "file_connector_01"

完整操作示例

场景:创建 IoT 传感器数据记录系统

bash
# 1. 创建传感器数据连接器
robust-ctl mqtt connector create \
  --connector-name "iot_sensor_logger" \
  --connector-type "LocalFile" \
  --config '{"local_file_path": "/var/log/robustmq/iot_sensors.log"}' \
  --topic-id "iot/sensors/+/data"

# 2. 创建设备状态连接器
robust-ctl mqtt connector create \
  --connector-name "device_status_logger" \
  --connector-type "LocalFile" \
  --config '{"local_file_path": "/var/log/robustmq/device_status.log"}' \
  --topic-id "iot/devices/+/status"

# 3. 创建告警消息连接器
robust-ctl mqtt connector create \
  --connector-name "alarm_logger" \
  --connector-type "LocalFile" \
  --config '{"local_file_path": "/var/log/robustmq/alarms.log"}' \
  --topic-id "iot/alarms/#"

# 4. 查看创建的连接器
robust-ctl mqtt connector list

# 5. 测试连接器(发布测试消息)
robust-ctl mqtt publish \
  --username "test_user" \
  --password "test_pass" \
  --topic "iot/sensors/temp_001/data" \
  --qos 1 \
  --message '{"temperature": 25.5, "humidity": 60, "timestamp": 1640995200}'

总结

本地文件连接器是 RobustMQ 数据集成系统的重要组成部分,提供了简单可靠的消息持久化能力。通过合理的配置和使用,可以满足数据备份、日志记录和离线分析等多种业务需求。

该连接器充分发挥了 Rust 语言的优势,在保证高性能的同时,提供了内存安全和并发安全的特性,是构建可靠 IoT 数据管道的重要工具。