Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What are the language and product alternatives to Akka?

Tags:

Right now I'm looking at Play Framework and like it a lot. One of the parts heavy advertised amongst the features offered in Play is Akka.

In order to better understand Akka and how to use it properly, can you tell me what are the alternatives in other languages or products?

How does RabbitMQ compare to it? Is there a lot of overlap? Is it practical using them together? IN what use cases?

like image 398
Mike Z Avatar asked Apr 22 '12 14:04

Mike Z


2 Answers

I use RabbitMQ + Spring AMQP + Guava's EventBus to automatically register Actor-like messengers using Guava's EventBus for pattern matching the received messages.

The similarity to Spring AMQP and Akka is uncanny. Spring AMQP's SimpleMessageListenerContainer + MessageListener is pretty much equivalent to an Actor.

However for all intents and purposes RabbitMQ is more powerful than Akka in that it has many client implementations in different languages, provides persistence (durable queues), topological routing and pluggable QoS algorithms.

That being said Akka is way more convenient and in theory Akka can do all of the above and some people have written extensions but most just use Akka and then have Akka deliver the messages over RabbitMQ. Also Spring AMQP SimpleMessageListener container is kind of heavy and its unclear what would happen if you created a couple of million of them.

In hindsight I would consider using Akka to RabbbitMQ instead of Spring AMQP for future projects.

like image 146
Adam Gent Avatar answered Oct 01 '22 23:10

Adam Gent


The best place to start is a great Akka official documentation. I think the closest product/framework to Akka is erlang language. I guess (I haven't used Play framework) Akka is used there to implement Comet and other asynchronous processing.

rabbitmq is somewhat similar in ideas (infrastructure for sending messages), note that RabbitMQ is even written in erlang, but they have slightly different use-cases. I would say that while RabbitMQ focuses on message passing, Akka is more about actors (message receivers and senders).

like image 41
Tomasz Nurkiewicz Avatar answered Oct 01 '22 22:10

Tomasz Nurkiewicz