2017-09-04 201 views
0

我想在Apache Camel中添加一个自定义sftp组件,以将用户名,主机,端口和密码包裹在要传递给sftpcomponent的配置对象中。apache camel:使用sftp组件定制sftp配置

下面是我曾尝试代码:

@Configuration 
class SftpConfig { 
    @Bean("sourceSftp") 
    public SftpComponent getSourceSftpComponent(
      @Qualifier("sftpConfig") 
      SftpConfiguration sftpConfig) throws Exception{ 
     SftpComponent sftpComponent = new SftpComponent(); 
     // not getting way to set the configuration 
     return sftpComponent; 
    } 


    @Bean("sftpConfig") 
    public SftpConfiguration getSftpConfig(
      @Value("${host}") String host, 
      @Value("${port}") int port, 
      @Value("${applicationUserName}") String applicationUserName, 
      @Value("${password}") String password) { 
     SftpConfiguration sftpConfiguration = new SftpConfiguration(); 
     sftpConfiguration.setHost(host); 
     sftpConfiguration.setPort(port); 
     sftpConfiguration.setUsername(applicationUserName); 
     sftpConfiguration.setPassword(password); 
     return sftpConfiguration; 
    } 

} 

//在其他类

from("sourceSftp:<path of directory>") ---custom component 

在JMSComponent类似的方法工作,我已经创建了一个sourcejms豆很好,但我由于SftpComponent没有为sftp配置设置调用,因此无法为sftp执行此操作。

回答

0

骆驼维护者似乎正在从提供单个组件的“setXXXConfiguration”方法来配置它们的属性。提供属性的“批准”的方法 - 这与SFTP工作 - 是他们指定的连接网址:

from ("sftp://host:port/foo?username=foo&password=bar") 
.to (....) 

另一种方法是实例化一个端点并设置其属性,然后用参考from()调用中的端点。有一个巨大的骆驼配置方式 - 这对我的基于XML的配置适用:

<endpoint id="fred" uri="sftp://acme.net/test/"> 
    <property key="username" value="xxxxxxx"/> 
    <property key="password" value="yyyyyyy"/> 
</endpoint> 
<route> 
    <from uri="fred"/> 
    <to uri="log:foo"/> 
</route> 
+0

谢谢。我会尝试。 – griffin