Apache Camel - перемещение файла с URI из свойств yaml - PullRequest
1 голос
/ 30 апреля 2020

Я пытаюсь обработать файл, используя Apache Camel, и после обработки переместить его в указанную папку c, сохраняя имя файла и структуру каталогов.

Что у меня есть в приложении .yml file:

camel-from: "file:/C:/in/received?move=../in/processed/${file:name}&recursive=true&readLock=changed&readLockMarkerFile=false&delay=1000&maxDepth=2&minDepth=2"

Использование Java Маршрут выглядит следующим образом:

@Component
@RequiredArgsConstructor
public class TestRoute extends RouteBuilder {

    @Value("${camel-from}")
    private String fromUri;

    @Override
    public final void configure() {
        from(fromUri)
        // rest of code
    }
}

Если я использую строку непосредственно в маршруте из, она работает просто отлично. Однако, читая его из файла application.yml, независимо от того, какие символы я пытаюсь экранировать, я не могу заставить его правильно прочитать uri. (Я всегда получаю сообщение об ошибке или создаю такие папки, как обрабатываются / name вместо $ {file: name}, получая интерпретацию).

Любые идеи?

Спасибо

1 Ответ

2 голосов
/ 30 апреля 2020

Замена свойства должна быть экранирована на SPEL языке, поэтому Apache Верблюд получает значение в необработанном виде. Вы можете избежать этого с #{'$'}. Есть открытый вопрос spring-framework # 9628 о том, как сделать эту escape-последовательность более короткой / интуитивно понятной.

camel-from: "file:/C:/in/received?move=../in/processed/#{'$'}{file:name}"
...