Эффективное перемещение и обработка больших файлов между sftp, сервером и сетью с помощью Apache Camel - PullRequest
0 голосов
/ 21 декабря 2018

Я копирую большие (600 МБ) файлы из sftp, выполняю дополнительную обработку некоторых из них и сохраняю их в сетевом расположении.Мой вопрос: как мне сделать это эффективно?

Это был бы самый простой способ:

// just copy
from(sftp://user@domain.nl:22/folder)
  .to(file:////mnt/networkfolder/copy)

// do some processing
from(sftp://user@domain.nl:22/folder?include=important.*)
  .to(MyBean)
  .to(file:////mnt/networkfolder/processed)

Однако, это делает две поездки в sftp.Я мог бы сделать это:

// just copy
from(sftp://user@domain.nl:22/folder)
  .to(file:////mnt/networkfolder/copy)

// do some processing
from(file:////mnt/networkfolder/copy?include=important.*)
  .to(MyBean)
  .to(file:////mnt/networkfolder/processed)

Но затем я перемещаю файлы из сети обратно на сервер для обработки (или, по крайней мере, я думаю, что так и будет).

Так что мойдогадка, что это будет наилучшим способом:

// get files to my server
from(sftp://user@domain.nl:22/folder)
  .to(file:////workdirectory)

// do the processing, then move to network
from(file:////workdirectory?include=important.*)
  .to(MyBean)
  .to(file:////mnt/networkfolder/processed)

// copy
from(file:////workdirectory?delete=true)
  .to(file:////mnt/networkfolder/copy)

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

...