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