我有一个在文件夹中生成 xml 更新的进程,无论是否发生任何更改。如果这些文件与上次更新到已处理文件夹不同,我想将它们移动,否则删除它们。使用 cacheSize 为 1 的 FileIdempotentRepository 过滤重复文件是否有意义,还是我走错了路?如何告诉下面的路由使用文件内容作为幂等键?
<bean id="fileStore" class="org.apache.camel.processor.idempotent.FileIdempotentRepository">
<property name="fileStore" value="target/fileidempotent/.filestore.dat"/>
<property name="cacheSize" value="1" />
</bean>
<camelContext xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="file://inputFolder" />
<idempotentConsumer messageIdRepositoryRef="fileStore">
<!-- I DO NOT want to use the messageId, how do I use the entire file contents? -->
<header>messageId</header>
<to uri="file://outputFolder"/>
</idempotentConsumer>
</route>
</camelContext>
为避免混淆,这是我正在尝试做的伪代码:
current = ''
watch(inputFolder).onNewFile(f):
if (f.contents == current)
delete f
else
mv f to outputFolder
current = f.contents
更新(真希望有人能得到这个赏金!)
如果您知道如何在此上下文文件中使用内联 Groovy
/脚本,那也对我有用。Simple