How to read multiple files using camel pollEnrich?

Viewed 356

I need to fetch multiple files from a directory using camel pollEnrich. When I searched for this implementation, I found out that camel pollEnrich will pick up only one file at a time. But it was given that we can fetch multiple files by repeating pollEnrich by loop. How can this be correctly implemented?

Sample code for current implementation below:

<camel:route id="fileRoute">
    <camel:from uri="jetty:{{file.api.endpoint}}" />
    <camel:convertBodyTo type="java.lang.String"/>
    <camel:unmarshal ref="json" />
    <camel:choice>
        <camel:when>
            <camel:simple>Condition check for validating the request</camel:simple>
            <camel:pollEnrich timeout="5000">
               <camel:simple>file:{{file.input.dir}}?preMove={{file.inprogress.dir}}&amp;move={{file.processed.dir}}&amp;filter=#fileFilter</camel:simple>
            </camel:pollEnrich>
            <!-- Logic -->
        </camel:when>
        <camel:otherwise>
            <!-- Invalid request -->
        </camel:otherwise>
    </camel:choice>
</camel:route>

I also tried loop doWhile aproach, but it didn't work out for me. My requirement is to get all the files from a directory using camel pollEnrich.

Sample code for loop doWhile approach:

<camel:route id="fileRoute">
    <camel:from uri="jetty:{{file.api.endpoint}}" />
    <camel:convertBodyTo type="java.lang.String"/>
    <camel:unmarshal ref="json" />
    <camel:loop doWhile="true">
        <camel:simple>Condition check for validating the request</camel:simple>
        <camel:pollEnrich timeout="5000">
           <camel:simple>file:{{file.input.dir}}?preMove={{file.inprogress.dir}}&amp;move={{file.processed.dir}}&amp;filter=#fileFilter</camel:simple>
        </camel:pollEnrich>
        <!-- Logic -->
    </camel:loop>
</camel:route>
0 Answers
Related