本项目实现配网中压开关变位信号消息订阅服务,基于 RabbitMQ 消息队列提供可靠的消息传递能力,支持消息生产、消费和数据库存储。
lyg-api/ ├── README.md # 本文件 ├── main.py # 主程序入口 ├── requirements.txt # Python依赖 ├── .gitignore # Git忽略文件 ├── docs/ # 详细文档 │ ├── README.md # 数据库集成文档 │ ├── 接口实现设计方案.md # 架构设计方案 │ ├── 数据库文档.md # 数据库说明 │ ├── 服务器.md # 服务器配置 │ ├── 消费者文档.md # 消费者使用指南 │ ├── 生产者文档.md # 生产者项目总结 │ └── 接口文档/ # API接口文档 │ ├── creater/ # 消息生产者模块 │ ├── __init__.py │ ├── config_rabbitmq.py # RabbitMQ配置 │ ├── demo_rabbitmq.py # 演示脚本 │ ├── rabbit_mq_producer.py # RabbitMQ生产者 │ ├── test_rabbitmq.py # 测试脚本 │ └── fake_producers/ # 假消息生产者 │ ├── __init__.py │ ├── base.py # 基础生产者类 │ ├── switch_state.py # 开关状态消息 │ ├── switch_protect.py # 开关保护消息 │ ├── discrete_info.py # 中压设备遥信 │ ├── low_voltage_discrete.py # 低压设备遥信 │ └── low_voltage_abnormal.py # 低压设备异常 │ ├── mq-consumer/ # 消息消费者 │ ├── README.md # 消费者使用指南 │ ├── config_rabbitmq.py # RabbitMQ配置 │ ├── rabbit_mq_consumer.py # 消费者主程序 │ └── database/ # 数据库模块 │ ├── database.py # 数据库操作 │ ├── init/ # 数据库初始化 │ └── messages.db # SQLite数据库文件 │ ├── deploy/ # 部署文件 └── venv/ # Python虚拟环境
| 生产者文件 | 队列名称 | 消息类型 | 说明 |
|---|---|---|---|
switch_state.py | rmc_forward_medium_switch_state | 开关状态消息 | 开关变位信号 |
switch_protect.py | rmc_forward_medium_switch_protect | 开关保护消息 | 保护动作信号 |
discrete_info.py | rmc_forward_medium_discrete_info | 中压设备遥信 | 实时遥信信息 |
low_voltage_discrete.py | rmc_forward_low_voltage_discrete | 低压设备遥信 | 低压设备状态 |
low_voltage_abnormal.py | rmc_forward_low_voltage_abnormal | 低压设备异常 | 运行异常信息 |
消费者从5个队列接收消息,解析JSON并保存到SQLite数据库。
数据库设计(简化版):
CREATE TABLE messages (
id INTEGER PRIMARY KEY AUTOINCREMENT,
mq_name TEXT NOT NULL, -- 消息队列名称
message_json TEXT NOT NULL, -- 完整的JSON消息
created_at DATETIME DEFAULT CURRENT_TIMESTAMP -- 创建时间
);
核心功能:
mq-consumer/database/messages.dbdocker run -d -p 5672:5672 rabbitmqpip install pika faker
cd /home/zhong/projects/lyg-api/mq-consumer
python rabbit_mq_consumer.py
# 方式1:使用主程序(随机发送不同类型消息)
cd /home/zhong/projects/lyg-api
python main.py
# 方式2:运行演示脚本
cd /home/zhong/projects/lyg-api/creater
python demo_rabbitmq.py
# 查看队列状态
rabbitmqctl list_queues
# 访问管理界面
# http://localhost:15672 (guest/guest)
参考详细文档:数据库集成文档
{
"dataClass": "0",
"operateType": "Subscribe_emergency",
"dataGroup": "253038",
"dataType": "SwitchDiscrete",
"messageId": "UUID",
"queueName": "rmc_forward_medium_switch_state",
"payload": [
{
"switchId": "40位十六进制ID",
"switchName": "10kV北京主干线#168杆开关",
"switchType": "0305",
"currentStatus": "0|1",
"value": "01|10",
"displaceTime": "2025-12-09 10:30:45",
"devDetail": [...],
"source": "1|2|3"
}
]
}
| 消息类型 | dataType | 队列名称 | 说明 |
|---|---|---|---|
| 开关变位信号 | SwitchDiscrete | rmc_forward_medium_switch_state | 开关状态变化消息 |
| 开关保护动作 | SwitchAction | rmc_forward_medium_switch_protect | 开关保护动作消息 |
| 中压设备遥信 | DiscreteInfo | rmc_forward_medium_discrete_info | 中压设备实时遥信 |
| 低压设备遥信 | LowVoltageDiscrete | rmc_forward_low_voltage_discrete | 低压设备实时遥信 |
| 低压设备异常 | LowVoltageAbnormal | rmc_forward_low_voltage_abnormal | 低压设备运行异常 |
creater/config_rabbitmq.pymq-consumer/config_rabbitmq.py详细配置说明请参考:
mq-consumer/test_*.pycreater/test_rabbitmq.py详细测试方法请参考:
服务配置文件位于 deploy/ 目录:
lyg-api-mq-producer.service - Systemd服务配置详细部署说明请参考:
deploy/INSTALL.md详细使用说明请参考各模块文档。
快速导航:
祝您使用愉快! 🎉