集成端点

本节介绍了 Spring Integration 提供的各种通道适配器和消息网关,以支持与外部系统的基于消息的通信。 每个系统,从 AMQP 到 Zookeeper,都有其自己的集成要求,本节将涵盖这些要求。

端点快速参考表

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

为了透明的依赖管理,Spring Integration 提供了一个 BOM (bill-of-materials) POM,可以将其导入 Maven 配置中:

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

回顾一下:

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

  • 出站通道适配器用于单向集成,将数据从消息应用程序发送出去。

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

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

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

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

AMQP

入站通道适配器

出站通道适配器

入站网关

出站网关

Apache Camel

N

出站通道适配器

N

出站网关

Apache Cassandra

N

出站通道适配器

N

出站网关

Debezium

Debezium 入站通道适配器

N

N

N

Events

接收 Spring 应用程序事件

发送 Spring 应用程序事件

N

N

Feed

Feed 入站通道适配器

N

N

N

File

读取文件“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

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

出站通道适配器

入站网关

出站网关

Mail

邮件接收通道适配器

邮件发送通道适配器

N

N

MongoDB

MongoDB 入站通道适配器

MongoDB 出站通道适配器

N

N

MQTT

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

出站通道适配器

N

N

R2DBC

R2DBC 入站通道适配器

R2DBC 出站通道适配器

N

N

Redis

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

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

Redis 队列入站网关

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

Resource

资源入站通道适配器

N

N

N

RSocket

N

N

RSocket 入站网关

RSocket 出站网关

SFTP

SFTP 入站通道适配器

SFTP 出站通道适配器

N

SFTP 出站网关

SMB

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

SMB 出站通道适配器

N

SMB 出站网关

STOMP

STOMP 入站通道适配器

STOMP 出站通道适配器

N

N

Stream

从流中读取

写入流

N

N

Syslog

Syslog 入站通道适配器

N

N

N

TCP

TCP 适配器

TCP 适配器

TCP 网关

TCP 网关

UDP

UDP 适配器

UDP 适配器

N

N

WebFlux

WebFlux 入站通道适配器

WebFlux 出站通道适配器

入站 WebFlux 网关

出站 WebFlux 网关

Web Services

N

N

入站 Web 服务网关

出站 Web 服务网关

Web Sockets

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。 计时器直到线程将控制权返回给网关才启动,因此通常只有当D下游流是异步的,或者由于某个处理程序(例如 过滤器)返回 null 而停止时才有用。 这种异常可以在 errorChannel 流上处理,例如为请求客户端生成补偿回复。