集成端点

本节介绍 Spring Integration 提供的各种通道适配器和消息网关,以支持与外部系统的基于消息的通信。

从 AMQP 到 Zookeeper 的每个系统都有其自己的集成需求,本节将介绍这些需求。

端点快速参考表

如前几节所述,Spring Integration 提供了许多端点,用于与外部系统、文件系统等进行交互。

为了透明的依赖管理,Spring Integration 提供了一个物料清单 POM,可以将其导入 Maven 配置中。

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-bom</artifactId>
            <version>6.3.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

回顾一下

  • 入站通道适配器用于将数据单向集成到消息应用程序中。

  • 出站通道适配器用于将数据单向集成到消息应用程序之外。

  • 入站网关用于双向集成流,其中其他系统调用消息应用程序并接收回复。

  • 出站网关用于双向集成流,其中消息应用程序调用某个外部服务或实体并期望结果。

下表总结了各种端点,并提供了指向相应章节的快速链接。

表 1. 端点快速参考
模块 入站适配器 出站适配器 入站网关 出站网关

AMQP

入站通道适配器

出站通道适配器

入站网关

出站网关

Apache Camel

N

出站通道适配器

N

出站网关

Apache Cassandra

N

出站通道适配器

N

出站网关

Debezium

Debezium 入站通道适配器

N

N

N

事件

接收 Spring 应用程序事件

发送 Spring 应用程序事件

N

N

Feed

Feed 入站通道适配器

N

N

N

文件

读取文件'tail' 文件

写入文件

N

写入文件

FTP(S)

FTP 入站通道适配器

FTP 出站通道适配器

N

FTP 出站网关

GraphQL

N

N

N

GraphQL 出站网关

Hazelcast

Hazelcast 入站通道适配器

Hazelcast 出站通道适配器

N

N

HTTP

HTTP 命名空间支持

HTTP 命名空间支持

Http 入站组件

HTTP 出站组件

JDBC

入站通道适配器存储过程入站通道适配器

出站通道适配器存储过程出站通道适配器

N

出站网关存储过程出站网关

JMS

入站通道适配器消息驱动通道适配器

出站通道适配器

入站网关

出站网关

JMX

通知监听通道适配器属性轮询通道适配器树轮询通道适配器

通知发布通道适配器操作调用通道适配器

N

操作调用出站网关

JPA

入站通道适配器

出站通道适配器

N

更新出站网关检索出站网关

Apache Kafka

消息驱动通道适配器入站通道适配器

出站通道适配器

入站网关

出站网关

邮件

邮件接收通道适配器

邮件发送通道适配器

N

N

MongoDB

MongoDB 入站通道适配器

MongoDB 出站通道适配器

N

N

MQTT

入站(消息驱动)通道适配器

出站通道适配器

N

N

R2DBC

R2DBC 入站通道适配器

R2DBC 出站通道适配器

N

N

Redis

Redis 入站通道适配器Redis 队列入站通道适配器Redis 存储入站通道适配器Redis 流入站通道适配器

Redis 出站通道适配器Redis 队列出站通道适配器RedisStore 出站通道适配器Redis 流出站通道适配器

Redis 队列入站网关

Redis 出站命令网关Redis 队列出站网关

资源

资源入站通道适配器

N

N

N

RSocket

N

N

RSocket 入站网关

RSocket 出站网关

SFTP

SFTP 入站通道适配器

SFTP 出站通道适配器

N

SFTP 出站网关

SMB

SMB 入站通道适配器SMB 流式入站通道适配器

SMB 出站通道适配器

N

SMB 出站网关

STOMP

STOMP 入站通道适配器

STOMP 出站通道适配器

N

N

从流中读取

写入流

N

N

Syslog

Syslog 入站通道适配器

N

N

N

TCP

TCP 适配器

TCP 适配器

TCP 网关

TCP 网关

UDP

UDP 适配器

UDP 适配器

N

N

WebFlux

WebFlux 入站通道适配器

WebFlux 出站通道适配器

入站 WebFlux 网关

出站 WebFlux 网关

Web 服务

N

N

入站 Web 服务网关

出站 Web 服务网关

Web 套接字

WebSocket 入站通道适配器

WebSocket 出站通道适配器

N

N

XMPP

XMPP 消息XMPP 状态

XMPP 消息XMPP 状态

N

N

ZeroMQ

ZeroMQ 入站通道适配器

ZeroMQ 出站通道适配器

N

N

此外,如 核心消息传递 中所述,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 流中处理,例如为请求客户端生成补偿回复。