While researching tech for a new project I've seen sure seen the words react, reactor and reactive come up a lot. Confusingly the term reactive is somewhat overloaded so I'll try to define what we mean by it in which context giving some hopefully clarifying examples. This is just some notes to help me think about this stuff so it might not be 100% right.
As a brief introduction reactive programming is [about non-blocking applications that are asynchronous and event-driven and require a small number of threads to scale vertically (i.e. within the JVM) rather than horizontally (i.e. through clustering).][1]
Let me give a generic example which is pertinent and will hopefully illustrate why this has become a hot topic.
In a typical web server we would have a thread per request model. Meaning that for each request made to the web server a single thread would service this request for its lifetime. The thread may go off and perform some blocking IO, e.g. reading a file, connecting to database or making a call to