根据DDD架构设计实现了OPC(运维客户端)消息处理功能,完成了从Python版本到Java版本的迁移。
OPC消息处理功能主要处理来自运维客户端的请求,包括:
这些功能在Python版本中通过deal_opc_msg
函数处理,现在已经按照DDD架构在Java版本中重新实现。
遵循DDD设计原则,代码分为以下几层:
AlarmConfigService
- 告警配置服务接口,定义了管理告警配置的领域行为AlarmConfigServiceImpl
- 告警配置服务实现,处理告警参数的获取和更新Device
实体,添加了updateAlarmConfig
方法,支持更新设备的告警配置OpcService
- 运维客户端服务接口,定义了处理OPC消息的应用服务OpcServiceImpl
- 运维客户端服务实现,处理OPC消息并调用领域服务OpcMessageSubscriber
- OPC消息订阅者,订阅和处理OPC相关的MQTT消息MqttGateway
接口,添加了发送告警参数响应和确认的方法MqttGatewayImpl
中的新方法,发送MQTT响应消息获取告警参数:
/opc/get_alarm_param
主题OpcMessageSubscriber
接收消息并调用OpcService.handleGetAlarmParam
OpcServiceImpl
调用领域服务AlarmConfigService.getGlobalAlarmConfig
获取配置MqttGateway.sendAlarmParamResponse
发送响应设置告警参数:
/opc/set_alarm_param
主题,包含新的参数值OpcMessageSubscriber
接收消息并调用OpcService.handleSetAlarmParam
OpcServiceImpl
解析请求并调用AlarmConfigService.updateGlobalAlarmConfig
更新配置AlarmConfigService
更新全局配置并通过applyGlobalConfigToAllDevices
应用到所有设备MqttGateway.sendSetAlarmParamAck
发送确认响应Java版本与Python版本的主要区别:
架构差异:
消息处理:
配置管理:
运维客户端可以通过以下方式使用这些功能:
获取告警参数:
// 发送到 /opc/get_alarm_param
{}
设置告警参数:
// 发送到 /opc/set_alarm_param
{
"global": {
"retention_time": 60000,
"retention_keep_time": 30000,
"retention_alarm_time": 180000
}
}