2
votes

Has anyone done an evaluation of akka-camel vs scalaz-camel-akka? I like the functional approach that scalaz brings, and have used scalaz-camel-akka a little bit, but have not really used akka-camel.

I would be very interested in some points of comparison.

1

1 Answers

7
votes

For a general comparison of composing routes with Camel, akka-camel and scalaz-camel see this presentation slides 47-55.

With akka-camel, you are using actors to

  • consume messages from Camel endpoints
  • produce messages to Camel endpoints
  • and route/process messages in between (i.e. you build actor-based message processing routes)

The main purpose of akka-camel is to provide connectivity between Camel endpoints and actors, for exchanging messages asynchronously (and non-blocking, if supported by the endpoint). For processing messages between endpoints, you're wiring actors manually instead of composing message processors with the Camel DSL.

The scalaz-camel-akka module (of scalaz-camel) is used to exchange messages with Akka actors from within scalaz-camel routes. It allows you to integrate Akka actors into scalaz-camel routes using a functional DSL. You can even use akka-camel and scalaz-camel-akka together, for example:

  • start message processing with a scalaz-camel route
  • send the message to an actor using the (functional) DSL of scalaz-camel-akka
  • further process the message with actors and finally
  • send the message to an endpoint using akka-camel

Should you have special requirements for stateful message processing or want to scale out your integration solution take a closer look at akka-camel.