Hacker News new | ask | show | jobs
by rtpg 4420 days ago
I had the luck of working on a Scala-akka project recently, and enjoyed it enough, wouldn't mind playing with it again.

It is odd that something based on the actor model could be so overengineered though. This is in spite of the fact that messages are untyped!

The library did feel very solid though, our project was deployed on a pretty big network and we had no issues on the akka side concerning messaging, and this was with some extremely heavy traffic message-wise.

2 comments

In Akka you can use typed actors as well: http://doc.akka.io/docs/akka/snapshot/scala/typed-actors.htm...
It seems that typed actor support it somewhat incomplete. Once you wanted to use typed actors with routers and resizing, there was no documentation. There were some mailing lists posts with suggestions that don't work. I don't know if anything changed in the meanwhile, but this blog post suggests that it's still not well-supported:

http://blog.codacy.com/2014/01/29/typed-actors-with-routing/

One thing that I dislike about the Akka implementation of actors is that they can't block, because this would block a thread in the thread pool. Quasar's implementation of actors allow you to block on e.g. I/O, because Quasar can preempt fibers that are parked. This makes Quasar's actor framework much more powerful and more Erlang-like.

Under Scala 2.10 there were bugs in the reflection system that made those almost unusable; is that now all fixed?
I agree on the part that working with Scala and akka is enjoyable! :)

About being over-engineered... well, it is quite extensive for what it does but I'm not sure I agree with it being over-engineered...

I also found that it's a bit difficult to debug, since I often have request-response chains (like: get raw transaction (1) of an incoming transaction, get raw transaction (2) of the input, create a new transaction using the output of (2)...) and one chain of messages gets mixed up with another chain of messages. So it gets somewhat confusing in the logs. But I guess that's a common problem of event-driven programming...