Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 驼峰处理策略和移动选项不协同工作_File_Apache Camel - Fatal编程技术网

File 驼峰处理策略和移动选项不协同工作

File 驼峰处理策略和移动选项不协同工作,file,apache-camel,File,Apache Camel,我正在尝试根据文件夹中存在的文件的名称和数量,将几个文件从同一服务器上的位置A移动到位置B。为了实现这一点,我使用processStrategy选项和扩展的GenericFileDeleteProcessStrategy来检查batchsize。文件将被移动到目标位置,但我还希望将已处理的文件移动到.done文件夹,并将所有失败的文件移动到.failed位置 如果我注意到move、premove、moveFailed选项与processStrategy一起使用时不起作用 下面是我使用的代码片段

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

如果我注意到move、premove、moveFailed选项与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;

}
camel-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>

${header.CamelFileName}regex'^.*(fileA)。*(CSV | CSV)'
${header.CamelFileName}regex'^.*(文件B)。*(CSV | CSV)'
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
<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>