Camel не может найти {{xxx}} в свойствах текста после обновления до camel 3.0.0-RC3 с использованием весенней загрузки 2.2.4
Я использовал весенний ботинок 2.2.4.RELEASE
и верблюжья версия 2.23.0
Чтобы верблюд имел доступ к свойствам и использовал их в маршрутах uri, используя {{ }}
добавление camel-spring-boot-starter
зависимость и определение PropertySourcesPlaceholderConfigurer
, SpringCamelContext
bean было достаточно, чтобы заставить его работать
@SpringBootApplication
@PropertySource(ignoreResourceNotFound = false, value= {"classpath:myProperties.properties"})
public class MyApp {
...
@Bean
public SpringCamelContext camelContext(ApplicationContext applicationContext) {
return new SpringCamelContext(applicationContext);
}
@Bean
public static PropertySourcesPlaceholderConfigurer propertyConfigInDev() {
return new PropertySourcesPlaceholderConfigurer();
}
}
-
Теперь, когда я обновил camel-spring-boot-starter
к 3.0.0-RC3
следуя руководству по миграции и после исправления импорта для компонентов. Во время выполнения верблюд не может найти свойства, и я получаю следующее:
Property with key [xxx] not found in properties from text: activemq:queue:{{xxx}}
Любые идеи, что изменилось и почему {{ }}
больше не работает на моих маршрутах?
ОБНОВЛЕНИЕ 1
Я обновил весеннюю загрузку до 2.2.6.RELEASE
а также camel-spring-boot-starter
к 3.2.0
от org.apache.camel.springboot
Я все еще получаю то же самое...
Маршруты не навороченные.
Мне нужно для {{ }}
читать xxx
значение от myProperties.properties
С помощью @Value("${xxx}")
работает, Spring может получить к нему доступ, и я мог бы передать его в строку URI маршрута.
Доступ {{xxx}}
в верблюжьих URI - это то, что перестало работать после обновления.
@Component
public class MyRoutes extends RouteBuilder {
@Override
public void configure() throws Exception {
from("activemq:queue:{{xxx}}")
.to("activemq:topic:targetTopic");
}
}
ОБНОВЛЕНИЕ 2
Я повторил тест, сделанный принятым ответом. УдалениеSpringCamelContext
а также PropertySourcesPlaceholderConfigurer
бобы сделали свое дело.
Я удалил фасоль SpringCamelContext
и это сработало. Очевидно, этот новый весенний верблюжий стартер позаботится оSpringCamelContext
сам по себе, и мой bean-компонент переопределил автоматическую конфигурацию, связанную со свойствами чтения верблюда, используя {{ }}
Я также удалил фасоль PropertySourcesPlaceholderConfigurer
и @Value не переставал работать.
1 ответ
Вы используете файл application.properties в своем приложении весенней загрузки? Если да, то {{}} должно работать. Однако было бы полезно увидеть ваш код верблюда.
Изменить 1:
У меня это работает. Я использую Camel 3.2.0 с Spring Boot 2.2.6. У меня есть одна собственностьprop=Hello World
в файле myProperties.properties
в моем пути к классам. Мне не нужно было определятьPropertySourcesPlaceholderConfigurer
а также SpringCamelContext
фасоль
@SpringBootApplication
@PropertySource(ignoreResourceNotFound = false, value = {"classpath:myProperties.properties"})
public class DemoApplication extends RouteBuilder{
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@Override
public void configure() throws Exception {
from("timer:foo?repeatCount=1")
.log("{{prop}}");
}
}
Журнал
2020-04-28 21:26:57.904 INFO 10392 --- [ restartedMain] o.a.c.impl.engine.AbstractCamelContext : Route: route6 started and consuming from: timer://foo
2020-04-28 21:26:57.921 INFO 10392 --- [ restartedMain] o.a.c.impl.engine.AbstractCamelContext : Total 1 routes, of which 1 are started
2020-04-28 21:26:57.937 INFO 10392 --- [ restartedMain] o.a.c.impl.engine.AbstractCamelContext : Apache Camel 3.2.0 (CamelContext: camel-6) started in 0.067 seconds
2020-04-28 21:26:57.938 INFO 10392 --- [ restartedMain] c.p.testproperties.DemoApplication : Started DemoApplication in 0.406 seconds (JVM running for 82.808)
2020-04-28 21:26:57.955 INFO 10392 --- [ restartedMain] .ConditionEvaluationDeltaLoggingListener : Condition evaluation unchanged
2020-04-28 21:26:58.920 INFO 10392 --- [4 - timer://foo] route6 : Hello World
Изменить 2:
Возможно, вы получаете свою собственность из Exchange, что может вызвать эту проблему. Получение свойств из биржи было изменено с версии Camel 3.0.0. Ты можешь попробоватьexchangeProperty("xxx")