Learning Akka
3.7 (157 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
865 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Learning Akka to your Wishlist.

Add to Wishlist

Learning Akka

Explore the Akka toolkit to build highly scalable and robust applications
3.7 (157 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
865 students enrolled
Created by Packt Publishing
Last updated 2/2016
Curiosity Sale
Current price: $10 Original price: $75 Discount: 87% off
30-Day Money-Back Guarantee
  • 3.5 hours on-demand video
  • 1 Supplemental Resource
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • Explore Akka's version of the actor model
  • Find out how actors solve concurrency problems
  • Build applications using Akka’s basic tools
  • Master different techniques to route messages to the actors in Akka
  • Change actor behavior on runtime using Become/Unbecome and FSM
  • Build stateful actors with Akka Persistence
  • Create your first cluster and discover how it can be used to build a fault-tolerant system
  • Use various techniques for testing an actor
  • Set up a stream system to work with Big Data
  • Expose your application to the web using Akka HTTP
  • See common actor development patterns in Akka
View Curriculum
  • This video course delivers a methodical, step-by-step explanation of the major components of the Akka toolkit through practical code examples. We put everything together in the last stretch of the course to show you how Akka works in the wild.
  • Software version required: Akka 2.x

Akka helps you to build scalable, resilient, and fault-tolerant distributed systems that can provide outstanding performance on local machines as well as over remote networks. Employing the actor model, it is possible to leverage these lightweight entities to program highly available, high performance applications. It delivers a powerful scaffolding that can be used to delegate remoting, service failures, and load management so that you can focus solely on your system logic.

Learning Akka delivers a clear and practical introduction to the Akka toolkit, explaining the key components you need to know to get up and running with developing applications of your own.

We will start by looking at the actor model and how it solves concurrency problems. You will learn about the actor system, how to create hierarchical structures in Akka, and how to make routes in order to send messages to other actors. We will look at other use cases such as building an actor that can change its behavior during runtime. You will then create stateful actors, work with a cluster system, and work with remote actors. This course will also take you through testing the application with Akka testkit and making applications available over the web with Akka HTTP. Finally, we’ll employ best practices and you’ll get to know the common actor patterns used for development with Akka.

By the end of this course, you’ll have a great foundation in Akka that will enable you to develop excellent applications and services with the toolkit.

About The Author

Salma is a senior software engineer with over 5 years of professional experience in development and deploying applications on the JVM using both functional and object-oriented paradigms including Scala and Java. She is specialized in designing and engineering real-time applications and distributed systems based on Akka and using frameworks and libraries like Play2, Thrift, Vertx, Django, Rails, and multiple SQL and NoSQL storage systems, for example MongoDB, Cassandra, Neo4J, Elasticsearch, and PostgreSQL.

She contributed in architecting and implementing a large real-time platform based on Akka cluster and WebSockets. She has gained experience in leading a number of agile teams to the successful delivery of several key projects.

Now, She is working on Big data application and contributing in architecting and implementing the core system based on Scala and Akka.

Who is the target audience?
  • For Scala developers who are interested in building concurrent, scalable, and fault-tolerant applications with Akka, this course delivers the knowledge needed to do just that.
Students Who Viewed This Course Also Viewed
Curriculum For This Course
42 Lectures
Exploring the Actor World
4 Lectures 14:11

This video provides an overview of the entire course.

Preview 03:22

To start working with Akka and Actors, we need to understand what the Actor Model is and why we use the Actor Model on concurrent programs

Understanding the Actor Model

To get our hands dirty with web development in Akka, we first need to get ourselves introduced to Akka concepts and terminologies.

Concepts and Terminology

In this video, we'll take our first steps in creating our first Akka project.

Let's Create Hello World
Playing with Actors
5 Lectures 23:20

In this video, we will talk about Actor System and the structure for actors to understand the actor relationships better.

Preview 04:35

Like us, every actor has different stages and phases it goes through. We need to master them before going ahead and implementing them in our workflow.

Actor Components and Lifecycle

We've been introduced to the lifecycle; now let's take this a step further and understand actor creation.

Creating an Actor with Props

Communication between actors is what we'll be looking at in this video.

Talking to an Actor

We saw how communication between actors works, but let's take a deeper look at dependency relationships and failure responses in this video.

Supervision and Monitoring
Working with Akka Basic Tools
4 Lectures 20:25

To be able to work with actors, we need to grasp the basics of how to identify and locate actors. In this video, we will see these methods to do just that.

Preview 05:03

It is important to ensure that a sent message reaches its intended destination without any errors. To know this functionality better, let's get introduced to routing in Akka.

Sending Messages via Router

We've now come to a stage where it is important to understand change in actor behavior at runtime. We'll do this using become and unbecome.

Replacing Actor Behavior via become/unbecome

Let's jump to the next method of changing actor behavior at runtime — FSM.

Replacing Actor Behavior via FSM
Akka Persistence
5 Lectures 23:56

To increase the efficiency of our actors, we need to understand persistence in Akka. This video is dedicated to get us started on the persistence front.

Preview 04:27

Let's see how to implement persistence in Akka by implementing a Persistent Actor in this video.

Creating Persistent Actors

The power of persistence lies in how we can recover the state of our actors. Let's play around with snapshots and the recovery mode to understand them better.

Playing with a Persistent Actor

As we go ahead, let's look at the implementation of Persistent Actor that can replace its behavior via FSM.

Persistence FSM

Persistence Query is powerful enough to fulfill the query needs of our app. Let's get introduced to it in this video.

Persistence Query
Working with Akka Cluster
5 Lectures 26:19

In real life, your application might get divided in multiple nodes. For this, we need to deal with remote actors.

Preview 05:26

In Scala projects, you need to design your application across a cluster. To do this, we will introduce the Akka cluster and build a simple cluster.

Building a Cluster

In your cluster, you need to balance work over nodes. So, we will introduce how we can add load balancer to your cluster.

Adding Load Balancer to a Cluster Node

In some cases, you want to run instances from specific actors. To do so, we will introduce a Cluster Singleton.

Creating a Singleton Actor in the Cluster

Sometimes, you have many stateful actors that together consume more resources, so you need to distribute them across several nodes in the Cluster without having to care about their physical location in the Cluster.

Cluster Sharding
Testing Actors
4 Lectures 20:05

The Actor class is not like a normal class and actors do their work asynchronously. So, we can't test it like a normal class. Hence, we will introduce some ways to test the actor logic.

Preview 05:44

When you have parent and child actors, you need to test each actor without another actor. So, we will introduce a dependency-injection to test the parent and child actor.

Testing a Parent-child Relationship

When you have an FSM actor in your application, you want to test if you implement state machine correctly or not. So, we will introduce how to test the FSM actor logic.

Testing FSM

When you implement remote actor's runs on different nodes, you want to test how these nodes will act. So we will introduce Multi Node test kit.

Multi Node Testing
Working with Akka Streams
5 Lectures 25:45

When you start dealing with processing big data, you will face two main problems, Blocking and Back pressure. So, we will introduce Akka Streams to solve your problems.

Preview 05:37

To understand the Akka Stream, we will implement the reactive tweets application.

Reactive Tweets

We want to write unit tests for any code line you wrote. So, we will introduce different ways to test your streams.

Testing Streams

Not everything can be expressed as a linear sequence of Akka streams. So, we will introduce Flow Graphs.

Working with Graphs

If you want to use files as a source or sink, we will introduce Akka Stream IO.

Working with Stream IO
Working with Akka HTTP
5 Lectures 23:38

In some cases, we want your application to interact with the external world. So, we will introduce the Akka HTTP Module.

Preview 04:04

In some cases, your application needs to consume data from external services. So, we will introduce the Akka HTTP Client-side API and the different levels on it.

Working with Client-side API

In some cases, your application wants to provide services for the external world. So, we will introduce the Akka HTTP Server-side API and the different levels on it.

Working with Server-side API

To understand the server-side API. We will implement more complex examples.

Let's Implement a REST API

When you provide a service for the external world, you will need to implement test cases for it. So, we will implement test cases for our REST API that was implemented in the previous video as an example of how to use the akka-http-test kit.

Let's Test Our REST API
Working with Common Patterns in Akka
5 Lectures 20:08

In this video, we will introduce Balancing Workload Across Nodes pattern.

Preview 05:34

What if your application sends HTTP requests to an external service and you want to limit the number of requests during a specific period? Here, we will introduce the Throttling Messages pattern to control the rate of messages sent.

Throttling Messages

In Akka, we don't have a flag, configuration setting, or callback function; we can register for it to tell Akka to shutdown the actor system when the app is finished. We will introduce the pattern to control when the actor system should terminate.

Shutdown Patterns

What if you have children actors and you want to terminate them on a specific order after the parent terminated? We will introduce the Ordered Termination pattern.

Ordered Termination

If you want to schedule messages that send every interval in actor, we will introduce the scheduling periodic messages pattern.

Scheduling Periodic Messages
About the Instructor
Packt Publishing
3.9 Average rating
7,297 Reviews
52,159 Students
616 Courses
Tech Knowledge in Motion

Packt has been committed to developer learning since 2004. A lot has changed in software since then - but Packt has remained responsive to these changes, continuing to look forward at the trends and tools defining the way we work and live. And how to put them to work.

With an extensive library of content - more than 4000 books and video courses -Packt's mission is to help developers stay relevant in a rapidly changing world. From new web frameworks and programming languages, to cutting edge data analytics, and DevOps, Packt takes software professionals in every field to what's important to them now.

From skills that will help you to develop and future proof your career to immediate solutions to every day tech challenges, Packt is a go-to resource to make you a better, smarter developer.

Packt Udemy courses continue this tradition, bringing you comprehensive yet concise video courses straight from the experts.