Book Image

Building Applications with Scala

By : Diego Pacheco
Book Image

Building Applications with Scala

By: Diego Pacheco

Overview of this book

<p>Scala is known for incorporating both object-oriented and functional programming into a concise and extremely powerful package. However, creating an app in Scala can get a little tricky because of the complexity the language has. This book will help you dive straight into app development by creating a real, reactive, and functional application. We will provide you with practical examples and instructions using a hands-on approach that will give you a firm grounding in reactive functional principles.</p> <p>The book will take you through all the fundamentals of app development within Scala as you build an application piece by piece. We’ve made sure to incorporate everything you need from setting up to building reports and scaling architecture. This book also covers the most useful tools available in the Scala ecosystem, such as Slick, Play, and Akka, and a whole lot more. It will help you unlock the secrets of building your own up-to-date Scala application while maximizing performance and scalability.</p>
Table of Contents (17 chapters)
Building Applications with Scala
Credits
About the Author
Acknowledgments
About the Reviewer
www.PacktPub.com
Preface

Actor routing


Akka provides routing functionality. This is useful from a business point of view because you can route to the right Actor in the sense of business logic and behavior. For architecture, we can use this as load balancing and route messages to more Actors to achieve fault tolerance and scalability.

Akka has several options for routing, which are as follows:

  • RoundRobin: This is a random logic to every different Actor on the pool.

  • SmallestMailbox: This sends the message to the Actor with fewer messages.

  • Consistent Hashing: This partitions the Actors per hash ID.

  • ScatterGather: This sends message to all actors, and the first to reply wins.

  • TailChopping: This sends to a route randomly, and if a reply doesn't come back in a second, it chooses a new route and sends again, and so on.

Let's see the following code in practice:

    import akka.actor._ 
    import akka.routing.RoundRobinPool  
    class ActorUpperCasePrinter extends Actor { 
      def receive = { 
    ...