On Wed, Jun 1, 2016 at 2:53 PM, Luca Burgazzoli <lburgazz...@gmail.com> wrote:
> ---
> Luca Burgazzoli
>
>
> On Wed, Jun 1, 2016 at 2:44 PM, Luca Burgazzoli <lburgazz...@gmail.com> wrote:
>> ---
>> Luca Burgazzoli
>>
>>
>> On Wed, Jun 1, 2016 at 9:13 AM, Luca Burgazzoli <lburgazz...@gmail.com> 
>> wrote:
>>> Will fix them today
>>> ---
>>> Luca Burgazzoli
>>>
>>>
>>> On Wed, Jun 1, 2016 at 8:56 AM, Claus Ibsen <claus.ib...@gmail.com> wrote:
>>>> Hi
>>>>
>>>> Looks good there is only a few spots I have some comments.
>>>>
>>>> - There is some code that has not null check for load balancer /
>>>> server list strategy. The kubernetes component can do without that
>>>> when you use ENV or DNS as lookup.
>>
>> Can you point me out to such places ?
>>
>
> Sorry found it, in fact now Env returns an immutable list which
> contains a single server.
> BTW, was DNS support complete in Kubernetes ServiceCall ? looking at
> the code looks like ip/port are never set
>

The DNS uses a domain name that includes the service name but without
ip and port number. And then it has some convention for a prefix /
suffix etc.

But yeah it may need a bit more look and testing running on a k8s platform.



>>>>
>>>> - There was a place where you do some logging and it says Consul when
>>>> its in fact generic
>>>>
>>>> - You have label("ServiceCall") but that label name seems wrong. eg
>>>> notice that label is like a "tag" not a leading label in a UI form
>>>> etc. Yeah we should maybe have named it "tag" or "group" instead.
>>>>
>>>> - In the Java DSL we often have it return Type so you do not change
>>>> the type and makes the fluent easier to use. Only if you need to do
>>>> some more advanced configuration then we have other methods that
>>>> return the ServiceCallDefinition type so you can call specialized
>>>> method on that in the Java DSL.
>>>>
>>>>
>>>>
>>>>    serviceCall().name("foo").loadBalancer("random").end()
>>>>    // here you have the ServiceCallDefinition in the DSL to call
>>>> specialized methods. But have to call end() to end it
>>>>
>>>>   And then with short hand that just return type
>>>>
>>>>    serviceCall("foo")
>>>>    // here the Type is not changed and you just want to call the
>>>> service foo, and NOT do any other configuration. Then you do not need
>>>> the end()
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On Tue, May 31, 2016 at 4:54 PM, Luca Burgazzoli <lburgazz...@gmail.com> 
>>>> wrote:
>>>>> 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
>>>>
>>>>
>>>>
>>>> --
>>>> 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

Reply via email to