Я новичок в Верблюд и учусь, как я go. Кажется, есть много возможных способов обмена информацией между некоторыми платформами (например, Spring Boot) и Camel. Мне трудно понять, как (или даже , если ) сделать это из свойств Spring Boot. Под этим я подразумеваю application.properties
или application.yml
.
Следующий пункт SO ( Использование свойств Spring Boot в Apache Camel route ) задает очень похожий вопрос, но ответы на этот вопрос не похоже на работу. Признаюсь, я не совсем понимаю последний ответ.
Так что я пытаюсь сделать? Так как я все еще новичок в Camel, я делаю что-то действительно простое и простое. У меня есть очень маленькое приложение Spring Boot, которое использует Camel для простого копирования файла из одного места в другое.
Вот мой маршрут:
src / main / java / mypackage / CopyFileRoute. java:
@Component
public class CopyFileRoute extends RouteBuilder {
@Override
//@formatter:off
public void configure() throws Exception {
this
.from("file:{{properties.source-path}}/{{properties.file-name}}?noop=true")
.to("file:{{properties.dest-path}}/{{properties.file-name}}");
}
//@formatter:on
}
src / main / resources / application.yml:
properties:
source-path: demo/copyFrom
dest-path: demo/copyTo
file-name: test.txt
Я читал о замене свойств (или заполнителях) в руководстве пользователя Camel ( https://camel.apache.org/manual/latest/using-propertyplaceholder.html и https://camel.apache.org/components/latest/properties-component.html), но не может заставить его работать. Конечно, примеры в руководстве пользователя находятся в конфигурации XML, где я делаю это в конфигурации Java. Разве это не работает в Java коде?
Кстати, я пытался включить свойство Camel "bridge" (BridgePropertyPlaceholderConfigurer
), но это тоже не работает. Я не уверен как я должен его использовать.
ОБНОВЛЕНИЕ :
Я попробовал следующее с "мостом", но, увы, это тоже не работает:
@Configuration
@ComponentScan("mypackage")
public class Configurer {
@Bean
public CamelContext camelContext() {
return new DefaultCamelContext();
}
@Bean
public BridgePropertyPlaceholderConfigurer bridgePropertyPlaceholder() {
BridgePropertyPlaceholderConfigurer bridge = new BridgePropertyPlaceholderConfigurer();
bridge.setLocation(new ClassPathResource("application.properties"));
return bridge;
}
}