aries-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Timothy Ward <timothyjw...@hotmail.com>
Subject Re: Aries RSA - support for long running calls
Date Sun, 24 Jul 2016 13:18:52 GMT
Hi Christian, Johannes,

I have to ask, why would you not use OSGi Promises for this? Representing Long running and/or
asynchronous tasks is exactly what OSGi Promises were designed for. They're also much simpler
than CompletableFuture (which is a horrible API to try to use), and tie in to the rest of
the OSGi ecosystem (for example the current Asynchronous Services spec, the proposed Push
Stream spec and the next Log Service updates)

There is already an RSA 1.2 update needed in the next OSGi specification release - I would
be happy to work with you to define a remote services config type for asynchronous remote
service support. That way this behaviour would also be portable between implementations.

I think that having a standard here is important, because there are actually a lot of different
RSA implementations in the wild, and if they all do things completely differently then it
will be confusing to users and result in the feature not being used. It will also help to
ensure that the different providers hosted by single projects (Aries RSA and ECF both have
multiple options here) are self-consistent.

Best Regards,

Tim Ward

OSGi IoT EG Chair

Sent from my iPhone

> On 22 Jul 2016, at 16:11, Christian Schneider <chris@die-schneider.net> wrote:
> 
> Yes.. I just looked into CompleteableFuture. This looks quite good already.
> So hopefully we get some more feedback on how to proceed.
> 
> Christian
> 
> 2016-07-22 16:25 GMT+02:00 Johannes Utzig <jutzig.dev@gmail.com>:
> 
>> Hi Christian,
>> 
>> I have not stumbled upon this yet, but on first glance it looks very
>> similar to what you can do with a CompletableFuture:
>> 
>> testService.helloAsync().thenAccept(result -> System.out.println(result));
>> 
>> Looks like the main difference is that Observable allows multiple items
>> that become available over time.
>> 
>> But part of my change was a bit of a cleanup in the handling of the
>> InvocationStrategy which should make it easier to add support for
>> additional invocation strategies (like an Observable based).
>> As for the initial implementation I would prefer to keep it free of
>> additional mandatory dependencies.
>> 
>> Johannes
>> 
>> 2016-07-22 15:38 GMT+02:00 Christian Schneider <chris@die-schneider.net>:
>> 
>>> Hi Johannes,
>>> 
>>> welcome to the Aries community and thanks for the pull requests and
>> issues
>>> you already provided.
>>> 
>>> Long running calls could make a lot of sense but I am not sure if Future
>>> is still the way to go.
>>> It seems people are using Observable now (
>>> http://reactivex.io/documentation/observable.html) to be able to use
>>> rxjava (https://github.com/ReactiveX/RxJava).
>>> 
>>> So I think it might make sense to directly provide this. I am not
>>> experienced in rxjava but maybe we got some people here who know that
>>> better.
>>> 
>>> Christian
>>> 
>>> 
>>>> On 22.07.2016 15:00, Johannes Utzig wrote:
>>>> 
>>>> Hi,
>>>> 
>>>> as a quick introduction, my name is Johannes Utzig and I work for the
>>>> SEEBURGER AG.
>>>> We have been involved with aries-rsa since the beginning and maintain a
>>>> fork of it on github. We are primarily interested in the fastbin
>> transport
>>>> and I usually try to create pull requests for enhancements/fixes we're
>>>> doing that might be useful to have upstream.
>>>> 
>>>> I am currently working on adding support for long running remote calls
>>>> (several minutes/hours) to fastbin.
>>>> If possible, I would like to contribute that feature upstream if there
>> is
>>>> an interest for it.
>>>> The idea is to allow Future and CompletableFuture as return values of
>>>> remote methods.
>>>> If such a return value is detected, the invocation strategy switches to
>>>> async and the client receives an implementation of (Completable)Future
>>>> that
>>>> will be filled as soon as the call result becomes available.
>>>> 
>>>> Example Provider:
>>>> 
>>>>        public CompletableFuture<String> helloAsync() {
>>>>            return CompletableFuture.supplyAsync(() -> "Hello");
>>>>        }
>>>> 
>>>> Example Consumer:
>>>> 
>>>>      exampleService.helloAsync().get(5, TimeUnit.MINUTES));
>>>> 
>>>> A few questions about that:
>>>> 
>>>> -Does someone maybe have a better idea on how to support long
>>>> running/async
>>>> calls?
>>>> 
>>>> -would you be interested in that contribution?
>>>> 
>>>> -My implementation requires java 8 features like CompletableFuture but
>> rsa
>>>> is currently building with 1.7. Would it be OK to move to java 8 as a
>>>> target version?
>>>> 
>>>> Best regards,
>>>> Johannes
>>> 
>>> --
>>> Christian Schneider
>>> http://www.liquid-reality.de
>>> 
>>> Open Source Architect
>>> http://www.talend.com
> 
> 
> 
> -- 
> -- 
> Christian Schneider
> http://www.liquid-reality.de
> <https://owa.talend.com/owa/redir.aspx?C=3aa4083e0c744ae1ba52bd062c5a7e46&URL=http%3a%2f%2fwww.liquid-reality.de>
> 
> Open Source Architect
> http://www.talend.com
> <https://owa.talend.com/owa/redir.aspx?C=3aa4083e0c744ae1ba52bd062c5a7e46&URL=http%3a%2f%2fwww.talend.com>

Mime
View raw message