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