Showing posts from February, 2016

Lesson learned with Ratpack and RxJava

We recently encountered an issue with integrating Ratpack with RxJava'sObservables.  This post will detail what the error was, how it was broken and how it was fixed.

The code  Essentially, our handler code was as follows (NOTE: see git project for this class and also a test showing the behaviour of the broken code):
@Overridepublic void handle(Context context) throws Exception { Observable<String> contentFromDownstreamSystem = observableOnDifferentThreadService.getContent(); contentFromDownstreamSystem.subscribe(response -> { context.render("Downstream system returned: " + response); } ); }

The code above retrieves an Observable from a service.  As implied by the variable name, the Observable emits items on a different thread when it is subscribed to.  The Obsevable I have used to illustrate this issue is very simple and can be found here.  In our real world example, our Observable represented a ResultSetFuture from Cassandra wh…