0
votes

I'm building a simple REST API for generating some objects that must be created and sent periodically out of the API. The nature of the objects doesn't matter, neither the framework supporting the REST interface (Spray, Play Framework, whatever else). My question is, what would be a good scalable actor design for this system using Akka? Suppose the service crashes or it's migrated or whatever that causes to stop it. In order to recover the description of the tasks about what objects must be sent and when, is akka-persistence a good way to go here? or it's better to persist such things in a traditional DB?

Thanks.

NOTE: also I would like to know, supposing there's some actor which is not stateful himself, but creates many children actors, if it's a good practice to use akka-persistence in order to replay the messages which causes this actor to create his children again (the children being also non-stateful).

1
github.com/interagent/http-api-design guide extracted from work on the Heroku.yeyo
What are your concerns about akka-persistence not being a good way to go?Eric Zoerner
@EricZoerner No concerns, just want to know if this fits as a good use case, or there's something neater to be use in this scenario.ale64bit

1 Answers

1
votes

In a traditional DB you would most likely end up modeling this with timestamps and events, and with event sourcing this is already the native model.

Akka-persistence would be a natural fit for this scenario since it will persist every event about what objects must be created and sent periodically out. The snapshot support will also help with speed of recovery when the number of events gets very large.

In the case of crashes or migration, the recovery process will handle this just fine.

Regarding your note, if the actor is truly stateless then there is no need to persist the events that cause the children to be created since they can be recreated on demand. If the existence of the children does need to be recovered, then the actor is not stateless. In that case then it may indeed make sense to persist those events.