集成端点
本节涵盖了Spring Integration提供的各种通道适配器和消息网关,用于支持与外部系统进行基于消息的通信。
每个系统,从 AMQP 到 Zookeeper,都有其自身的集成要求,本节将对此进行介绍。
端点快速参考表
正如前面章节所讨论的,Spring Integration 提供了许多用于与外部系统、文件系统等接口的端点。
为了实现透明的依赖管理,Spring Integration 提供了一个物料清单(BOM)POM,可供导入到 Maven 配置中:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-bom</artifactId>
<version>7.0.2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
回顾一下:
-
入站通道适配器用于单向集成,将数据引入消息传递应用程序。
-
出站通道适配器用于单向集成,将数据发送出消息传递应用程序。
-
入站网关用于双向集成流,其中其他系统调用消息传递应用程序并接收回复。
-
出站网关用于双向集成流,其中消息传递应用程序调用某些外部服务或实体并期望得到结果。
下表汇总了各个端点,并提供了快速链接至相应章节。
表 1. 端点快速参考
此外,正如核心消息传递中所讨论的,Spring Integration 提供了与普通 Java 对象(POJOs)交互的端点。如通道适配器所述,<int:inbound-channel-adapter> 元素允许您轮询 Java 方法以获取数据。<int:outbound-channel-adapter> 元素允许您将数据发送到 void 方法。如消息网关所述,<int:gateway> 元素允许任何 Java 程序调用消息流。所有这些功能都无需在源代码级别依赖 Spring Integration。在此上下文中,与出站网关等效的是使用服务激活器(参见服务激活器)来调用返回某种 Object 的方法。
从版本 5.2.2 开始,所有入站网关都可以配置一个 errorOnTimeout 布尔标志,以便在下游流在回复超时期间未返回回复时抛出 MessageTimeoutException。计时器在线程将控制权返回给网关之前不会启动,因此通常仅在下游流是异步的,或者由于某些处理程序(例如 filter)返回 null 而停止时才有用。此类异常可以在 errorChannel 流上处理,例如为请求客户端生成补偿回复。