Details
-
Improvement
-
Status: Open
-
Minor
-
Resolution: Unresolved
-
4.8.1
-
None
-
Unknown
Description
While using quarkus to run camel route, all microprofile properties are loaded per lookup of a property value. So when using a modest number of 10 config values in camel routes, the current lookup loads all properties (including environment and system variables) 11 times.
This happens in the method DefaultPropertiesLookup#
doLookup(String name, String defaultValue). When a property is found (answer != null), then the source is determined: for the CamelMicroProfilePropertiesSource, the routine performs the loadProperties() function (in the block "ps instanceof LoadablePropertiesSource") to retrieve the "source" string for the retrieved value. This is set when "
prop instanceof OrderedLocationProperties". For this CamelMicroProfilePropertiesSource, this prop is not an instanceof OrderedLocationProperties, and so the result of the loadProperties call is never used and hence should be avoided.
This can be illustrated with the following setup with 3 mymsg properties:
route.yaml:
- from:
uri: "timer:myyaml"
steps:
- log:
message: 'Message {{mymsg mymsg2:msg2 mymsg3:msg3 mymsg4:msg4'}}
application.properties:
quarkus.config.log.values=true
quarkus.log.level=info
quarkus.log.category."org.apache.camel.main".level=DEBUG
quarkus.log.category."org.apache.camel.component.properties".level=DEBUG
quarkus.log.category."io.smallrye.config".level=DEBUG
camel.main.routes-include-pattern=camel/route.yaml
mymsg=test1
mymsg2=test2
mymsg3=test3
-> % quarkus run -B | grep mymsg
2024-11-28 10:22:58,942 DEBUG [org.apa.cam.mai.RoutesConfigurer] (main) Adding templated routes into CamelContext from RoutesBuilder: Routes: [Route[From[timer:myyaml] -> [Log[Message \{{mymsg}} \{{mymsg2:msg2}} \{{mymsg3:msg3}} \{{mymsg4:msg4}}]]]]
2024-11-28 10:22:58,958 DEBUG [io.sma.config] (main) SRCFG01001: The config mymsg was loaded from PropertiesConfigSource[source=jar:file:///private/tmp/test1/target/quarkus-app/app/test1-1.0.0-SNAPSHOT.jar!/application.properties]:12 with the value test1
2024-11-28 10:22:58,960 DEBUG [io.sma.config] (main) SRCFG01001: The config mymsg was loaded from PropertiesConfigSource[source=jar:file:///private/tmp/test1/target/quarkus-app/app/test1-1.0.0-SNAPSHOT.jar!/application.properties]:12 with the value test1
2024-11-28 10:22:58,960 DEBUG [io.sma.config] (main) SRCFG01001: The config mymsg2 was loaded from PropertiesConfigSource[source=jar:file:///private/tmp/test1/target/quarkus-app/app/test1-1.0.0-SNAPSHOT.jar!/application.properties]:13 with the value test2
2024-11-28 10:22:58,960 DEBUG [io.sma.config] (main) SRCFG01001: The config mymsg3 was loaded from PropertiesConfigSource[source=jar:file:///private/tmp/test1/target/quarkus-app/app/test1-1.0.0-SNAPSHOT.jar!/application.properties]:14 with the value test3
2024-11-28 10:22:58,966 DEBUG [org.apa.cam.com.pro.DefaultPropertiesParser] (main) Found property: mymsg with value: test1 to be used.
2024-11-28 10:22:58,966 DEBUG [io.sma.config] (main) SRCFG01001: The config mymsg2 was loaded from PropertiesConfigSource[source=jar:file:///private/tmp/test1/target/quarkus-app/app/test1-1.0.0-SNAPSHOT.jar!/application.properties]:13 with the value test2
2024-11-28 10:22:58,966 DEBUG [io.sma.config] (main) SRCFG01001: The config mymsg was loaded from PropertiesConfigSource[source=jar:file:///private/tmp/test1/target/quarkus-app/app/test1-1.0.0-SNAPSHOT.jar!/application.properties]:12 with the value test1
2024-11-28 10:22:58,967 DEBUG [io.sma.config] (main) SRCFG01001: The config mymsg2 was loaded from PropertiesConfigSource[source=jar:file:///private/tmp/test1/target/quarkus-app/app/test1-1.0.0-SNAPSHOT.jar!/application.properties]:13 with the value test2
2024-11-28 10:22:58,967 DEBUG [io.sma.config] (main) SRCFG01001: The config mymsg3 was loaded from PropertiesConfigSource[source=jar:file:///private/tmp/test1/target/quarkus-app/app/test1-1.0.0-SNAPSHOT.jar!/application.properties]:14 with the value test3
2024-11-28 10:22:58,972 DEBUG [org.apa.cam.com.pro.DefaultPropertiesParser] (main) Found property: mymsg2 with value: test2 to be used.
2024-11-28 10:22:58,973 DEBUG [io.sma.config] (main) SRCFG01001: The config mymsg3 was loaded from PropertiesConfigSource[source=jar:file:///private/tmp/test1/target/quarkus-app/app/test1-1.0.0-SNAPSHOT.jar!/application.properties]:14 with the value test3
2024-11-28 10:22:58,973 DEBUG [io.sma.config] (main) SRCFG01001: The config mymsg was loaded from PropertiesConfigSource[source=jar:file:///private/tmp/test1/target/quarkus-app/app/test1-1.0.0-SNAPSHOT.jar!/application.properties]:12 with the value test1
2024-11-28 10:22:58,973 DEBUG [io.sma.config] (main) SRCFG01001: The config mymsg2 was loaded from PropertiesConfigSource[source=jar:file:///private/tmp/test1/target/quarkus-app/app/test1-1.0.0-SNAPSHOT.jar!/application.properties]:13 with the value test2
2024-11-28 10:22:58,973 DEBUG [io.sma.config] (main) SRCFG01001: The config mymsg3 was loaded from PropertiesConfigSource[source=jar:file:///private/tmp/test1/target/quarkus-app/app/test1-1.0.0-SNAPSHOT.jar!/application.properties]:14 with the value test3
2024-11-28 10:22:58,978 DEBUG [org.apa.cam.com.pro.DefaultPropertiesParser] (main) Found property: mymsg3 with value: test3 to be used.
2024-11-28 10:22:58,978 DEBUG [io.sma.config] (main) SRCFG01002: The config mymsg4 was not found
2024-11-28 10:22:58,978 DEBUG [io.sma.config] (main) SRCFG01002: The config mymsg4 was not found
2024-11-28 10:22:58,978 DEBUG [org.apa.cam.com.pro.DefaultPropertiesParser] (main) Property with key [mymsg4] not found, using default value: msg4
2024-11-28 10:22:58,990 INFO [org.apa.cam.mai.BaseMainSupport] (main) [MicroProfilePropertiesSource] mymsg = test1
2024-11-28 10:22:58,990 INFO [org.apa.cam.mai.BaseMainSupport] (main) [MicroProfilePropertiesSource] mymsg2 = test2
2024-11-28 10:22:58,990 INFO [org.apa.cam.mai.BaseMainSupport] (main) [MicroProfilePropertiesSource] mymsg3 = test3