OPC消息处理功能实现说明.md 3.2 KB

OPC消息处理功能实现

根据DDD架构设计实现了OPC(运维客户端)消息处理功能,完成了从Python版本到Java版本的迁移。

功能简介

OPC消息处理功能主要处理来自运维客户端的请求,包括:

  1. 获取告警参数 - 获取系统中配置的全局告警参数
  2. 设置告警参数 - 更新系统的全局告警参数,并应用到所有设备

这些功能在Python版本中通过deal_opc_msg函数处理,现在已经按照DDD架构在Java版本中重新实现。

架构设计

遵循DDD设计原则,代码分为以下几层:

1. 领域层 (Domain Layer)

  • AlarmConfigService - 告警配置服务接口,定义了管理告警配置的领域行为
  • AlarmConfigServiceImpl - 告警配置服务实现,处理告警参数的获取和更新
  • 扩展了Device实体,添加了updateAlarmConfig方法,支持更新设备的告警配置

2. 应用层 (Application Layer)

  • OpcService - 运维客户端服务接口,定义了处理OPC消息的应用服务
  • OpcServiceImpl - 运维客户端服务实现,处理OPC消息并调用领域服务

3. 基础设施层 (Infrastructure Layer)

  • OpcMessageSubscriber - OPC消息订阅者,订阅和处理OPC相关的MQTT消息
  • 扩展了MqttGateway接口,添加了发送告警参数响应和确认的方法
  • 实现了MqttGatewayImpl中的新方法,发送MQTT响应消息
  • 配置了OPC消息的MQTT通道和消息处理器

消息流程

  1. 获取告警参数

    • 客户端发送请求到/opc/get_alarm_param主题
    • OpcMessageSubscriber接收消息并调用OpcService.handleGetAlarmParam
    • OpcServiceImpl调用领域服务AlarmConfigService.getGlobalAlarmConfig获取配置
    • 通过MqttGateway.sendAlarmParamResponse发送响应
  2. 设置告警参数

    • 客户端发送请求到/opc/set_alarm_param主题,包含新的参数值
    • OpcMessageSubscriber接收消息并调用OpcService.handleSetAlarmParam
    • OpcServiceImpl解析请求并调用AlarmConfigService.updateGlobalAlarmConfig更新配置
    • AlarmConfigService更新全局配置并通过applyGlobalConfigToAllDevices应用到所有设备
    • 通过MqttGateway.sendSetAlarmParamAck发送确认响应

与Python版本的比较

Java版本与Python版本的主要区别:

  1. 架构差异

    • Python版本使用过程式编程,功能集中在少数函数中
    • Java版本使用DDD架构,将功能分散到不同层次的服务和实体中
  2. 消息处理

    • Python版本直接在消息处理函数中修改全局配置
    • Java版本通过应用服务和领域服务处理消息和配置管理
  3. 配置管理

    • Python版本使用全局变量和锁管理配置
    • Java版本使用领域服务和Spring配置管理配置

使用示例

运维客户端可以通过以下方式使用这些功能:

  1. 获取告警参数

    // 发送到 /opc/get_alarm_param
    {}
    
  2. 设置告警参数

    // 发送到 /opc/set_alarm_param
    {
     "global": {
       "retention_time": 60000,
       "retention_keep_time": 30000,
       "retention_alarm_time": 180000
     }
    }