Apache Camel SFTPConfiguration Spring XML

Apache Camel SFTPConfiguration with Spring XML

我正在开发一个使用带有 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 会自动检测它吗?

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

<?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 并将其传递给 camel-endpoint 以及引用。

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

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

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

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