Apache Camel: SFTP: потеря файлов - PullRequest
0 голосов
/ 17 октября 2019

Следование верблюжьему маршруту в большинстве случаев работает нормально, но это случалось несколько раз на следующем верблюжьем маршруте, когда файл выбирается, теряется со своего местоположения.

private String sftpComponent(String sftpFileName) {
    return "{{data.h.protocol}}://{{data.h.hostname}}{{data.h.directory}}"
        + "?username={{data.h.username}}"
        + "&password={{data.h.password}}" 
        + "&download=true" 
        + "&useList=true"
        + "&stepwise=false"
        + "&disconnect=true"
        + "&passiveMode=true"
        + "&reconnectDelay=10000"
        + "&bridgeErrorHandler=true"
        + "&delay={{data.h.delay}}"
        //+ "&fileName=" + sftpFileName
        + "&include="+ sftpFileName
        + "&preMove=$simple{file:onlyname}.$simple{date:now:yyyy-MM-dd'T'hh-mm-ss}.processing"
        + "&move=$simple{file:onlyname.noext}.$simple{date:now:yyyy-MM-dd'T'hh-mm-ss}.success"
        + "&moveFailed=$simple{file:onlyname.noext}.$simple{date:now:yyyy-MM-dd'T'hh-mm-ss}.failed"
        + "&readLock=idempotent-changed"
        + "&idempotentRepository=#infinispan"
        + "&readLockRemoveOnCommit=true";
}
from(sftpComponent(sftpFileName))
    .onException(GenericFileOperationFailedException.class)
    .onWhen(exchange -> { 
        Throwable cause = exchange.getException(GenericFileOperationFailedException.class).getCause();
        return (cause != null && cause.toString().equalsIgnoreCase("2: No such file"));
    })
    .handled(true)
    .logExhausted(true)
    .logExhaustedMessageHistory(true)
    // For troubleshooting. TODO: remove on final deploy
    .log("Could not find file")
    .end()
2019-10-17 08:32:56,715 INFO  [route1] (Camel (employee-import) thread #1 - sftp://transit.evry.com/Hrm/prod/From_HRM) Could not find file

Wildfly 10 isкластеризованный (3 узла), где infinispan работает на узле 1, но не на 2 и 3.

Ниже приведен код:

public class InfinispanIdempodentRepositoryProducer {

    @Resource(lookup = "java:jboss/infinispan/camel")
    private CacheContainer container;

    @Produces
    @Named("infinispan")
    public InfinispanIdempotentRepository createInfinispanInfinispanIdempotentRepository() {
        return new InfinispanIdempotentRepository(container, "camel-default-cache");
    }

}

Любое предположение, какая проблема возникает.

В логах нет исключений.

...