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

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

端点快速参考表

正如前面部分所讨论的,Spring Integration 提供了许多端点,用于与外部系统、文件系统和其他系统交互。

对于透明的依赖管理,Spring Integration 提供了一个要导入到 Maven 配置中的材料清单 POM:

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

回顾一下:

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

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

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

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

下表总结了各种端点以及相应章节的快速链接。

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

AMQP

入站通道适配器

出站通道适配器

入站网关

出站网关

活动

接收 Spring 应用程序事件

发送 Spring 应用程序事件

ñ

ñ

喂养

Feed 入站通道适配器

ñ

ñ

ñ

文件

读取文件'tail'ing文件

写入文件

ñ

写入文件

FTP(S)

FTP 入站通道适配器

FTP 出站通道适配器

ñ

FTP 出站网关

宝石火

入站通道适配器连续查询入站通道适配器

出站通道适配器

ñ

ñ

HTTP

HTTP 命名空间支持

HTTP 命名空间支持

Http 入站组件

HTTP 出站组件

JDBC

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

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

ñ

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

管理系统

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

出站通道适配器

入站网关

出站网关

JMX

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

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

ñ

操作调用出站网关

JPA

入站通道适配器

出站通道适配器

ñ

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

阿帕奇卡夫卡

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

出站通道适配器

入站网关

出站网关

邮件

收信通道适配器

邮件发送通道适配器

ñ

ñ

MongoDB

MongoDB 入站通道适配器

MongoDB 出站通道适配器

ñ

ñ

MQTT

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

出站通道适配器

ñ

ñ

R2DBC

R2DBC 入站通道适配器

R2DBC 出站通道适配器

ñ

ñ

雷迪斯

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

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

Redis 队列入站网关

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

资源

资源入站通道适配器

ñ

ñ

ñ

RMI

ñ

ñ

入站 RMI

出站 RMI

RSocket

ñ

ñ

RSocket 入站网关

RSocket 出站网关

SFTP

SFTP 入站通道适配器

SFTP 出站通道适配器

ñ

SFTP 出站网关

跺脚

STOMP 入站通道适配器

STOMP 出站通道适配器

ñ

ñ

溪流

从流中读取

写入流

ñ

ñ

系统日志

Syslog 入站通道适配器

ñ

ñ

ñ

TCP

TCP 适配器

TCP 适配器

TCP 网关

TCP 网关

UDP

UDP 适配器

UDP 适配器

ñ

ñ

WebFlux

WebFlux 入站通道适配器

WebFlux 出站通道适配器

入站 WebFlux 网关

出站 WebFlux 网关

网页服务

ñ

ñ

入站 Web 服务网关

出站 Web 服务网关

网络套接字

WebSocket 入站通道适配器

WebSocket 出站通道适配器

ñ

ñ

XMPP

XMPP 消息XMPP 存在

XMPP 消息XMPP 存在

ñ

ñ

零MQ

ZeroMQ 入站通道适配器

ZeroMQ 出站通道适配器

ñ

ñ

In addition, as discussed in Core Messaging, Spring Integration provides endpoints for interfacing with Plain Old Java Objects (POJOs). As discussed in Channel Adapter, the <int:inbound-channel-adapter> element lets you poll a Java method for data. The <int:outbound-channel-adapter> element lets you send data to a void method. As discussed in Messaging Gateways, the <int:gateway> element lets any Java program invoke a messaging flow. Each of these works without requiring any source-level dependencies on Spring Integration. The equivalent of an outbound gateway in this context is using a service activator (see Service Activator) to invoke a method that returns an Object of some kind.

Starting with version 5.2.2, all the inbound gateways can be configured with an errorOnTimeout boolean flag to throw a MessageTimeoutException when the downstream flow doesn’t return a reply during the reply timeout. The timer is not started until the thread returns control to the gateway, so usually it is only useful when the downstream flow is asynchronous or it stops because of a null return from some handler, e.g. filter. Such an exception can be handled on the errorChannel flow, e.g. producing a compensation reply for requesting client.


1. see XML Configuration