【问题标题】:Split a Spring Integration application into sub projects将 Spring Integration 应用程序拆分为子项目
【发布时间】:2016-10-26 15:28:09
【问题描述】:

将 Spring Integration 项目拆分为子项目(库)的正确方法是什么?

例如,我有一个从 FTP 接收文件的 InboundChannelAdapter、一个按行拆分的拆分器和一个转换器,它将我想要提取的数据转换到一个库中,并将我的其余流程保留在主项目中。我不知道如何从主项目中定义转换器的输出通道,以及如何从主项目中并行运行该进程的多个线程。

将项目拆分为子项目的主要目的是能够在以后将子项目重用到 Spring Cloud Stream 应用程序中。

【问题讨论】:

    标签: spring spring-integration


    【解决方案1】:

    由于您已经熟悉 Spring Cloud Stream ,因此您无需了解其他任何内容。这只是将您的单体应用拆分为消息驱动微服务的一种方法,使用 Spring Cloud Stream Binder 基础作为中间件连接子项目之间的input/output 通道。

    您的主项目也可以这样做。定义@EnableBinding 并通过相同的input/output 通道模型在Binder 上生成/接收消息。

    【讨论】:

    • Spring Cloud Stream 不需要 Kafka 或 Rabbit MQ 吗?我们暂时无法访问这些内容。
    • 好吧,既然你想拥有独立的子项目,显然可以在不同的JVM上运行,除了消息中间件,没有太多选择。因此,遵循 Spring Cloud Stream 标准应该没什么大不了的。
    • 将它们用作具有消息传递中间件的独立应用程序是长期目标,但现在我们需要能够将所有内容分离到可用于创建独立云应用程序的库中(未来)或用于没有任何消息传递系统的单个 Web 应用程序(目前)。
    • 好的。那也很好。只有您需要正确的 Spring 上下文配置,才能将这些库中的对象作为 bean 注入和配置。最后,对于目标应用程序应该是透明的:这些类是来自单个 jar 还是来自类路径中的多个。我会在那里创建@Configuration 类并在主@Configuration 上使用@Import,或者只使用带有适当@ComponentScan 的Spring Boot
    • 我知道 >@Configuration 和 >@Import 但它不允许我公开设置输出通道等选项。
    猜你喜欢
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多