定位在平台侧
AMQP 的设计目标是企业级消息中间件:交换与队列提供多种路由方式,支持可靠投递、事务与流控,能承载较大体量的消息。在物联网体系里它多出现在后端环节——接入层把数据汇总后通过它进入业务系统,或者云服务之间用它做集成,而设备侧通常选择更轻的协议。
环节适配对照
| 环节 | 是否适合 | 原因 |
|---|---|---|
| 受限设备接入 | 不适合 | 协议实现与内存开销大,长连接与心跳成本高 |
| 平台内部集成 | 适合 | 路由灵活,可靠投递与流控机制完善 |
| 与企业系统对接 | 适合 | 企业集成生态成熟,消息语义清晰 |
| 海量小报文上报 | 谨慎 | 每条消息的确认与持久化开销较高 |
关键概念
| 交换与队列 | 生产者把消息交给交换,由绑定规则路由到一个或多个队列 |
|---|---|
| 路由键 | 决定消息进入哪些队列的依据,是路由设计的核心 |
| 确认机制 | 消费或投递确认决定消息何时可从队列移除 |
| 流控 | 用信用额度控制发送速率,避免接收端被压垮 |
| 死信处理 | 无法投递或被拒的消息进入死信队列,便于排查 |
| 版本差异 | 不同大版本的消息模型差别明显,对接前必须确认目标端支持的特性 |
典型使用场景
- 接入层到业务系统:把设备数据以消息形式分发到多个消费方
- 与企业系统集成:与既有消息中间件生态对接,减少自研适配
- 削峰与解耦:用队列缓冲突发流量,保护后端处理能力
- 可靠投递场景:需要确认与重投语义时优先考虑消息中间件
选型时要先确认版本与实现:不同版本对路由、确认与事务的支持差别较大,同一名称的特性在不同实现上的语义也可能不一致。
队列不设长度上限与死信策略时,消费停滞会让消息持续堆积直到耗尽存储,故障从消费侧扩散到整个平台。