当前位置: 首页 > 知识库问答 >
问题:

Spring Integration-Inbount通道适配器在读取新文件时再次发送上一个文件

别锐
2023-03-14

当入站通道适配器从输入目录读取第二个文件时,我遇到了一个问题。适配器启动如下流:适配器->通道->拆分器->通道...->数据库。

拆分器读取文件,处理每一行,然后将文件复制到另一个目录,并删除原始文件。

问题是,适配器可以像预期的那样处理第一个文件,但当它读取第二个文件时,它会再次从第一个文件发送消息(第一个文件不再在输入目录中)。

注意:第一个通道具有ActiveMQ队列。Ack本地。

配置:

<int-file:inbound-channel-adapter id="filesIn" channel="reinjectionChannel" filename-regex="reinyeccion[0-9]{8}.txt"
    directory="${input.directory.reinyeccion}" prevent-duplicates="true" />

<jms:channel id="reinjectionChannel" queue="reinjectionChannelQueue">
    <jms:interceptors>
        <int:wire-tap channel="reinjectionLoggingChannel"/>
    </jms:interceptors>
</jms:channel>

<int:splitter input-channel="reinjectionChannel" method="split" 
    output-channel="inputChannel" ref="reinjectionSplitterBean" />

<int:channel id="inputChannel" >
    <int:interceptors>
        <int:wire-tap channel="inputLoggingChannel"/>
    </int:interceptors>
</int:channel>

日志:

org.springframework.integration.handler.LoggingHandler   handleMessageInternal  INFO  (BBR) reinjectionLoggingChannel \tmp\concentrador\files\input\reinyeccion20151109.txt
org.springframework.integration.handler.LoggingHandler   handleMessageInternal  INFO  (BBR) reinjectionLoggingChannel \tmp\concentrador\files\input\reinyeccion20151108.txt

谢谢你的帮助。

共有1个答案

邵博艺
2023-03-14

我找到了,我需要清除拆分器返回的消息列表。

 类似资料:
  • 我们的应用程序使用一个Spring Integration轮询一个目录,以便在将文件丢弃到该目录时侦听该目录。然后,Spring Integration启动一个Spring批处理作业,将要处理的文件的路径和名称交给该作业。 显然,即使在Spring批处理作业处理了一个文件之后,文件轮询器仍在继续运行。因此,Spring上下文保持打开,应用程序不会终止。是否有一种方法,通过编程或配置(更好),在一个

  • 我正在使用spring integration sftp入站流通道适配器,它每隔几秒钟就轮询一次。入站适配器正在多次挑选相同的文件进行处理。下面是配置。 上面代码中的sample.customFilter是SftpRegexPatternFileListFilter的一个子类,其中我将accept方法修改如下,以便根据Spring SFTP vanging filename-regex中提供的解决

  • 问题内容: 我正在尝试一次读取一行大文件。我在Quora上发现了一个与该主题有关的问题,但我缺少一些联系以使整个组件组合在一起。 我想弄清楚的一点是,如何一次从文件而不是如本示例中的STDIN读取一行。 我试过了: 但它不起作用。我知道,在紧急情况下,我可能会转而使用PHP之类的东西,但是我想弄清楚这一点。 我不认为其他答案会起作用,因为该文件比我在其上运行的具有内存的服务器大得多。 问题答案:

  • 我在后台调用功能文件中的多个json和js文件,这是功能文件中每个场景所必需的。 def test=read('classpath:testData/responseFiles/test.json') 问题是,它正在为每个场景运行/读取。有什么我可以做的,这样它只读一次功能文件,可以用于所有的场景。我用的是9.0.0空手道版本 callonce仅用于调用功能文件而不是json文件

  • 问题内容: 有关此目标背后的动机(以及我为实现该目标所做的努力)的更多详细信息,请查看我的上一个问题。我决定完全以一个新问题提出这个问题,因为我认为它已经发展到足以值得这样做了。作为总结,我打算将JDOM与NIO结合使用,以便: 在xml文件上获得排他文件锁定。 将文件读入对象。 进行任意更改(锁定仍处于活动状态!)。 将更改写回到xml文件。 释放文件锁。 但是,我遇到的问题是,将xml文件读入

  • 我正在使用Netty框架并实现客户端和服务器。我建立了多达1000个连接。我想在多个地方配置超时值。其中一些我能理解。下面是我的netty实现的netty行为: 1。许多异步连接都是从具有超时的客户端开始的(使用ChannelOption.CONNECT\u timeout\u MILLIS配置) 2。那些能够连接的客户端连接使用channelActive发送HTTP请求,并使用channelRe