akka/akka-core

Cluster sharding: Expose entity ID to the sharded actor

Aperta

#24.053 aperta il 23 nov 2017

 (17 commenti) (1 reazione) (0 assegnatari)Scala (3547 fork)batch import
help wantednice-to-have (low-prio)t:cluster-sharding

Metriche repository

Star
 (13.277 stelle)
Metriche merge PR
 (Merge medio 8g 19h) (10 PR mergiate in 30 g)

Descrizione

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)

Guida contributor