Akka is one of the most prominent and powerful frameworks for building reactive distributed systems, but it's not a perfect fit for every project. In particular, Akka is strongly associated with the Scala language, and Typesafe's ecosystem in particular, and most of the large-scale software projects that could benefit from Akka's event processing capabilities are already committed to other languages and tools. In this post, I'll give a quick overview of how to integrate an Akka ActorSystem into an otherwise commonplace Spring Boot application, written in Java, just as one might encounter in many business and startup environments. But first, some background.

In Typesafe's own words, "Akka is a toolkit and runtime for building highly concurrent, distributed, and resilient message-driven applications on the JVM." Akka structures a system into many concurrent processing units called Actors, which communicate purely by passing messages back and forth. Compared to traditional concurrent techniques, such as threads or fork-based multiprocessing, actors are easier to write, safer to use, and far more lightweight on a system. Likewise, compared to frameworks like Hadoop or Spark, Akka actors are far more flexible, lending themselves to dynamic message flows rather than pure bulk data processing.