camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Claus Ibsen <claus.ib...@gmail.com>
Subject Re: Consul ServiceCall EIP
Date Sun, 29 May 2016 07:42:39 GMT
On Thu, May 26, 2016 at 7:30 PM, Luca Burgazzoli <lburgazzoli@gmail.com> wrote:
> ---
> Luca Burgazzoli
>
>
> On Thu, May 26, 2016 at 7:06 PM, Claus Ibsen <claus.ibsen@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 <lburgazzoli@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

Mime
View raw message