消息路由
本章将详细介绍如何使用 Spring Integration 来路由消息。
章节总结
🗃️ 路由器
9 个项目
📄️ 过滤器
消息过滤器用于根据某些标准(例如消息头值或消息内容本身)来决定是否传递或丢弃消息。因此,消息过滤器类似于路由器,不同之处在于,对于从过滤器输入通道接收到的每条消息,该消息可能被发送到过滤器的输出通道,也可能不被发送。与路由器不同,它不决定将消息发送到哪个消息通道,而仅决定是否发送该消息。
📄️ 分割器
拆分器是一种组件,其作用是将消息分割成若干部分,并将生成的消息发送出去以进行独立处理。在包含聚合器的流水线中,拆分器通常是上游生产者。
📄️ 聚合器
与拆分器基本呈镜像关系,聚合器是一种消息处理器,它接收多条消息并将其合并为单条消息。实际上,在包含拆分器的流水线中,聚合器通常是下游消费者。
📄️ 重排器
重排序器与聚合器相关,但用途不同。聚合器负责合并消息,而重排序器则在不改变消息内容的情况下传递消息。
📄️ 消息处理器链
MessageHandlerChain 是一种 MessageHandler 的实现,它可以配置为单一的消息端点,同时实际委托给其他处理器的链式结构,例如过滤器、转换器、拆分器等。当多个处理器需要以固定的线性顺序连接时,这可以带来更简洁的配置。例如,在其他组件之前提供转换器是相当常见的做法。同样,当您在链中的某些其他组件之前提供过滤器时,您实际上创建了一个选择性消费者。在这两种情况下,该链仅需要单个输入通道和单个输出通道,从而无需为每个单独的组件定义通道。
📄️ Scatter-Gather
从 4.1 版本开始,Spring Integration 提供了对分散-收集(scatter-gather)企业集成模式的实现。这是一个复合端点,其目标是将消息发送给接收者并聚合结果。正如《企业集成模式》中所指出的,它是用于诸如“最佳报价”这类场景的组件,在这些场景中,我们需要向多个供应商请求信息,并决定哪一家为我们所请求的项目提供了最佳条款。
📄️ 线程屏障
有时,我们需要暂停消息流线程,直到其他异步事件发生。例如,考虑一个将消息发布到 RabbitMQ 的 HTTP 请求。我们可能希望等到 RabbitMQ 代理发出消息接收确认后,再回复用户。