[ https://issues.apache.org/jira/browse/CXF-6833?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Colm O hEigeartaigh closed CXF-6833. ------------------------------------ > 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 > Assignee: Sergey Beryozkin > 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.4.14#64029)