java.lang.Object
org.apache.pekko.cluster.sharding.typed.scaladsl.Entity<M,E>

public final class Entity<M,E> extends Object
  • Method Details

    • apply

      public static <M> Entity<M,ShardingEnvelope<M>> apply(EntityTypeKey<M> typeKey, scala.Function1<EntityContext<M>,Behavior<M>> createBehavior)
      Defines how the entity should be created. Used in ClusterSharding.init(org.apache.pekko.cluster.sharding.typed.scaladsl.Entity<M, E>). More optional settings can be defined using the with methods of the returned Entity.

      Parameters:
      typeKey - A key that uniquely identifies the type of entity in this cluster
      createBehavior - Create the behavior for an entity given a EntityContext (includes entityId)
    • createBehavior

      public scala.Function1<EntityContext<M>,Behavior<M>> createBehavior()
    • typeKey

      public EntityTypeKey<M> typeKey()
    • stopMessage

      public scala.Option<M> stopMessage()
    • entityProps

      public Props entityProps()
    • settings

      public scala.Option<ClusterShardingSettings> settings()
    • messageExtractor

      public scala.Option<ShardingMessageExtractor<E,M>> messageExtractor()
    • allocationStrategy

      public scala.Option<ShardCoordinator.ShardAllocationStrategy> allocationStrategy()
    • role

      public scala.Option<String> role()
    • dataCenter

      public scala.Option<String> dataCenter()
    • withEntityProps

      public Entity<M,E> withEntityProps(Props newEntityProps)
      pekko.actor.typed.Props of the entity actors, such as dispatcher settings.
    • withSettings

      public Entity<M,E> withSettings(ClusterShardingSettings newSettings)
      Additional settings, typically loaded from configuration.
    • withStopMessage

      public Entity<M,E> withStopMessage(M newStopMessage)
      Message sent to an entity to tell it to stop, e.g. when rebalanced or passivated. If this is not defined it will be stopped automatically. It can be useful to define a custom stop message if the entity needs to perform some asynchronous cleanup or interactions before stopping.
    • withMessageExtractor

      public <Envelope> Entity<M,Envelope> withMessageExtractor(ShardingMessageExtractor<Envelope,M> newExtractor)
      If a messageExtractor is not specified the messages are sent to the entities by wrapping them in ShardingEnvelope with the entityId of the recipient actor. That envelope is used by the HashCodeMessageExtractor for extracting entityId and shardId. The number of shards is then defined by numberOfShards in ClusterShardingSettings, which by default is configured with pekko.cluster.sharding.number-of-shards.
    • withAllocationStrategy

      public Entity<M,E> withAllocationStrategy(ShardCoordinator.ShardAllocationStrategy newAllocationStrategy)
      Allocation strategy which decides on which nodes to allocate new shards, ClusterSharding.defaultShardAllocationStrategy(org.apache.pekko.cluster.sharding.typed.ClusterShardingSettings) is used if this is not specified.
    • withRole

      public Entity<M,E> withRole(String newRole)
      Run the Entity actors on nodes with the given role.
    • withDataCenter

      public Entity<M,E> withDataCenter(String newDataCenter)
      The data center of the cluster nodes where the cluster sharding is running. If the dataCenter is not specified then the same data center as current node. If the given dataCenter does not match the data center of the current node the ShardRegion will be started in proxy mode.