2017-09-04 63 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