camel processStrategy和移动选项不能一起工作

时间:2016-04-13 23:08:25

标签: file apache-camel

我正在尝试根据该文件夹中存在的文件的名称和数量,将几个文件从位置A移动到同一服务器上的位置B.为了实现这一点,我使用processStrategy选项和扩展GenericFileDeleteProcessStrategy来检查batchsize。文件被移动到目的地,但我也想将处理过的文件移动到.done文件夹,将任何失败的文件移动到.failed位置。

如果我发现移动,则在与processStrategy一起使用时,移动,移动选项不起作用

下面的

是我使用过的代码段。

请告诉我你的建议。我需要在备份中提供这些文件。

public class CustomTestProcessStrategy extends GenericFileDeleteProcessStrategy<File>{
static Logger logger = Logger.getLogger(CustomTestProcessStrategy.class);
@Override
public boolean begin(GenericFileOperations<File> operations,
        GenericFileEndpoint<File> endpoint, Exchange exchange,
        GenericFile<File> file) throws Exception {

    boolean begin = super.begin(operations, endpoint, exchange, file);
    if(!begin){
        return false;
    }
    int batchSize = (int) exchange.getProperty("CamelBatchSize");

    if(batchSize != 2){
        logger.info("[OUT] CustomTestProcessStrategy Stopped. batch size is not met.");
        return false;
    }
    return true;

}

的beans.xml

<bean id="testStrategy" class="com.camel.CustomTestProcessStrategy">

cameljob.properties

file.testmove.properties=?idempotent=true&processStrategy=#testStrategy&readLock=rename&readLockMinLength=0&initialDelay=10000&delay=5000&moveFailed=.failed&preMove=order&move=.done&scheduler=quartz2&scheduler.cron={{testmove.Schedule}}

folder.source=C:/readfiles/source
folder.destination =C:/readfiles/destination

驼context.xml中

<route id="FileTestMoveRoute">
        <from uri="file:{{folder.source}}{{file.testmove.properties}}"/>

        <bean ref="cifProcessor" method="startFinalProcess"/>

                <log message="*****************Moving file ${header.CamelFileName} to  the final desitnation folder *********" />   
                <choice>
                    <when>
                        <simple>${header.CamelFileName} regex '^.*(fileA).*(CSV|csv)'</simple>
                        <to uri="file:{{folder.destination}/FileA}"/>
                    </when>
                    <when>
                        <simple>${header.CamelFileName} regex '^.*(fileB).*(CSV|csv)'</simple>
                        <to uri="file:{{folder.destination}}/FileB"/>
                    </when>                     

                </choice>

                </when>                 
    </route>

0 个答案:

没有答案