76 lines
1.9 KiB
Markdown
76 lines
1.9 KiB
Markdown
|
# 异步MQTT服务安装指南
|
|||
|
|
|||
|
## 依赖安装
|
|||
|
|
|||
|
为了使用高性能的异步MQTT服务,需要安装额外的依赖:
|
|||
|
|
|||
|
```bash
|
|||
|
pip install aiomqtt
|
|||
|
```
|
|||
|
|
|||
|
## 配置说明
|
|||
|
|
|||
|
系统会自动检测是否安装了 `aiomqtt`:
|
|||
|
|
|||
|
- **如果已安装 aiomqtt**:系统将使用异步MQTT客户端,提供更好的并发性能
|
|||
|
- **如果未安装 aiomqtt**:系统会回退到同步MQTT客户端,但包装为异步接口
|
|||
|
|
|||
|
## 性能对比
|
|||
|
|
|||
|
### 异步MQTT服务优势:
|
|||
|
1. **高并发处理**:可以同时处理大量设备的消息
|
|||
|
2. **非阻塞IO**:消息处理不会阻塞其他操作
|
|||
|
3. **更好的资源利用**:减少线程开销
|
|||
|
4. **自动重连**:内置连接管理和自动重连机制
|
|||
|
|
|||
|
### 适用场景:
|
|||
|
- 大量设备同时连接(>50个设备)
|
|||
|
- 高频率消息传输(>100消息/秒)
|
|||
|
- 对延迟敏感的应用
|
|||
|
- 需要可靠连接管理的场景
|
|||
|
|
|||
|
## 使用方法
|
|||
|
|
|||
|
系统会自动选择最佳的MQTT服务:
|
|||
|
|
|||
|
```python
|
|||
|
# 设备处理服务会自动使用异步MQTT(如果可用)
|
|||
|
from services.online_script.device_handler_service import get_device_service
|
|||
|
|
|||
|
device_service = get_device_service()
|
|||
|
await device_service.start_service()
|
|||
|
```
|
|||
|
|
|||
|
## 监控和调试
|
|||
|
|
|||
|
可以通过以下方式检查MQTT服务状态:
|
|||
|
|
|||
|
```python
|
|||
|
# 获取连接信息
|
|||
|
connection_info = device_service.registry.mqtt_service.get_connection_info()
|
|||
|
print(f"异步模式: {connection_info['async_mode']}")
|
|||
|
print(f"连接状态: {connection_info['connected']}")
|
|||
|
print(f"订阅主题: {connection_info['subscribed_topics']}")
|
|||
|
```
|
|||
|
|
|||
|
## 故障排除
|
|||
|
|
|||
|
### 1. 如果aiomqtt安装失败
|
|||
|
```bash
|
|||
|
# 尝试升级pip
|
|||
|
pip install --upgrade pip
|
|||
|
pip install aiomqtt
|
|||
|
|
|||
|
# 或者使用conda安装
|
|||
|
conda install -c conda-forge aiomqtt
|
|||
|
```
|
|||
|
|
|||
|
### 2. 如果连接问题
|
|||
|
- 检查MQTT服务器配置
|
|||
|
- 确认网络连接
|
|||
|
- 查看日志中的错误信息
|
|||
|
|
|||
|
### 3. 性能问题
|
|||
|
- 监控CPU和内存使用
|
|||
|
- 检查消息处理频率
|
|||
|
- 考虑调整MQTT配置参数
|