我正在使用 Spring 集成文件拆分器(XML 配置(来读取文件并处理消息。
我有一个要求,我需要从文件中读取第一行和最后一行,并将它们设置为标头值,以便其余行/消息具有该信息。
换句话说,需要丢弃第一行和最后一行消息,但其有效负载需要设置为其余消息中的标头。
我怎样才能实现它?任何帮助将不胜感激。谢谢。
以下代码用于从目录中读取文件并将其拆分:
<int-file:inbound-channel-adapter
id="fileSource" channel="fileReceiverChannel"
directory="file:${file.messagesource.directory}"
prevent-duplicates="false" ignore-hidden="true" filename-regex="${filename.regex}" >
<int:poller fixed-delay="5000" receive-timeout="5000"
task-executor="pollerExecutor">
</int:poller>
</int-file:inbound-channel-adapter>
<int-file:splitter id="splitFile"
input-channel="splitFileChannel" output-channel="transformChannel"
charset="UTF-8" apply-sequence="true" iterator="false" />
从 5.0 开始,您可以在FileSplitter
上setFirstLineAsHeader(true)
,第一行将作为所有消息中的标头携带。
它在 XML 配置中first-line-as-header
。
没有机制可以对"最后一行"执行相同的操作;为此,您需要一个自定义版本的拆分器。阅读最后一行并不容易,除非所有行的长度都相同,否则您必须先阅读整个文件。