【问题标题】:Streaming Transformation in Spring IntegrationSpring 集成中的流式转换
【发布时间】:2014-05-24 01:22:43
【问题描述】:

我们有一个 Spring Integration 应用程序,它从数据库进行轮询,编组为 XML,然后将该 XML 作为消息发送到下游系统。该应用程序有效,但我们面临的问题是某些结果集可能非常庞大。在这种情况下,Spring Integration 似乎无法处理转换,因为结果集太大而无法在内存中处理。正如 Spring Batch 中所说,我在 Spring Integration 中没有看到 Stax marshaller。这实际上是有道理的,因为消息传递通常意味着处理许多小消息而不是大文件。

我们的一个选择是开发一个 Spring Batch 应用程序。

我们可以采用 Spring Integration 的设计来处理这个问题吗? Spring Integration 是否有流的概念?例如,是否有可能以块的形式读取结果集,转换每一块,并将每一块作为一个单独的消息,它是一组的一部分?还是 Spring Batch 更合适?

非常感谢

【问题讨论】:

    标签: spring-integration


    【解决方案1】:

    您可以设置max-rows-per-poll 来限制每个结果集的大小。

    如果这不切实际,那么您可以结合使用 Spring Batch 和 Spring Integration - 让批处理 ItemWriter 通过 <gateway/> 将块发送到 Spring Integration 流中。

    【讨论】:

    • 1.因为我只想发送到下游系统,为什么这里需要 SI——我可以不只使用 SB JmsItemWriter 吗? 2. 一个可能的 SI 解决方案是从数据库轮询到一个持久队列,并让一个聚合器从中读取,从而拆分转换?
    • 1.我认为您所做的不仅仅是转储到 JMS;如果这就是你所做的一切,那么批处理可能最适合大型数据集。 2. 是的,但同样,这取决于你对数据所做的事情是否值得。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-14
    • 1970-01-01
    • 2018-11-18
    • 2016-03-02
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多