@dubrovkinmaxim it won't happen at once, as you're requesting a deliveries one by one. But yes, in general redeliveries can stack up, up to a number specified at akka.persistence.at-least-once-delivery.max-unconfirmed-messages
(it's 100 000 by default). When this threshold will be surpassed all calls for Deliver()
method will automatically fail fast.
You can also get notified about something wrong happening here, as after several unconfirmed redelivery attempts (value specified at akka.persistence.at-least-once-delivery.warn-after-number-of-unconfirmed-attempts
which is 5 by default) AtLeastOnceDeliveryActor will receive UnconfirmedWarning
message with all messages that haven't been confirmed more than this number of times.
stashing
. I implemented it and it works great. My next question is, how can I make use of clustering? I mean technically I already implemented clustering, but now I want to scale adding a new node to the cluster. The problem is that if i send some work it gets round-robined to the existing 10 instances of the JobCoordinatorActor
in Node1. If I add another Node to the system, it does not get any work, because it just starts its new set of JobCoordinatorActors
which don't get any work assigned. What am I doing wrong here? How can I setup my system to make use of newly added nodes?
JobCoordinatorActor
is ready to process it? This way the system could scale if I add a new node to the cluster. In my understanding the system cannot scale if I'm using the stashing as I do it right now.
JobCoordinatorActor
. So the JobCoordinatorActor
basically receives two kind of messages. Those with the workload and those with the progress information of its child. As long as not all of the children have completed, it cannot work on a new workload. If you do not understand my case here I am willing to draw a diagram to express clearly what I am talking about. Just ask, please.
var jobCoordinatorRouter = actorSystem.ActorOf(actorSystem.DI().Props<JobCoordinatorActor>().WithRouter(new RoundRobinPool(5)), "JobCoordinator");
with the following snippet in the HOCON file:
Props.Create<JobCoordinatorActor>().WithRouter(FromConfig.Instance)
!!
is used to create path filter and AFAIK it can be used with ++
or --
to include/exclude other filters