[
https://issues.apache.org/jira/browse/CAMEL-10388?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen resolved CAMEL-10388.
---------------------------------
Resolution: Won't Fix
> Dynamic update predicate/expression at runtime
> ----------------------------------------------
>
> Key: CAMEL-10388
> URL: https://issues.apache.org/jira/browse/CAMEL-10388
> Project: Camel
> Issue Type: New Feature
> Components: camel-core
> Reporter: Claus Ibsen
> Priority: Major
> Fix For: Future
>
>
> When using expression and predicates in your routes, then they are created
> once during startup of Camel.
> It may be desirable to allow dynamic updating these at runtime based on a
> configuration parameter change configured from a property placeholder.
> For example
> {code:xml}
> <from ...>
> <filter>
> <simple>{{auditEnabled}}</simple>
> <to uri="{{auditUrl}}"/>
> </filter>
> ...
> {code}
> In this example the simple predicate in the filter should be automatic
> updated if the property placeholder value changes.
> This requires
> 1. Properties component to support notification of value changes (SPI hook)
> 2. Predicate/Expression Factory in camel-core
> 3. Creating all expression/predicates using the factory
> 4. Option to turn this feature on (off by default)
> 5. If the option is on, then the factory creates the expression/predicate
> with a wrapper that hooks into the notification event and listen on changes.
> If a change happens, then expression/predicate is re-created and swapped out
> with the existing.
> There should not be a global lock, so the changes happens as-is and they are
> not atomic. So end users should just beware, that if you do multiple property
> changes then depending on concurrency then at any given time some
> predicates/expression may be updated while others are still using old values.
> We can optimize so they only update if the property placeholder key is used
> by the expression/predicate.
> Notice that endpoints is not supported. For those to updates you would need
> to restart/re-create the route. Or use dynamic-to.
> For the consumer we could consider a way for it to allow to auto restart by
> doing a route stop/update/start.
> However this is a slipping stope. As having immutable containers and leaving
> updates to be done by a platform is better/safer.
--
This message was sent by Atlassian JIRA
(v7.6.14#76016)