Hi Antonin and John, As you have mentioned, both of RouteBuilder readability and using the Camel CDI capability for looking up them automatically is valuable. I've to think twice if it is worth to re-factor or not.
Thank you very much for your advise. -- Best Regards, Charlee Ch. 2016-03-24 19:59 GMT+07:00 Antonin Stefanutti <anto...@stefanutti.fr>: > > > On 24 Mar 2016, at 12:47, Charlee Chitsuk <charlee...@gmail.com> wrote: > > > > My project is based on CDI and Camel-CDI. I've tried to reduce the some > of > > "similar" RouteBuilder concrete classes by making it to receive the > > different parameter, e.g source and destination. I'm not sure if > > registering manually is a suitable way or not. > > In the 'nominal' use cases, you would let the Camel CDI extension do the > auto-configuration of your Camel context. However, you can still do some > more configuration ‘manually'. > > In your case, I understand you’ve tried to factorise some route > definitions into some sort of templates. > > For example: > > if you have two routes: > from("direct:in1").routeId("route1").to("direct:out1"); > from("direct:in2").routeId(“route2").to("direct:out2"); > > You’ve tried to parameterised it to have a single reusable route. > > IMO, the Camel DSL is so compact that the duplication is so little that > it’s not always worth the factorisation effort. And often the readability > is better as you don’t have to understand the parametrisation when reading > the code. > > Still if you think that is a better approach for you use case, indeed, you > can declare a RouteBuilder bean @Dependent, having it parameterised > depending for example on the InjectionPoint metadata and add these > parameterised instances to the Camel context manually. > > Antonin > > > -- > > Best Regards, > > > > Charlee Ch > > > > 2016-03-24 18:30 GMT+07:00 John D. Ament <johndam...@apache.org>: > > > >> On Thu, Mar 24, 2016 at 7:29 AM Charlee Chitsuk <charlee...@gmail.com> > >> wrote: > >> > >>> Hi Antonin, > >>> > >>> Thank you very much. This answer my question. > >>> > >>> Please correct me if I'm wrong. Since it is a @Dependent, I can > register > >>> the new instance (with different route-id and parameters) to the > context > >> as > >>> much as possible. Cloud you please help to advise further? > >>> > >> > >> Well if you're doing manual registration, then you're not using the > Camel > >> CDI capability of looking up your route builders automatically. > >> > >> > >>> > >>> -- > >>> Best Regards, > >>> > >>> Charlee Ch. > >>> > >>> 2016-03-24 15:20 GMT+07:00 Antonin Stefanutti <anto...@stefanutti.fr>: > >>> > >>>> Hi Charlee, > >>>> > >>>> There is actually no constraint on the scope to declare for the > >>>> RouteBuilder beans that are discovered by Camel CDI. > >>>> > >>>> Camel CDI just gets one instance for each of them at start time and > >> adds > >>>> this to the Camel context. So that will equally work whether a > >>> RouteBuilder > >>>> is @Dependent or @AppplicationScoped generally. > >>>> > >>>> So that’s up to the developer to decide what’s the best scope > depending > >>> on > >>>> its need. Obviously, if the RouteBuilder instance needs to be shared > >>>> somehow, then it needs to be @ApplicationScoped. > >>>> > >>>> I’ll mention that to the documentation if that answers your question. > >>>> > >>>> Antonin > >>>> > >>>>> On 24 Mar 2016, at 06:49, Charlee Chitsuk <charlee...@gmail.com> > >>> wrote: > >>>>> > >>>>> Hi, > >>>>> > >>>>> Regarding to the Camel CDI [1] which mentions that it provides > >>>>> the Auto-detecting Camel routes. I would like to know what the CDI > >>> scope > >>>> of > >>>>> that RouteBuilder is. Is it @ApplicationScoped? > >>>>> > >>>>> > >>>>> [1] http://camel.apache.org/cdi.html > >>>>> > >>>>> -- > >>>>> Best Regards, > >>>>> > >>>>> Charlee Ch. > >>>> > >>>> > >>> > >> > >