如何在ISA-95系统中采用Apache Camel + MQTT Broker衔接L3与L4 Legacy应用

一、架构背景:典型ISA-95 IT/OT项目场景

层级 主要职责 当前演进形态
L4 企业层(ERP / Legacy / APS / PLM / CRM 等) 计划、调度、订单、供应链 仍有大量 Legacy 系统(HTTP、SOAP、文件接口)
L3 制造运营管理层(MOM / MES / 执行智能层) 执行、协调、追溯、数据整合、事件驱动调度 不完全等同于 MES,而是一个事件驱动的分布式调度总线(MOM 层)
L2-L1 控制与过程设备层 通过 MQTT / OPC UA / Edge Data Hub 连接上送数据

二、问题和对策

传统上,L4→L3 的通信是 同步的 (SOAP、REST、DB接口),而 L3→L2 则是 实时的 。

这两种通信范式在现代智能工厂里产生"节拍不匹配"问题。Apache Camel + MQTT 的组合恰好可以起到一个"语义桥接 + 协议转译 + 异步解耦"的作用。


三、系统角色划分

1️⃣ Apache Camel ------ 企业集成层(EAI/ESB 模块)

  • 用作 L4 Legacy 系统的集成中间件;

  • 提供超过 300 种组件(HTTP、SOAP、JDBC、FTP、File、JMS、SAP 等);

  • 能够通过路由 DSL定义复杂的业务流程、过滤规则、映射逻辑;

  • 支持 内容路由(Content-Based Routing) 与 消息变换(Transformation);

  • 可内嵌运行于 Spring Boot、Quarkus、Kubernetes 中。

2️⃣ MQTT Broker ------ L3 事件总线 / UNS 主干

  • 作为 制造执行语义事件总线(Manufacturing Event Bus);

  • 每个主题(Topic)代表一个 业务对象或事件域(如 Order、Batch、Resource、Event);

  • 与 UNS(统一命名空间)结合使用,可实现 主题级语义一致性;

  • 与 L2-L1 的 Edge Node 协同,实现实时状态上传与下发。


四、集成模式(核心)

模式:Apache Camel ↔ MQTT Broker ↔ L3 语义层

① Camel 路由逻辑(L4 → L3)

复制代码
ERP (SOAP/XML)
   ↓
Camel Route
   ↓  转换为 JSON + MQTT Topic
MQTT Broker (Topic: /uns/order/new)
   ↓
L3 MOM (订阅Topic并触发流程)

Camel DSL 示例(非代码实例):

复制代码
from("sap:erp:orders?operation=GetNewOrders")
  .process(exchange -> {
      Map order = transformToUNSFormat(exchange.getIn().getBody());
      exchange.getIn().setBody(order);
  })
  .to("paho-mqtt5:uns/order/new?brokerUrl=tcp://mqtt-broker:1883");

② L3 → L4 回执路径

复制代码
L3 MOM 完成 → MQTT 发布 /uns/order/ack
   ↓
Camel Route 监听该主题
   ↓
写入 ERP (JDBC / SOAP / HTTP)

Camel DSL 示例(非代码实例):

复制代码
from("paho-mqtt5:uns/order/ack?brokerUrl=tcp://mqtt-broker:1883")
  .to("jdbc:legacyERPDataSource");

五、主题设计与 UNS 对齐

主题(Topic) 说明 对应 UNS 实体
uns/order/new 新订单发布 Order
uns/order/ack 订单回执 Event
uns/resource/status 设备状态上报 Resource
uns/batch/start 批次开始事件 Batch
uns/batch/end 批次结束事件 Batch/Event

每个主题的元数据(Schema、QoS、语义标签)应注册在 UNS Registry 中,

Camel 路由在启动时可自动加载这些定义以动态绑定。


六、与 S95 模型对齐的语义层逻辑

S95 对象层级 在本架构中的体现 通信模式
Enterprise / Site ERP / APS / PLM(通过 Camel) HTTP/SOAP → MQTT
Area / WorkCenter / WorkUnit MOM / Dispatch / Recipe Service MQTT 内部订阅
Equipment / Control Module Edge Node / PLC / Agent MQTT / OPC UA PubSub

七、系统优点总结

类别 优点
架构解耦 L4 与 L3 通过 MQTT 异步通信,Legacy 系统无需改造
协议多样性兼容 Camel 支持 SAP、HTTP、File、DB 等任意接口
语义统一 借助 UNS 命名体系保持跨系统的 Topic 与对象一致
事件驱动 L3 层的制造执行由事件触发,天然支持扩展与分析
易于云化 Camel、MQTT 均支持容器化与云原生部署

八、典型部署形态(简图)

复制代码
          ┌────────────┐
          │ Legacy ERP │
          └─────┬──────┘
                │ SOAP/HTTP/JDBC
          ┌─────▼──────┐
          │ Apache Camel│
          │ (EAI Bridge)│
          └─────┬──────┘
                │ MQTT Publish/Subscribe
          ┌─────▼──────┐
          │ MQTT Broker │  ←→  UNS Registry
          └─────┬──────┘
                │
          ┌─────▼────────────┐
          │ L3 MOM / EventBus│
          │ (Dispatch, Trace,│
          │  Analytics, eBR) │
          └─────┬──────┬────┘
                │       │
          ┌─────▼──┐ ┌─▼───────┐
          │ Edge GW│ │ OPC UA   │
          │/Agent  │ │PubSub L2 │
          └────────┘ └──────────┘
相关推荐
IT规划师2 天前
MQTT 生产实战 - 用了 8 年 MQTT,我为什么还要重新系统啃一遍(一)
物联网·mqtt·.net10
ab1237682 天前
MQTT笔记
java·笔记·mqtt·学习
智码看视界5 天前
Edge AI 全栈实战 ⑤:云边协同收尾——MQTT 桥接 + 云端看板管 N 台边缘设备
mqtt·flask·iot·全栈开发·云边协同·edgeai
J_bean5 天前
多实例 MQTT 消费下「累计差值」重复累加问题与消息级幂等去重
mqtt·幂等去重·消息去重
荣合技术服务13 天前
EMQX mqtt在 Windows 系统上的安装教程
windows·mqtt·emqx
J_bean16 天前
IOT接入层-阐述物联网四种设备接入方式
mqtt·iot·设备接入·设备直连·网关透传
程序媛之Lemon16 天前
FluxMQ|面向海量终端的云原生MQTT物联网网关
物联网·mqtt
SL-staff23 天前
MQTT Topic权限越界排查指南:JVS-IOT中系统Topic与自定义Topic的鉴权机制与实操验证
mqtt·嵌入式开发·权限控制·物联网开发·协议分析·鉴权机制·jvs-iot
StevenSurpass1 个月前
打印业务彻底解耦:FastPrintAgent 统一 JSON 模型 + FastReport 引擎的设计与落地
mqtt·http·中间件·打印·fastreport
物联网IoT小易1 个月前
物联网设备数据异常怎么处理?重复、乱序、断点续传与脏数据治理
物联网·mqtt·数据治理·时序数据库·物联网设备·物联网设备接入·物联网设备连接