Конфигурация Apache Camel SFTP с использованием Spring XML

Я работаю над устаревшим приложением, которое использует Apache Camel с конечными точками SFTP. Контекст 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>

Мне нужно настроить SFTP Camel с помощью объекта SFTPConfiguration, но я не знаю, как подключить его, так как я использую Spring.

Могу ли я просто создать bean-компонент в XML-файле, используя Spring, и будет ли Camel автоматически определять его?

1 ответ

Решение

Ну, да, если маршруты доступны в той же области, то есть в том же контексте, в вашем случае. Я надеюсь, вы знаете, что если вы используете SFTP, то вам потребуется импортировать сертификат импорта SFTP в хранилище ключей Java. Конфигурация удаленного файла должна быть объявлена ​​как опция в качестве параметра в конечной точке.

<?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 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.

Другие вопросы по тегам