Class ShardingConsumerController
ShardingConsumerController
is used together with ShardingProducerController
. See the description
in that class or the Pekko reference documentation for how they are intended to be used.
ShardingConsumerController
is the entity that is initialized in ClusterSharding
. It will manage
the lifecycle and message delivery to the destination consumer actor.
The destination consumer actor will start the flow by sending an initial pekko.actor.typed.delivery.ConsumerController.Start
message via the ActorRef
provided in the factory function of the consumer Behavior
.
The ActorRef
in the Start
message is typically constructed as a message adapter to map the
pekko.actor.typed.delivery.ConsumerController.Delivery
to the protocol of the consumer actor.
Received messages from the producer are wrapped in pekko.actor.typed.delivery.ConsumerController.Delivery
when sent to the consumer,
which is supposed to reply with pekko.actor.typed.delivery.ConsumerController.Confirmed
when it has processed the message.
Next message from a specific producer is not delivered until the previous is confirmed. However, since
there can be several producers, e.g. one per node, sending to the same destination entity there can be
several Delivery
in flight at the same time.
More messages from a specific producer that arrive while waiting for the confirmation are stashed by
the ConsumerController
and delivered when previous message was confirmed.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final class
static class
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic <A,
B> Behavior<ConsumerController.SequencedMessage<A>> apply
(scala.Function1<ActorRef<ConsumerController.Start<A>>, Behavior<B>> consumerBehavior) TheBehavior
of the entity that is to be initialized inClusterSharding
.static <A,
B> Behavior<ConsumerController.SequencedMessage<A>> create
(Function<ActorRef<ConsumerController.Start<A>>, Behavior<B>> consumerBehavior) Java API: TheBehavior
of the entity that is to be initialized inClusterSharding
.static <A,
B> Behavior<ConsumerController.SequencedMessage<A>> create
(Function<ActorRef<ConsumerController.Start<A>>, Behavior<B>> consumerBehavior, ShardingConsumerController.Settings settings) Java API: TheBehavior
of the entity that is to be initialized inClusterSharding
.static <A> Class<ConsumerController.SequencedMessage<A>>
Java API: The genericClass
type forConsumerController.SequencedMessage
that can be used when creating anEntityTypeKey
for theShardedConsumerController
withClass<EntityTypeKey<ConsumerController.SequencedMessage
.>> static <A,
B> Behavior<ConsumerController.SequencedMessage<A>> withSettings
(ShardingConsumerController.Settings settings, scala.Function1<ActorRef<ConsumerController.Start<A>>, Behavior<B>> consumerBehavior) TheBehavior
of the entity that is to be initialized inClusterSharding
.
-
Constructor Details
-
ShardingConsumerController
public ShardingConsumerController()
-
-
Method Details
-
apply
public static <A,B> Behavior<ConsumerController.SequencedMessage<A>> apply(scala.Function1<ActorRef<ConsumerController.Start<A>>, Behavior<B>> consumerBehavior) TheBehavior
of the entity that is to be initialized inClusterSharding
. It will manage the lifecycle and message delivery to the destination consumer actor. -
withSettings
public static <A,B> Behavior<ConsumerController.SequencedMessage<A>> withSettings(ShardingConsumerController.Settings settings, scala.Function1<ActorRef<ConsumerController.Start<A>>, Behavior<B>> consumerBehavior) TheBehavior
of the entity that is to be initialized inClusterSharding
. It will manage the lifecycle and message delivery to the destination consumer actor. -
create
public static <A,B> Behavior<ConsumerController.SequencedMessage<A>> create(Function<ActorRef<ConsumerController.Start<A>>, Behavior<B>> consumerBehavior) Java API: TheBehavior
of the entity that is to be initialized inClusterSharding
. It will manage the lifecycle and message delivery to the destination consumer actor. -
create
public static <A,B> Behavior<ConsumerController.SequencedMessage<A>> create(Function<ActorRef<ConsumerController.Start<A>>, Behavior<B>> consumerBehavior, ShardingConsumerController.Settings settings) Java API: TheBehavior
of the entity that is to be initialized inClusterSharding
. It will manage the lifecycle and message delivery to the destination consumer actor. -
entityTypeKeyClass
Java API: The genericClass
type forConsumerController.SequencedMessage
that can be used when creating anEntityTypeKey
for theShardedConsumerController
withClass<EntityTypeKey<ConsumerController.SequencedMessage
.>>
-