Дата не разрешается в верблюде простым выражением - PullRequest
0 голосов
/ 29 января 2020

Новый для верблюда. Я пытаюсь получить текущий DateTime, чтобы быть частью имени файла. Ключевой бит здесь:

.to(s"sftp://$sftpStr/&fileName=MyFile_${date:now:yyyyMMdd}.csv&noop=true")

sftpStr содержит соответствующий путь. Но выражение Date выдает ошибку при компиляции. Я уверен, что я делаю что-то простое и глупое, но мне непонятно, почему это не работает.

Есть связанная вещь, которую я не понимаю, которая может помочь дать контекст для мое замешательство. Я попробовал это:

.log(LoggingLevel.INFO, LOG.getName, s"Route Started! Time = ${date:now:dd-MM-yyyy HH:mm:ss z}")

, который выдал ошибку. Но я убрал тег s в строке, и он работал нормально. Я думал, что s только что дал сигнал, чтобы прочитать строку, которая следует как простое выражение.

Повторяю, просто пытаясь захватить текущую дату / время в имени файла (и я не могу просто создать переменная, скажем, java.time.LocalDateTime.now() или что-то еще по причинам, слишком раздражающим, чтобы войти в нее). Я включил немного о журнале, чтобы, надеюсь, контекстуализировать мою путаницу.

Спасибо!

1 Ответ

1 голос
/ 30 января 2020

В утверждении, что вы пишете проблему, я считаю, $sftpStr. Я думаю, что это не может быть решено.

  • Если $sftpStr является свойством, тогда вы должны использовать {{$sftpStr}}.
  • Если это заголовок, тогда вы должны использовать ${header.sftpStr}.

Я предлагаю использовать заголовки как для папки, так и для имени файла. Что-то вроде:

from(...)
  ...
  .setHeader("folder", constant("the value"))
  .setHeader("CamelFileName", simple("${date:now:yyyyMMdd}"))
  .to("sftp:username:password@{{ftp.server}}/${header.folder}&noop=true");

В приведенном выше ftp.server это свойство, которое содержит хост SFTP.

Надеюсь, что это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...