Description
There are some major changes that have been added to the dotnet version of Proto.Actor that needs to be ported over to Go also:
ActorSystem
ActorSystem
, instead of the current global allocation of actors, we introduced the Akka-like ActorSystem to Proto.Actor dotnet.
This helps with configuration and testing. e.g. it makes it possible to run multiple remote and cluster instances in a single test.
This is a fairly major rewrite that needs to be completed before any other updates can be ported over.
ActorSystem Configuration
Minor update where it is possible to configure DeadLetter logging to throttle after x messages in y time.
IIdentityLookup
IIdentityLookup
, allows for pluggable cluster actor identity lookups.
e.g. dotnet now has a MongoIdentityLookup, which becomes the source of truth for actor placements.
Cluster vs Remote configuration
Wit the introduction of IIdentityLookup, the "Known kinds" of remote
has been split into two, RemoteKinds and ClusterKinds.
The functionality is still the same, but the backing implementations can differ.
e.g. cluster actors are initialized with cluster information.
ClusterInit
Related to the above, each cluster actor is initialized with a ClusterInit
message upon start, this message contains the Identity, Kind and Cluster instance information.
Cluster Actor Placement strategies
We are also working on adding more strategies for Cluster actor placement. e.g. a "Local affinity strategy", where the actors are spawned at the first node that request them (if possible).
This works extremely well with scenarios such as ingesting data from partitioned Kafka topics. where the actors related to messages on a given topic then becomes local.