消息端点
部分总结
消息端点
本章的第一部分涵盖了一些背景理论,并揭示了驱动 Spring Integration 各种消息组件的底层 API 的很多内容。如果你想知道幕后究竟发生了什么,这些信息会很有帮助。但是,如果你想快速上手并使用简化的基于命名空间的配置来配置各种元素,可以先跳转到“端点命名空间支持”。
端点角色
从 4.2 版本开始,端点可以分配给角色。角色允许端点作为一组启动和停止。这在使用领导选举时特别有用,一组端点可以在获得或撤销领导权时启动或停止。为此,框架在应用程序上下文中注册了一个名为 IntegrationContextUtils.INTEGRATION\_LIFECYCLE\_ROLE\_CONTROLLER 的 SmartLifecycleRoleController bean。每当需要控制生命周期时,可以注入或 @Autowired 这个 bean:
领导力事件处理
可以根据领导权的授予或撤销,分别启动和停止端点组。这在集群场景中很有用,其中共享资源只能由单个实例消费。一个例子是轮询共享目录的文件传入通道适配器。(见阅读文件)。
消息网关
网关隐藏了 Spring Integration 提供的消息 API。它使您的应用程序业务逻辑无需了解 Spring Integration API。通过使用通用网关,您的代码仅与一个简单的接口进行交互。
服务激活器
服务激活器是将任何 Spring 管理的对象连接到输入通道的端点类型,以便它可以充当服务的角色。如果服务产生输出,它也可以连接到输出通道。或者,一个产生输出的服务可以位于处理管道或消息流的末端,在这种情况下可以使用入站消息的 replyChannel 头。如果没有定义输出通道,这是默认行为。与这里描述的大多数配置选项一样,相同的行为实际上也适用于大多数其他组件。
延迟器
延迟器是一个简单的端点,它可以让消息流被延迟一定的间隔。当消息被延迟时,原始发送者不会阻塞。相反,延迟的消息会通过 org.springframework.scheduling.TaskScheduler 的实例进行调度,在延迟时间过后再发送到输出通道。这种方法即使在较长的延迟情况下也是可扩展的,因为它不会导致大量发送线程被阻塞。相反,在典型情况下,会使用线程池来实际执行释放消息的操作。本节包含多个配置延迟器的示例。
脚本支持
Spring Integration 2.1 增加了对 JSR223 Java 规范脚本的支持,该规范是在 Java 版本 6 中引入的。它允许你使用任何支持的语言(包括 Ruby、JRuby、Groovy 和 Kotlin)编写的脚本来为各种集成组件提供逻辑,类似于 Spring 集成中使用 Spring 表达式语言 (SpEL) 的方式。有关 JSR223 的更多信息,请参阅文档。
Groovy 支持
在 Spring Integration 2.0 中,我们添加了对 Groovy 的支持,允许您使用 Groovy 脚本语言为各种集成组件提供逻辑——类似于 Spring 表达式语言 (SpEL) 对路由、转换和其他集成关注点的支持方式。有关 Groovy 的更多信息,请参阅 Groovy 文档,您可以在项目网站上找到该文档。
Adding Behavior to Endpoints
12 个项目
日志通道适配器
 组件通常与线路监听器一起使用,如在 Wire Tap 中讨论的那样。然而,它也可以作为任何流程的最终消费者。例如,考虑一个以 结尾的流程,该激活器返回一个结果,但您希望丢弃该结果。为此,您可以将结果发送到 NullChannel。或者,您可以将其路由到 INFO 级别的 。这样,当以 INFO 级别记录日志时可以看到被丢弃的消息,但在 WARN 级别记录日志时则看不到它。使用 NullChannel 时,只有在 DEBUG 级别记录日志时才会看到被丢弃的消息。以下列表显示了 logging-channel-adapter 元素的所有可能属性:
java.util.function 接口支持
从 5.1 版本开始,Spring Integration 提供了对 java.util.function 包中接口的直接支持。所有消息端点(服务激活器、转换器、过滤器等)现在可以引用 Function(或 Consumer)类型的 bean。消息注解可以直接应用于这些 bean,类似于常规的 MessageHandler 定义。例如,如果你有以下 Function 类型的 bean 定义:
Kotlin 支持
该框架还改进了对 Kotlin lambda 的支持,因此现在你可以使用 Kotlin 语言和 Spring Integration 流定义的组合: