集成终端节点摘要
端点快速参考表
如前几节所述,Spring Integration 提供了多个端点,用于与外部系统、文件系统等接口对接。
为了透明地管理依赖关系,Spring Integration 提供了一个物料清单(BOM)POM,可将其导入到 Maven 配置中:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-bom</artifactId>
<version>6.1.9</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
回顾一下:
-
入站通道适配器用于单向集成,将数据引入消息应用程序。
-
出站通道适配器用于单向集成,将数据从消息应用程序发送出去。
-
入站网关用于双向集成流,其中其他系统调用消息应用程序并接收回复。
-
出站网关用于双向集成流,其中消息应用程序调用某些外部服务或实体并期望获得结果。
下表总结了各种端点,并提供指向相应章节的快速链接。
| 模块 | 传入适配器 | 出站适配器 | 传入网关 | 出站网关 |
|---|---|---|---|---|
AMQP |
||||
Apache Camel |
N |
N |
||
Apache Cassandra |
N |
N |
||
事件 |
N |
N |
||
信息源 |
N |
N |
N |
|
file |
读取文件 and 'tail' 查看文件 |
N |
||
FTP(S) |
N |
|||
GraphQL |
N |
N |
N |
|
Hazelcast |
N |
N |
||
HTTP |
||||
JDBC |
入站通道适配器 and 存储过程入站通道适配器 |
N |
||
JMS |
||||
JMX |
N |
|||
JPA |
N |
|||
Apache Kafka |
||||
邮件 |
N |
N |
||
MongoDB |
N |
N |
||
mqtt |
N |
N |
||
R2DBC |
N |
N |
||
Redis |
Redis 入站通道适配器, Redis 队列入站通道适配器, Redis 存储入站通道适配器, Redis 流入站通道适配器 |
Redis 出站通道适配器, Redis 队列出站通道适配器, RedisStore 出站通道适配器, Redis Stream 出站通道适配器 |
||
资源 |
N |
N |
N |
|
RSocket |
N |
N |
||
sftp |
N |
|||
SMB |
N |
|||
STOMP |
N |
N |
||
流 |
N |
N |
||
syslog |
N |
N |
N |
|
TCP |
||||
UDP |
N |
N |
||
WebFlux |
||||
Web 服务 |
N |
N |
||
WebSockets |
N |
N |
||
XMPP |
N |
N |
||
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 流中进行处理,例如为请求客户端生成补偿回复。