[ 
https://issues.apache.org/jira/browse/CXF-6833?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15263899#comment-15263899
 ] 

Sergey Beryozkin commented on CXF-6833:
---------------------------------------

I suppose you can have a MessageBodyWriter supporting Observable, so if the 
method returns Observable then this writer will be selected, and its writeTo 
method it will get the data in needs or may be will stream from it and write to 
OutputStream.

I'm going to do a bit of home-work on it to get a better understanding of the 
whole technology.


> support RxJava Observable<T> in return values as a more composeable 
> alternative to Future<T>
> --------------------------------------------------------------------------------------------
>
>                 Key: CXF-6833
>                 URL: https://issues.apache.org/jira/browse/CXF-6833
>             Project: CXF
>          Issue Type: Sub-task
>          Components: JAX-RS
>            Reporter: james strachan
>             Fix For: 3.2.0
>
>
> when invoking multiple REST services concurrently in a microservice kinda 
> world it can be really helpful to use RxJava's Observable<T> so that you can 
> easily compose concurrent asynchronous requests together.
> e.g. see this blog:
> http://joluet.github.io/blog/2014/07/07/rxjava-retrofit/
> Its basically about using RxJava's Observable<T> as the result type; which is 
> a little like a Future<T> but can handle streams of values and is composable.
> It would be great to do this both on the client and server side; as a server 
> may invoke multiple asynchronous back ends and return a composition of 
> results etc.
> e.g.
> {code}
> @GET("/session.json")
> Observable<LoginResponse> login();
> @GET("/user.json")
> Observable<UserState> getUserState();
> {code}
> you can then use the Observable<T> composition methods to join / flatMap  to 
> compose multiple requests across different microservice invocations together 
> with timeouts etc e.g. to compose the latest from 2 calls:
> {code}
> Observable.combineLatest(api.fetchUserProfile(), api.getUserState(),
> (user, userStatus) -> new Pair<>(user, userStatus));
> {code}
> and you're done! There's support for timeouts and other kinds of composition 
> mechanisms too.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to