[
https://issues.apache.org/jira/browse/CXF-6833?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sergey Beryozkin resolved CXF-6833.
-----------------------------------
Resolution: Fixed
This is how it is bootstrapped via CXF WebClient (or JAX-RS 2.1
InvocationBuilder):
https://github.com/apache/cxf/blob/master/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/reactive/JAXRSReactiveTest.java#L126
It might change later on.
On the server it is also quite interesting, example:
https://github.com/apache/cxf/blob/master/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/reactive/ReactiveService.java#L92
This streams back an array of JSON entries as soon as they are reported to
Observable subscriber.
Thanks
> 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.3.4#6332)