【问题标题】:Extending Spring Integration while maintaining previous functionality?在保持先前功能的同时扩展 Spring 集成?
【发布时间】:2012-07-25 12:49:10
【问题描述】:

所以我是 Spring Integration 的新手,而且大部分时间也是 Spring 的新手,所以我可能不会掌握所有的术语,但我遇到了以下场景:

我有一个带有三个 SI 流的小型 Spring Integration 应用程序......每个流都有自己的网关,每个网关都有自己的请求通道和回复通道。这些流接收一个空调用(出于所有密集目的......基本上只是一个“GO”信号/空消息)并回复一条状态消息,具体取决于(微不足道的)业务逻辑结果。

我现在想将这些流中的每一个连接在一起以在一个“主流”中运行,给定一个请求,而不会剥夺它们单独运行的能力,并且我想通过注释/ XML 将它完全连接起来(即,给定一个调用主网关服务接口的控制器,不需要在注解/XML 配置之外编写额外的代码。)

这是否可行,我应该使用哪些集成组件来做到这一点,和/或我是否应该只是调整每个网关的预期通道以端到端地相互会面(如果是,如何该策略是否会补偿以允许根据具体情况调用每个流)?

此外,如果这不可行,是否适合使用服务激活器来调用每个子流?我想避免更多地编码,但如果这是唯一的选择,我想它必须这样做。

谢谢!

【问题讨论】:

    标签: spring spring-integration enterprise-integration


    【解决方案1】:

    可能最简单的方法是使用 Spring Profiles(Spring 3.1 的一个特性)。当以独立模式部署时,最终元素可以是“通往无处的桥梁”...

    <int:bridge input-channel="app1Final" />
    

    ...当流中的最后一个元素没有输出通道时,消息将返回到网关的回复通道。如果您更喜欢显式配置网桥以指向网关的回复通道,那也可以;它只是不需要。

    在“链接”配置文件中,您可以这样配置网桥...

    <int:bridge input-channel="app1Final" output-channel="app2Inbound"/>
    

    ...其中 app2Inbound 与该应用的网关的请求通道相同。

    <beans profile="default">
        <int:bridge input-channel="app1Final" />
    </beans>
    
    <beans profile="linked">
        <int:bridge input-channel="app1Final" output-channel="app2Inbound"/>
    </beans>
    

    要使用链接的配置文件运行,请将系统属性“spring.profiles.active”设置为“链接”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 2017-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多