集成端点
本节介绍 Spring Integration 提供的各种通道适配器和消息网关,以支持与外部系统的基于消息的通信。
从 AMQP 到 Zookeeper,每个系统都有其自身的集成要求,本节将对此进行介绍。
端点快速参考表
如前几节所述,Spring Integration 提供了许多用于与外部系统、文件系统等进行接口的端点。
为了透明的依赖管理,Spring Integration 提供了一个 BOM POM,可以导入到 Maven 配置中。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-bom</artifactId>
<version>7.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
回顾一下
-
入站通道适配器用于单向集成,将数据引入消息应用程序。
-
出站通道适配器用于单向集成,将数据从消息应用程序发送出去。
-
入站网关用于双向集成流,其中其他系统调用消息应用程序并接收回复。
-
出站网关用于双向集成流,其中消息应用程序调用某个外部服务或实体并期望结果。
下表总结了各种端点,并提供了到相应章节的快速链接。
| 模块 | 入站适配器 | 出站适配器 | 入站网关 | 出站网关 |
|---|---|---|---|---|
AMQP |
||||
Apache Camel |
否 |
否 |
||
Apache Cassandra |
否 |
否 |
||
Debezium |
否 |
否 |
否 |
|
事件 |
否 |
否 |
||
Feed |
否 |
否 |
否 |
|
文件 |
否 |
|||
FTP(S) |
否 |
|||
GraphQL |
否 |
否 |
否 |
|
Hazelcast |
否 |
否 |
||
HTTP |
||||
JDBC |
否 |
|||
JMS |
||||
JMX |
否 |
|||
JPA |
否 |
|||
Apache Kafka |
||||
邮件 |
否 |
否 |
||
MongoDB |
否 |
否 |
||
MQTT |
否 |
否 |
||
R2DBC |
否 |
否 |
||
Redis |
Redis 入站通道适配器、Redis 队列入站通道适配器、Redis 存储入站通道适配器、Redis 流入站通道适配器 |
Redis 出站通道适配器、Redis 队列出站通道适配器、Redis 存储出站通道适配器、Redis 流出站通道适配器 |
||
资源 |
否 |
否 |
否 |
|
RSocket |
否 |
否 |
||
SFTP |
否 |
|||
SMB |
否 |
|||
STOMP |
否 |
否 |
||
流 |
否 |
否 |
||
Syslog |
否 |
否 |
否 |
|
TCP |
||||
UDP |
否 |
否 |
||
WebFlux |
||||
Web 服务 |
否 |
否 |
||
Web 套接字 |
否 |
否 |
||
XMPP |
否 |
否 |
||
ZeroMQ |
否 |
否 |
此外,正如核心消息传递中所述,Spring Integration 提供了用于与普通 Java 对象 (POJO) 交互的端点。正如通道适配器中所述,<int:inbound-channel-adapter> 元素允许您轮询 Java 方法以获取数据。<int:outbound-channel-adapter> 元素允许您将数据发送到 void 方法。正如消息网关中所述,<int:gateway> 元素允许任何 Java 程序调用消息流。这些都无需对 Spring Integration 产生任何源级别依赖即可工作。在这种情况下,出站网关的等效用法是使用服务激活器(参见服务激活器)来调用返回某种 Object 的方法。
从 5.2.2 版本开始,所有入站网关都可以配置一个 errorOnTimeout 布尔标志,以便在下游流在回复超时期间未返回回复时抛出 MessageTimeoutException。计时器直到线程将控制权返回给网关后才启动,因此通常只有当下游流是异步的,或者由于某个处理程序(例如过滤器)返回 null 而停止时,它才有用。这样的异常可以在 errorChannel 流中处理,例如为请求客户端生成补偿回复。