0

変更が発生したかどうかに関係なく、フォルダーに xml 更新を生成するプロセスがあります。それらのファイルが最後の更新と異なる場合は処理済みフォルダーに移動し、そうでない場合は削除します。重複ファイルを除外するために、cacheSize が 1 の FileIdempotentRepository を使用することは理にかなっていますか、それとも間違った方向に進んでいますか? ファイルの内容を idempotentKey として使用するように以下のルートに指示するにはどうすればよいですか?

<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

4

1 に答える 1