For more than five years I was working on a distributed airline system that processed thousands of transactions per second. Now I work at Codewise focusing on real time big data processing backend powering our SaaS for online marketers. Interested in high volume and low latency services I also help with implementation of services of all sizes in our company. Out of this work comes my quest for more adequate tools, services and libraries that do not break under just moderate load requiring lots of investment in basic infrastructure code.
RxJava is a library for building asynchronous and event based services using simple and powerful api. During this workshop we will create an application composed from several smaller services. These services will process requests and responses in an asynchronous manner. We will investigate advantages and drawbacks of this approach and see how RxJava helps us express such API in a way that is clear, maintainable, composable and testable. Starting from very basic RxJava usages we will venture into more demanding use cases and look how such aspects of our application as monitoring, error handling, timeouts, logging, parallelism and back pressure. APIs of internal components will also be modeled as observable sequences. This exercise is not designed to make you adopt reactive approach in every possible corner of your codebase but rather to provide fresh look at how simple and complex tasks alike can be modeled as streams and provide insight into where RxJava is and where is not a good fit.