I've committed some more code to my branch [2], it is not yet complete (i.e. I still have to make ribbon code to use the new common classes and some APIs are not clean enough) but a feedback would be really welcome.
--- Luca Burgazzoli On Mon, May 30, 2016 at 10:55 AM, Claus Ibsen <claus.ib...@gmail.com> wrote: > On Mon, May 30, 2016 at 10:49 AM, Luca Burgazzoli <lburgazz...@gmail.com> > wrote: >> So like serviceCall("myServiceCall").configurationRef("myConf") ? > > Yeah there is already a DSL for that named serviceCallConfiguration("myConf") > > > > >> --- >> Luca Burgazzoli >> >> >> On Mon, May 30, 2016 at 10:26 AM, Claus Ibsen <claus.ib...@gmail.com> wrote: >>> On Mon, May 30, 2016 at 10:16 AM, Luca Burgazzoli <lburgazz...@gmail.com> >>> wrote: >>>> do you mean something like serviceCallRef("myServiceCall") ? >>>> --- >>> >>> No you need to provide >>> >>> - a) name of service to call >>> - b) reference to configuration of service >>> >>> a = mandatory >>> b = optional. As if there is only 1 configuration then use that. >>> >>> >>> >>>> Luca Burgazzoli >>>> >>>> >>>> On Sun, May 29, 2016 at 9:42 AM, Claus Ibsen <claus.ib...@gmail.com> wrote: >>>>> On Thu, May 26, 2016 at 7:30 PM, Luca Burgazzoli <lburgazz...@gmail.com> >>>>> wrote: >>>>>> --- >>>>>> Luca Burgazzoli >>>>>> >>>>>> >>>>>> On Thu, May 26, 2016 at 7:06 PM, Claus Ibsen <claus.ib...@gmail.com> >>>>>> wrote: >>>>>>> Hi Luca >>>>>>> >>>>>>> Yeah its good to get more eyes on this new set of code. When I created >>>>>>> kubernetes and ribbon there was sure some overlap of code that could >>>>>>> be shared, but I didn't push for much default/abstract code in >>>>>>> camel-core because there its new code and I also wanted to see what >>>>>>> consul, etcd, zookeeper and other distributed systems may >>>>>>> need/require. >>>>>>> >>>>>>> I like the idea of the impl.remote package to have some base >>>>>>> implementation there. >>>>>>> >>>>>>> Your current branch [2] has a good set of reusable code although its >>>>>>> tied to consul currently, so that would need to be made abstract so it >>>>>>> can be reuse by kuernetes and maybe also ribbon as well (where it >>>>>>> makes sense). >>>>>> >>>>>> I've removed some consul specific stuffs that I left by mistake, should >>>>>> be >>>>>> a little tidy now. >>>>>> >>>>>> An aspect to take into account is how to make it easy to configure >>>>>> ServiceCallServerListStrategy in case we use DefaultServiceCallProcessor >>>>>> maybe something like: >>>>>> >>>>>> serviceCall() >>>>>> .name("my-service") >>>>>> .roundRobinLoadBalancer() >>>>>> .consulServerListStrategy() >>>>>> .type(Strategy.ON_DEMAND) >>>>>> .url("http://consul-host:8500") >>>>>> .dc("west") >>>>>> .end() >>>>>> >>>>>> Too ugly ? >>>>>> >>>>> >>>>> Yeah possible - its always tricky to find the right balance. >>>>> >>>>> I wonder if you may want to do this in the configuration, and then in >>>>> the routes with serviceCall you then just need to refer to the service >>>>> name / url to be used - then all the round robin, service list, and so >>>>> on are configured outside the route in the configuration. >>>>> >>>>> We could also leave those in the route DSLs as well so you can >>>>> override the configuration, so you can use >>>>> >>>>> serviceCall().name("foo").consulConfiguraiton().dc("west").end() >>>>> >>>>> >>>>> >>>>> But then on the other hand if you just want to call a single service >>>>> you may want to do it all in the route without the configuration. But >>>>> if we look at rest-dsl then it separates the configuration from the >>>>> REST endpoint. >>>>> >>>>> >>>>> >>>>> >>>>> >>>>>>> >>>>>>> An aspect we haven't added yet could be to find out if we can expose >>>>>>> some JMX attributes and operations for thise service call EIP as well? >>>>>>> And then maybe some Camel commands so you can manage/list it from >>>>>>> karaf and other CLIs. But this part is more "nice to have" and a bit >>>>>>> "eye candy" but still somewhat cool. >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Thu, May 26, 2016 at 4:13 PM, Luca Burgazzoli >>>>>>> <lburgazz...@gmail.com> wrote: >>>>>>>> Hello, >>>>>>>> >>>>>>>> I'm playing a little bit with the new ServiceCall EIP by adding >>>>>>>> support for >>>>>>>> consul service discovery and I've committed some code in my own branch >>>>>>>> [1]. >>>>>>>> >>>>>>>> I borrowed most of the code from camel-kubernetes and as it ended up >>>>>>>> being >>>>>>>> almost a clone, I've tried to make some base/default classes as what >>>>>>>> really >>>>>>>> make the difference is the implementation of >>>>>>>> ServiceCallServerListStrategy >>>>>>>> and ServiceCallLoadBalancer so to add a simple discovery engine you >>>>>>>> only >>>>>>>> need to implement your own ServiceCallServerListStrategy and >>>>>>>> eventually your >>>>>>>> own ServiceCallLoadBalancer (i.e. for ribbon). >>>>>>>> >>>>>>>> Does it make sense ? >>>>>>>> >>>>>>>> [1] https://github.com/lburgazzoli/apache-camel/tree/CAMEL-9989 >>>>>>>> [2] >>>>>>>> https://github.com/apache/camel/compare/master...lburgazzoli:CAMEL-9989?expand=1 >>>>>>>> >>>>>>>> --- >>>>>>>> Luca Burgazzoli >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Claus Ibsen >>>>>>> ----------------- >>>>>>> http://davsclaus.com @davsclaus >>>>>>> Camel in Action 2: https://www.manning.com/ibsen2 >>>>> >>>>> >>>>> >>>>> -- >>>>> Claus Ibsen >>>>> ----------------- >>>>> http://davsclaus.com @davsclaus >>>>> Camel in Action 2: https://www.manning.com/ibsen2 >>> >>> >>> >>> -- >>> Claus Ibsen >>> ----------------- >>> http://davsclaus.com @davsclaus >>> Camel in Action 2: https://www.manning.com/ibsen2 > > > > -- > Claus Ibsen > ----------------- > http://davsclaus.com @davsclaus > Camel in Action 2: https://www.manning.com/ibsen2