如何在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 │
          └────────┘ └──────────┘
相关推荐
原来是好奇心2 天前
告别if-else!使用策略模式优雅处理多种MQTT消息类型
java·mqtt·设计模式·策略模式·emqx
庸了个白6 天前
一种面向 AIoT 定制化场景的服务架构设计方案
mqtt·设计模式·系统架构·aiot·物联网平台·动态配置·解耦设计
技术旅人8 天前
MQTT物联网消息队列的概念介绍以及broker选型对比
物联网·mqtt
千里马-horse17 天前
HTTP、WebSocket、XMPP、CoAP、MQTT、DDS 六大协议在机器人通讯场景应用
mqtt·websocket·http·机器人·xmpp·coap·fastdds
柱子jason1 个月前
使用IOT-Tree Server通过FINS协议连接欧姆龙CP2E-N系列PLC
物联网·mqtt·工业自动化·欧姆龙plc·iot-tree·数据推送
想当程序猿的凯旋大大1 个月前
【无标题】
mqtt·frp·群晖·nas·ws·wss·樱花穿透
柱子jason1 个月前
使用IOT-Tree消息流MQTT模块节点实现监测数据推送功能
物联网·mqtt·边缘计算·iot-tree·数据推送
余衫马1 个月前
开发指南:使用 MQTTNet 库构建 .Net 物联网 MQTT 应用程序
物联网·mqtt·.net