集成端点
本节涵盖了 Spring 集成提供的各种通道适配器和消息传递网关,以支持与外部系统进行基于消息的通信。
从 AMQP 到 Zookeeper,每个系统都有自己的集成要求,本节将介绍这些要求。
终端节点快速参考表
如前面几节所述, Spring 集成提供了许多用于与外部系统、文件系统和其他系统交互的端点。
为了实现透明的依赖关系 Management, Spring 集成提供了一个物料清单 POM,可以导入到 Maven 配置中:
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-bom</artifactId>
            <version>6.4.0</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>回顾一下:
- 
入站通道适配器用于单向集成,以将数据引入消息传递应用程序。 
- 
出站通道适配器用于单向集成,以将数据从消息传递应用程序发送出去。 
- 
入站网关用于双向集成流,其中其他系统调用消息传递应用程序并接收回复。 
- 
出站网关用于双向集成流,其中消息传递应用程序调用某些外部服务或实体并期望结果。 
下表总结了各种终端节点,并提供了指向相应章节的快速链接。
| 模块 | 入站适配器 | 出站适配器 | 入站网关 | 出站网关 | 
|---|---|---|---|---|
| AMQP | ||||
| 阿帕奇骆驼 | N | N | ||
| Apache Cassandra | N | N | ||
| Debezium | N | N | N | |
| 事件 | N | N | ||
| 饲料 | N | N | N | |
| 文件 | N | |||
| FTP (秒) | N | |||
| 图形QL | N | N | N | |
| Hazelcast | N | N | ||
| HTTP 协议 | ||||
| JDBC | N | |||
| JMS 公司 | ||||
| JMX | N | |||
| JPA | N | |||
| Apache Kafka | ||||
| 邮件 | N | N | ||
| MongoDB 数据库 | N | N | ||
| MQTT 协议 | N | N | ||
| R2DBC | N | N | ||
| Redis | Redis 入站通道适配器、Redis 队列入站通道适配器、Redis Store 入站通道适配器、Redis 流入站通道适配器 | Redis 出站通道适配器、Redis 队列出站通道适配器、RedisStore 出站通道适配器、Redis 流出站通道适配器 | ||
| 资源 | N | N | N | |
| RSocket 系列 | N | N | ||
| SFTP (英语) | N | |||
| SMB (中小型企业) | N | |||
| STOMP | N | N | ||
| 流 | N | N | ||
| 系统日志 | N | N | N | |
| TCP 协议 | ||||
| UDP 协议 | N | N | ||
| WebFlux的 | ||||
| Web 服务 | N | N | ||
| Web 套接字 | N | N | ||
| XMPP 系列 | N | N | ||
| 零MQ | N | N | 
此外,正如核心消息传递中所讨论的, Spring 集成提供了与普通旧 Java 对象(POJO)交互的端点。
如 Channel Adapter 中所述,<int:inbound-channel-adapter>元素允许您轮询 Java 方法以获取数据。
这<int:outbound-channel-adapter>元素允许您将数据发送到void方法。
如 Messaging Gateway 中所述,<int:gateway>元素允许任何 Java 程序调用消息传递流。
这些中的每一个都不需要对 Spring 集成的任何源代码级依赖项。
在此上下文中,出站网关的等效物是使用服务激活器(参见 服务激活器)来调用返回Object某种。
从 version 开始5.2.2,所有入站网关都可以配置errorOnTimeoutboolean 标志来抛出一个MessageTimeoutException当下游流在回复超时期间未返回回复时。
在线程将控制权返回给网关之前,计时器不会启动,因此通常它仅在下游流是异步的,或者由于nullreturn 来自某个处理程序,例如 filter。
这样的异常可以在errorChannelflow,例如为请求 Client 端生成补偿回复。