akka/akka-core

Cluster sharding: Expose entity ID to the sharded actor

Open

#24,053 opened on Nov 23, 2017

View on GitHub
 (17 comments) (1 reaction) (0 assignees)Scala (3,547 forks)batch import
help wantednice-to-have (low-prio)t:cluster-sharding

Repository metrics

Stars
 (13,277 stars)
PR merge metrics
 (Avg merge 8d 19h) (10 merged PRs in 30d)

Description

Apologies in advance if this issue was brought up in the past. I tried to search for it, but couldn't find anything...

Currently, sharded actors don't have access to their entity identifier. The example in the docs uses self.path.name, but that is URL-encoded and not the actual ID. On top of that, this seems to be an implementation detail - the encoded ID happens to be what the shard uses for the actor name. At the same time, it is obvious that adding an Actor.entityId method is not a good solution (actors don't know whether or not they're sharded).

So I suggest modifying the ClusterSharding.start (or adding another API next to it) so that instead of taking Props as a parameter, it would take a String => Props function that would get invoked with the entity ID. What do you think?

(Of course, I wouldn't mind doing a PR for it, if there's interest)

Contributor guide