Blog Posts

Akka Streams is a powerful implementation on top of the Reactive Streams SPI for non-blocking asynchronous communication with back-pressure on the JVM. This post is not about explaining what this means, nor what Akka Streams does. The purpose of this post is to explain what on earth the NotUsed type in type signatures of Akka Streams is all about which ... Read More

The post Akka Streams – What is NotUsed all about appeared first on manuel bernhardt.

Tags: #akka #it

Akka anti-patterns: blocking
15.05.2017 07:59 by Manuel

This is probably one of the most frequent (and dangerous) anti-patterns when it comes to working with Akka. Let’s look at an adequate description of the mindset you must be in in order to use it: So maybe you didn’t actually want to see the world burn. Maybe you thought that this one time it was okay to call blocking ... Read More

The post Akka anti-patterns: blocking appeared first on manuel bernhardt.

Choosing Akka as a tool is often – if not always – driven by the need for good performance. Surely, the actor model itself is appealing as a means for organizing and reasoning about code, but this isn’t in itself a good reason enough to use the Akka toolkit. If all you are concerned about is a nice way to ... Read More

The post Akka anti-patterns: being out of touch with the hardware appeared first on manuel bernhardt.

Update: removed rogue toString call in the second code example, since it was unnecessary (and harmful). Debugging actor systems is no small feat, even when there is IDE support for it. In fact, debugging any asynchronous system for that matter is a rather complicated task. Which is why, especially during development, it is not entirely uncommon to rely on DEBUG ... Read More

The post Akka anti-patterns: logging (the wrong way) appeared first on manuel bernhardt.

Admittedly I’ve seen this one in use only one time, but it was one time too many. For some reason I keep seeing clients come up with this during design discussions and reviews though, therefore it makes it into the list of Akka anti-patterns. What I am talking about is this: Reasons I hear for this design: isolation of concerns: ... Read More

The post Akka anti-patterns: too many actor systems appeared first on manuel bernhardt.

The actor model makes it possible to build highly-concurrent applications through the notion that actors obey the actor send rule and the actor subsequent processing rule, hence creating a single-threaded environment inside of an actor. That being said, it’s all an illusion: as we have briefly talked about previously, Akka’s dispatchers make sure that messages are being processed by actors ... Read More

The post Akka anti-patterns: race conditions appeared first on manuel bernhardt.

One of the fundamental ideas built into Akka is the one of failure handling through parental supervision. In other words this means agencing actors in such a way that parent actors that depend upon the correct execution of a child to perform their work are also responsible for deciding what to do when one of the child actor crashes. An ... Read More

The post Akka anti-patterns: flat actor hierarchies or mixing business logic and failure handling appeared first on manuel bernhardt.

When I work with clients on designing actor systems there are a few anti-patterns that seem to make it into initial, non-reviewed designs no matter what. In this series of short articles I would like to cover a few of those. Anti-pattern #1: sharing mutable state accross actors Even though the Akka documentation points this out in various places, one ... Read More

The post Akka anti-patterns: shared mutable state appeared first on manuel bernhardt.

It is quite extraordinary what is possible nowadays with a group of interested developers and powerful tools such as Scala and Akka. Three months ago we had our first Akka Workshop here at the Vienna Scala User Group (VSUG), in … Continue reading
Here are 3 learnings from last weeks Akka coding session, in which all participants connected their Actors in order to participate in a Prisoner’s Dilemma competition. 1. Prepare Your Networking Infrastructure for Akka Akka needs TCP connections in order to … Continue reading