首页 > 解决方案 > Apache Camel - 如何在动态 sftp 端点中设置私钥

问题描述

使用 Java DSL,我有一个路由,在该路由中,我使用消息头中设置的文件名轮询 SFTP 服务器中的文件

from("direct:download")
        .pollEnrich()
        .simple("sftp://my.host:22/folder/?username=foo&fileName=${header.CamelFileName}")
        .to("file://state/downloaded");

sftp 端点需要设置一个私钥。通常这样的事情就足够了:

        endpoint("sftp://my.host:22/folder/?username=foo&fileName=my_file_explicitly_written_here", SftpEndpoint.class).getConfiguration().setPrivateKey(getSshPrivateKey());

但是,我认为没有办法将 URI ( ${header.CamelFileName}) 中的动态字段pollEnrich().simple()与端点配置“混合”。

对此有何建议?

标签: apache-camel

解决方案


您可以privateKey从注册表中引用 bean。

.pollEnrich()
    .simple("sftp://my.host:22/folder/?username=foo&privateKey=#myKeyInRegistry&fileName=${header.CamelFileName}")

将 bean 绑定到注册表取决于您使用的平台和 Camel 版本。


推荐阅读