Spring Integration 完整笔记 + 和 spring-integration-mqtt、Paho、EMQX 的关系
-
- [一、Spring Integration 是什么](#一、Spring Integration 是什么)
-
- 一句话定义
- [Spring Integration 的核心组件(通用组件,不是MQTT专属)](#Spring Integration 的核心组件(通用组件,不是MQTT专属))
- 二、各个组件层级关系(由底层到上层)
- 三、完整消息流转(串起所有组件)
- 四、关键区分(容易混淆的点)
- 五、学习思路补充
- 六、速记口诀
一、Spring Integration 是什么
一句话定义
Spring Integration 是 Spring 生态下的企业级消息集成框架,核心思想:消息驱动,用统一的消息模型,把不同外部系统接入应用,做数据流转。
它基于 EIP(Enterprise Integration Patterns,企业集成模式),也就是经典的企业系统集成设计模式(消息通道、适配器、过滤器、路由、转换器、处理器等)。
核心概念:Message(消息)
统一消息模型,结构固定:
Message = MessageHeaders(消息头:元数据) + payload(消息体,实际数据)不管外部来源是MQTT、HTTP、文件、数据库、RabbitMQ,进入Spring Integration之后,全部统一包装成这个Message对象。
Spring Integration 的核心组件(通用组件,不是MQTT专属)
- Message:统一消息载体
- MessageChannel 消息通道:消息在组件之间传递的管道,类似队列。上游组件把Message丢进channel,下游从channel拿消息。
- Adapter 适配器 :外部系统和Spring Integration内部消息流水线的桥梁
-
InboundAdapter 入站适配器:外部系统 → 流入Spring应用(收数据)
-
OutboundAdapter 出站适配器:Spring应用 → 发送到外部系统(发数据)

-
入站链路(Inbound,收消息)
外部系统→【原始协议报文】→InboundAdapter(1). InboundAdapter 和外部系统建立连接(MQTT 就用 Paho 底层)
(2). 接收外部原始数据(MQTT payload、topic 等)
(3). 适配器做协议转换 :把外部原始数据,包装成 Spring Integration 标准
Message(MessageHeaders + payload)(4). 将标准 Message 投递到内部
MessageChannel消息通道(5). 消息通道把 Message 交给下游组件(路由、转换器、MessageHandler 执行业务)
一句话:InboundAdapter 负责【接入、接收、协议转 SI 标准 Message】
出站链路(Outbound,发消息)SI 内部组件处理完 →
MessageChannel→OutboundAdapter→【外部协议报文】→外部系统(1). 业务处理完成后,生成 Spring Integration 标准
Message(2). Message 通过消息通道送到 OutboundAdapter
(3). 适配器反向协议转换 :把 SI 的标准 Message,拆包转换成外部系统能识别的协议报文
(4). 通过底层客户端(MQTT 场景就是 Paho)发送给外部系统(EMQX Broker)
一句话:OutboundAdapter 负责【把 SI 的 Message,转成外部协议并发送出去】
- MessageHandler 消息处理器:消息通道下游,拿到Message做处理、转换、路由、业务逻辑。
- 其他:消息路由器、转换器、过滤器、聚合器(EIP模式组件)
重点:Spring Integration本身并不内置MQTT能力 !
Spring Integration只是一套通用消息流水线框架。想要对接MQTT,需要单独的扩展模块:spring-integration-mqtt
二、各个组件层级关系(由底层到上层)
【最外部】EMQX(MQTT Broker消息服务器)
↑↓ MQTT协议(TCP)
【底层客户端】Eclipse Paho Java Client(原生MQTT客户端,处理TCP、心跳、重连、MQTT报文)
↑↓
【Spring集成扩展模块】spring-integration-mqtt
→ 它是Spring Integration的一个**适配器扩展包**,封装Paho,提供 MQTT InboundAdapter / MQTT OutboundAdapter
↑↓
【核心框架】Spring Integration(通用消息流水线框架,定义Message、MessageChannel、MessageHandler这套消息模型)
↑↓
【业务代码】自定义 MessageHandler(我们自己写业务逻辑,解析消息、分流、执行业务)
层级拆解讲解
-
Eclipse Paho
纯底层MQTT客户端,和Spring无关,只懂MQTT协议。
缺点:没有统一消息模型,断线重连、订阅、回调都要手写。
-
spring-integration-mqtt
✅ 属于Spring Integration生态的扩展模块(adapter实现)
✅ 底层调用Paho
✅ 实现了Spring Integration规范的
InboundAdapter作用:把Paho收到的原生MQTT消息,转成Spring Integration标准
Message,丢进消息通道。一句话:spring-integration-mqtt = MQTT专用适配器实现,是Spring Integration众多适配器中的其中一种(还有ftp、jdbc、http、rabbit等适配器)
-
Spring Integration(父框架)
定义整套消息流水线规范:Message、通道、适配器、处理器。
spring-integration-mqtt写的MQTT适配器,必须遵守Spring Integration定义的这套接口规范 。
不管你接入MQTT还是RabbitMQ,在框架内部,消息都是同一个Message对象,下游MessageHandler写法逻辑统一。
-
自定义MessageHandler
属于Spring Integration下游组件,是我们业务开发写的代码。
从消息通道拿到框架传过来的Message,做解析、分流业务。
注意:这个MessageHandler是Spring Integration接口的MessageHandler,不是MQTT专属。
三、完整消息流转(串起所有组件)
仿真设备(MQTT发布者) → EMQX Broker
→ spring-integration-mqtt 的 MQTT InboundAdapter
-
InboundAdapter底层用Paho建立MQTT长连接,订阅主题,接收MQTT消息
-
将原生Paho消息(payload、topic、qos)封装成 Spring Integration Message
→ 把Message放入 MessageChannel(消息通道)
→ 消息通道把Message交给下游 自定义MessageHandler
→ MessageHandler解析payload,按主题/消息类型分流,执行业务
四、关键区分(容易混淆的点)
-
Spring Integration ≠ MQTT客户端
Spring Integration是通用消息流水线框架 ,可以对接各种中间件/外部系统。
spring-integration-mqtt只是它众多外接适配器的其中一个。
类似:Spring Integration是水管系统;spring-integration-mqtt是接入MQTT的一个水管接头;Paho是接头里面的底层通信零件。
-
InboundAdapter 不是Spring Integration独有概念,是EIP通用概念
spring-integration-mqtt提供的是MQTT实现版本的InboundAdapter 。
Spring Integration还有别的InboundAdapter:比如FileInboundAdapter读文件、HttpInboundAdapter接收http请求。
-
MessageHandler是Spring Integration的通用接口
不管消息来源是MQTT、文件还是HTTP,下游都可以用MessageHandler处理消息。
我们写的业务处理器,实现的就是Spring Integration的MessageHandler接口。
五、学习思路补充
- Spring Integration:重点理解 EIP思想 + Message+MessageChannel+Adapter+MessageHandler这套消息模型,不用死记所有组件。
- spring-integration-mqtt:是Spring Integration的MQTT适配器扩展,底层封装Paho。开发时只用这个模块,不直接操作Paho原生API。
- Paho:MQTT底层协议客户端,只用来理解原理,业务代码不直接使用。
- EMQX:MQTT Broker,消息中转服务器,和Spring无关,只是MQTT服务端。
六、速记口诀
Spring Integration是通用消息流水线,遵循EIP;
spring-integration-mqtt是它的MQTT适配器扩展,底层封装Paho;
InboundAdapter接收MQTT消息转为统一Message;
MessageChannel传递消息,MessageHandler执行业务;
EMQX是MQTT服务端,负责消息转发。