Конфигурация 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.