Charlee, One thing to point out. If you find that you're adding a lot of routes based on the same format, you may want to use dynamic URIs instead.
http://camel.apache.org/how-do-i-use-dynamic-uri-in-to.html John On Thu, Mar 24, 2016 at 9:26 PM Charlee Chitsuk <charlee...@gmail.com> wrote: > 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. > > >>>> > > >>>> > > >>> > > >> > > > > >