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")

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