You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Claus Ibsen (JIRA)" <ji...@apache.org> on 2019/08/06 08:26:00 UTC

[jira] [Resolved] (CAMEL-10388) Dynamic update predicate/expression at runtime

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