在 camel-ftp 中将目录从 home 更改为 root
Changing directory from home to root in camel-ftp
我在我的 Apache Camel 配置中使用以下内容:
<camel:route errorHandlerRef="loggingErrorHandler" id="ROUTE_ICL">
<camel:from uri="file:{{camel.route.icl.from.file.path}}?filter=#fileFilterMAVRO&initialDelay={{camel.route.from.file.initialDelay}}&delay={{camel.route.from.file.delay}}&useFixedDelay=true&runLoggingLevel=TRACE&startingDirectoryMustExist={{camel.route.from.file.startingDirectoryMustExist}}&autoCreate={{camel.route.from.file.autoCreate}}&maxMessagesPerPoll={{camel.route.from.file.maxMessagesPerPoll}}&eagerMaxMessagesPerPoll=true&delete=false&readLock=idempotent&readLockLoggingLevel=OFF&readLockRemoveOnRollback=false&readLockRemoveOnCommit=false&idempotent=true&idempotentKey=${file:onlyname}&idempotentRepository=#iclMessageIdRepository&recursive=false&move={{camel.route.icl.complete.file.path}}&moveFailed={{camel.route.icl.failed.file.path}}" />
<camel:to uri="sftp://user1@ecomt199.qintra.com:22/nas/tst2/inputfiles?password=Pass1234&runLoggingLevel=TRACE"/>
</camel:route>
现在,这是有效的。它能够 sftp 我的文件。
问题是我希望我的文件位于:/nas/tst2/inputfiles。但它位于:/home/user1/nas/tst2/inputfiles
现在,我怎样才能到达 /nas/tst2/inputfiles? /nas/ 和 /home/ 都在 /.
问题是更改此默认设置 /home/。
我可以使用哪个属性?我无法找到或理解如何在 Camel DSL 中执行此操作。
我认为最好的解决方案不是在 Camel DSL 中。您用于 SFTP 的用户在主目录中有根目录。
我认为一个好的解决方案是在 FTP 服务器中为另一个用户配置正确的根目录,您要将文件放在那里。
你不能。当前的 camel-ftp 实现特别不允许完全限定路径。所有路径都相对于用户的主目录。
为了在我的项目中解决这个问题,我分叉了组件并删除了去除前导路径分隔符的代码。
Camel 在当前版本中确实不允许完全限定路径。但是,只要用户拥有权限,您就可以使用这样的路径作为解决方法:
../../../../../../../../this_is_the_root_folder/usr/....
您基本上是从用户目录开始,然后在树中向上移动,直到到达根目录。您只需要确保添加了足够的 ../../
即可到达根目录。
这不是最好的解决方案,但它很简单并且对我有用。
我在我的 Apache Camel 配置中使用以下内容:
<camel:route errorHandlerRef="loggingErrorHandler" id="ROUTE_ICL">
<camel:from uri="file:{{camel.route.icl.from.file.path}}?filter=#fileFilterMAVRO&initialDelay={{camel.route.from.file.initialDelay}}&delay={{camel.route.from.file.delay}}&useFixedDelay=true&runLoggingLevel=TRACE&startingDirectoryMustExist={{camel.route.from.file.startingDirectoryMustExist}}&autoCreate={{camel.route.from.file.autoCreate}}&maxMessagesPerPoll={{camel.route.from.file.maxMessagesPerPoll}}&eagerMaxMessagesPerPoll=true&delete=false&readLock=idempotent&readLockLoggingLevel=OFF&readLockRemoveOnRollback=false&readLockRemoveOnCommit=false&idempotent=true&idempotentKey=${file:onlyname}&idempotentRepository=#iclMessageIdRepository&recursive=false&move={{camel.route.icl.complete.file.path}}&moveFailed={{camel.route.icl.failed.file.path}}" />
<camel:to uri="sftp://user1@ecomt199.qintra.com:22/nas/tst2/inputfiles?password=Pass1234&runLoggingLevel=TRACE"/>
</camel:route>
现在,这是有效的。它能够 sftp 我的文件。
问题是我希望我的文件位于:/nas/tst2/inputfiles。但它位于:/home/user1/nas/tst2/inputfiles
现在,我怎样才能到达 /nas/tst2/inputfiles? /nas/ 和 /home/ 都在
问题是更改此默认设置 /home/。
我可以使用哪个属性?我无法找到或理解如何在 Camel DSL 中执行此操作。
我认为最好的解决方案不是在 Camel DSL 中。您用于 SFTP 的用户在主目录中有根目录。
我认为一个好的解决方案是在 FTP 服务器中为另一个用户配置正确的根目录,您要将文件放在那里。
你不能。当前的 camel-ftp 实现特别不允许完全限定路径。所有路径都相对于用户的主目录。
为了在我的项目中解决这个问题,我分叉了组件并删除了去除前导路径分隔符的代码。
Camel 在当前版本中确实不允许完全限定路径。但是,只要用户拥有权限,您就可以使用这样的路径作为解决方法:
../../../../../../../../this_is_the_root_folder/usr/....
您基本上是从用户目录开始,然后在树中向上移动,直到到达根目录。您只需要确保添加了足够的 ../../
即可到达根目录。
这不是最好的解决方案,但它很简单并且对我有用。