【问题标题】:Dynamic Spring Boot-Integration configuration动态 Spring Boot 集成配置
【发布时间】:2016-12-22 10:05:42
【问题描述】:

我想将 JSE 中的多线程应用程序迁移到 Spring Integration,但我必须先澄清一些要点。首先,应用程序将具有以下 Spring 集成组件:

  • JMS 到 Transformer 到路由器到 TCPOut
  • TcpIn(到路由器)到 Transformer 到 JMS

在这种情况下,我必须从配置文件动态加载所有 TCP 连接。我在 StackOverflow 中看到了几个这样的例子(基于 FTP 示例)。这些示例对于第一部分可能已经足够了,但我正在寻找如何在 Spring Boot 中做到这一点,以及创建此类配置的最佳(和优雅)方法是什么。

最后,我必须从一种 Swing 监视器访问每个不同的上下文(这可能是最重要的),以手动启动/停止此 TCP 连接。这可能吗?你建议我怎么做?

我当前所有的组件都是基于 java 的配置(不是 DSL)。

【问题讨论】:

    标签: java spring spring-boot spring-integration


    【解决方案1】:

    有关如何使用 Java 配置动态创建应用程序上下文的示例,请参阅我对 this questionits follow-up 的回答。

    另外,查看new feature in the Java DSL 以动态注册/删除与上下文的集成流。包含此功能的 DSL 1.2 版本即将发布。

    您可以使用 JMX 或控制总线或以编程方式停止/启动端点。

    【讨论】:

    • 对于动态注册元素来说,Java DSL 是强制性的还是只是一种改进?我不太熟悉它,我更喜欢保留 java 配置。我喜欢用控制总线管理元素的想法。知道如何开始吗?
    • 好的。我有不同上下文的想法,但我对如何访问以查看每个子项中每个已加载组件的状态没有清晰的认识。
    • 使用 context.getBean("someAdapter", SmartLifecycle.class); 获取对 bean 的引用 - SmartLifecycle 有方法 isRunning()start()stop()。要使用控制总线,请在每个上下文中添加一个并向其发送消息 (context.getBean("controlBusChannel", MessageChannel.class);
    • 谢谢你,Gary,我会尽快尝试的。
    • 我看到的问题是 Spring Boot。它使用整个配置类从 Main.class 加载环境。这将引发异常,因为不会创建子 Value 注释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 2021-01-24
    • 2019-04-18
    • 2017-02-16
    • 2019-02-25
    相关资源
    最近更新 更多