1

我正在开发一个使用带有 SFTP 端点的 Apache Camel 的旧版应用程序。Camel 上下文是使用 Spring Xml Dsl 定义的,例如

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:camel="http://camel.apache.org/schema/spring"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">

  <camel:camelContext id="myCtx" errorHandlerRef="eventDLQ"
                    xmlns="http://camel.apache.org/schema/spring"
                    autoStartup="true">

  <camel:endpoint id="sftp1" uri="sftp://ftp1@example"/>
  <camel:endpoint id="sftp2" uri="sftp://ftp2@example"/>                                            

</camel:camelContext>
</beans>

我需要使用SFTPConfiguration对象配置 Camel SFTP,但不知道如何连接它,因为我正在使用 Spring。

我可以使用 Spring 在 XML 文件中创建 bean 并且 Camel 会自动检测它吗?

4

1 回答 1

1

好吧,是的,如果路线在相同范围内可用,即在您的情况下在相同的上下文中。我希望您知道如果您使用的是 SFTP,那么您还需要在 java 密钥库中导入 import SFTPs 证书。远程文件配置应声明为选项作为端点中的参数。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:camel="http://camel.apache.org/schema/spring"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">

  <camel:camelContext id="myCtx" errorHandlerRef="eventDLQ"
                    xmlns="http://camel.apache.org/schema/spring"
                    autoStartup="true">

  <camel:endpoint id="sftp1" uri="sftp://ftp1@example"/>
  <camel:endpoint id="sftp2" uri="sftp://ftp2@example"/>                                            

    <route>
        <from ref="sftp1"/>
        <to uri="mock:result"/>
    </route>

     <route>
        <from ref="sftp2"/>
        <to uri="mock:result"/>
    </route>
</camel:camelContext>
</beans>

您可以创建 bean 并将其传递给骆驼端点以及参考。

   <bean class="org.apache.camel.component.file.remote.SftpConfiguration" id="sftpConfig">
    <property name="jschLoggingLevel" value="WARN"/>
    <property name="strictHostKeyChecking" value="no"/>
</bean>

注意:您可以使用此处提供的所有选项 -链接

<bean class="org.apache.camel.component.file.remote.SftpEndpoint" id="sftpEndpoint">
    <property name="configuration" ref="sftpConfig" />
</bean>

我不确定您使用的是哪个版本的骆驼,您可以看到 FTPCompnent src 并相应地将 sftpEndpoint 引用传递给它。

于 2017-10-25T12:01:33.873 回答