We are avid Thrift/Finagle users and can honestly say there is nothing out there that compares to Finagle.
A few things you get out-of-the box with Finagle:
- Automatic compilation of services and clients with Scrooge
- Integration with both Java And Scala of data structures(again Scrooge)
- Ability to add Thrift dependencies to a project.(Scrooge will extract and compile IDL for jars etc).
- You have the
maven-finagle-thrift
plugin, which is a Maven flavour of Scrooge.
Now about Finagle, have a look here. Compared to Finagle, Spray is a toy. Finagle is by far the best Scala tool for distributed services:
- Scalable centralized logging out of the box(Zipkin)
- Automatic management, metrics and a lot more goodies with Twitter Server.
- Out-of-the-box Zookeeper and Mesos integration
- Highly efficient separation of concerns(
ThriftMux
and handlers etc.)
- A plethora of protocols for high performance tools
- A concurrency model that will easily outperform Akka on RPC requests(where actors can't be used).
I'm not aware of other Thrift options so deeply integrated with Scala and there's little reason to go outside of Finagle. You do however have to go with the full ecosystem to really benefit from it.