【问题标题】:Reading files synchronously同步读取文件
【发布时间】:2016-08-17 04:16:41
【问题描述】:

我们正在尝试实现以下用例:

  1. 发件人在 JMS 队列中发布消息。有效负载具有文件名。
  2. 我们需要从预先配置的目录中读取文件(JMS 消息中提供的文件名)并将内容存储在数据库中。

文件“命名空间”中是否有任何可用的弹簧组件允许我们读取文件而不是轮询文件?

我知道我们可以轮询预先配置的目录,但是我们想看看是否同步读取(同步读取选项允许我们从进程中间读取文件,这与轮询的读取选项不同Oracle 产品提供的新文件,并且是流程的开始)在 Spring Integration 中也可用。

【问题讨论】:

  • 这个问题可能意味着什么?如果您不知道文件的名称,如何“轮询”文件的内容?
  • 我的问题是:提供文件名时; spring 集成的哪些组件允许我在进程中读取文件
  • 是的,我明白了。看看我的答案怎么样?
  • @Artem .. 我实际上是在回复布鲁斯。你的回答就像一个魅力......谢谢
  • 太棒了!我只是想让布鲁斯知道可能有人不需要任何额外的信息。但是,嗯,最好是正确地形成问题:stackoverflow.com/help/how-to-ask。最近我停下来编辑一些不清楚的问题。否则要花很多时间才能找到答案……

标签: spring-integration


【解决方案1】:

通过名称创建File 的操作非常简单,我们只是没有在此问题上介绍一些组件。

这里是:

<transformer expression="new java.io.File(payload)"/>

或 Java DSL 变体:

.<String, File>transform(File::new)

之后,您可以使用开箱即用的转换器(AbstractFilePayloadTransformer 实现)获取内容并发送到 DB。

对,一个 SpEL 表达式和 Lambda,您可以自行自定义,以根据预配置的目录和传入名称构建正确的文件路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 2011-01-03
    相关资源
    最近更新 更多