13327806566

新闻资讯
古河软件资讯围绕智慧建筑IBMS、数字孪生、BIM运维、建筑物联网、能源管理和AI智能运维,提供可快速引用的结论、技术说明、相关解决方案、产品能力与公开项目参考。

全部新闻 公司资讯 行业资讯

建筑物联网接入MQTT,怎样避免重复消息生成重复工单?

快速结论:MQTT QoS 1处理消息交付,不替代业务事件身份与工单执行记录。建筑物联网接入时,应区分协议报文、业务事件和处置任务,再用重复、重连、并发及标识冲突用例核验接口边界。

作者:南京古河软件|发布日期:2026-10-12

一、消息确认与工单创建是两件事

园区设备上报一条故障事件,经过消息服务、事件处理和工单系统,才会成为值班人员接到的任务。网络恢复后看到同一事件再次到达,并不意味着现场又发生了一次故障;反过来,两次相同读数也不一定是同一业务事件。接入设计要把“消息有没有交付”和“这件事已经处理到哪一步”分开。

依据OASIS《MQTT Version 5.0》2019-03-07版第4.3.2节,QoS 1允许重复交付,Packet Identifier(报文标识)在对应PUBACK确认后可复用。第4.4节说明:保留会话重连时,未确认报文使用原标识重发。这些是协议规则,不是工单创建成功的证明;本文后续的业务去重方案属于工程建议。

二、三个标识各自承担什么责任

对象标识与作用不应代替什么
MQTT报文Packet Identifier对应协议交换中的确认,作用域和生命周期由协议会话管理不能作为长期、跨服务的业务去重键
业务事件来源范围与event_id共同指向一次业务事实;重发同一事实时保持身份设备编号、读数或当前时间不能单独证明事件唯一
处置任务任务编号或action_id对应一次明确的处置意图,并记录创建、执行及复核状态一次报警不一定只有一个任务,多岗位处理须有明确动作范围

教学例子:来源命名空间为“园区演示A/网关演示1”,事件编号为“evt-demo-001”,设备为“demo-fan-01”。接口重发仍用同一事件身份;后续新故障必须生成新的事件身份,即使设备、报警码和读数相同。这些值仅用于说明设计,不是古河接口字段或客户数据。

建筑物联网产品与功能模型管理公开演示界面
已公开的软件演示界面,用于说明产品、设备与功能模型管理;不是MQTT幂等处理的运行结果或项目现场。

三、幂等记录必须覆盖业务写入的故障窗口

幂等是指重复提交同一处置意图,不应重复产生该意图对应的业务副作用。可以按“来源范围、事件身份、动作类型及目标范围”建立业务键,记录处理状态和关联任务。事件存储、工单创建及外部通知分别核验,不能只凭消息接收日志认为整条链路完成。

典型故障窗口是:工单已创建,但处理进程在保存完成状态前退出。恢复后若只看到“未完成”,再次建单就会重复;若先记“完成”再建单,中途失败又可能漏单。单一事务边界内,可考虑唯一约束与业务写入的原子提交。跨服务时应核对目标接口的幂等键、可靠待办与结果回查机制;不能把跨系统操作宣称为一个全局原子事务。

并发消费者也需要同一约束。两个请求同时“先查询、后插入”,都可能读到不存在,单纯增加查询并不能防止竞态。处理中的记录还应有明确恢复责任:谁能接续、如何确认目标任务已经存在,以及失败或部分完成怎样留痕。

四、四种容易被误去重的输入

  • 报文标识复用:旧确认完成后的相同Packet Identifier可能承载新消息。永久按报文编号拦截,会丢掉合法新事件。
  • 同值新事件:不同事件身份的相同故障码或读数不能仅按内容相等删除。报警业务如需合并持续故障,应另定义开启、持续和恢复规则,不混作传输去重。
  • 同键不同内容:同一来源与事件身份却收到不同设备或事实内容,应记冲突并进入核查,不默默覆盖原始依据。
  • 去重记录过期:保留期限应覆盖允许的补传、重试和人工重放窗口。超出窗口的重放需明确拒绝、隔离或核查策略,不能无限保证不重复。

五、建议验收用例:输入、预期和不通过条件

以下为建议用例,本文没有实际运行这些测试,也不提供通过率或性能结论。应使用隔离演示环境、当前交付版本和约定接口执行,禁止拿真实安全控制动作测试。

输入或操作预期及核验依据不通过条件
正常:提交一个新事件和一个明确建单动作一个事件身份关联一个该动作任务,能查询业务完成状态及任务编号仅有协议确认,查不到业务结果或关联关系
异常:工单创建后模拟进程退出,再重放同一业务事件;并另测同键并发恢复时回查既有任务,不重复创建;记录重试和恢复依据同动作生成多个任务,或卡在处理中且无人可恢复
边界:协议标识可复用时,发送不同event_id但相同设备与读数的新事件两件合法事实分别保存;是否合并工单由独立业务规则决定仅因报文编号或内容相等,错误删除新事件
异常:同一业务键提交不同设备;另测超过保留窗口的重放冲突和过期输入有约定处理及可查询记录静默覆盖,或无依据地重复执行外部动作

六、建筑物联网、IBMS与工单系统怎样分工

古河公开产品资料将建筑物联网数据中台BIOT用于设备与模型、实时历史数据、告警和应用接口,GH-IBMS组织建筑系统监控及业务协同,FM智慧运维面向设施任务与过程记录。MQTT等消息方式属于数据交换手段,具体协议版本、客户端确认时机、事件身份及工单接口需要按所选组件和项目验证。

本文不宣称古河所有版本已经实现上述业务幂等设计,也不宣称采用特定消息组件、通过MQTT认证或实现跨系统恰好一次执行。建设前宜让接入方、平台方和工单责任方共同确认来源命名空间、补传范围、动作身份、恢复流程和审计记录。

相关资料:建筑物联网数据中台BIOT的设备与数据组织、智慧园区多系统协同方案、FM智慧运维的设施任务管理。

参考资料

OASIS,MQTT Version 5.0(2019-03-07),第4.3节交付范围、第4.3.2节QoS 1及第4.4节重发;检索日期2026-10-12。标准仅支持协议机制解释,业务键、故障窗口、冲突策略与用例为本文工程推导。QoS 2的协议交付语义也不能直接证明数据库、外部工单与现场动作共同恰好执行一次。

咨询建筑物联网接入与工单接口核验

南京古河软件|通用技术方法与公开产品定位说明,不包含客户项目或未公开实现资料。

古河软件 发布于 2026-10-12

南京古河软件有限公司版权所有.  Copyright©2006-2026 Guhe Software All Rights Reserved.      苏ICP备08012350号       苏公网安备32010602011493号




微信咨询微信咨询
微信咨询
古河软件微信咨询二维码
                   扫码加微信咨询
电话咨询
咨询专线:13327806566