Я не знаю никакого выхода из сложившейся ситуации, чтобы добиться этого, но вы могли бы попросить своих актеров использовать пользовательский почтовый ящик, в котором есть уведомление, которое уведомляет глобального актора всякий раз, когда изменяется пустота почтового ящика. Этот глобальный субъект отслеживает, у каких субъектов есть хотя бы одно сообщение в почтовом ящике. Затем вы регистрируете скоординированное завершение работы, которое в основном запрашивает у этого участника завершение работы в будущем, когда нет участников с хотя бы одним сообщением.
Обратите внимание, что, поскольку субъекты могут отправлять произвольно много сообщений себе или другим субъектам в процессе обработки сообщения, нет никакой гарантии, что когда-либо наступит момент, когда ни у одного субъекта не будет сообщений в соответствующих почтовых ящиках. Поэтому вы, вероятно, захотите, чтобы у ваших актеров были какие-то средства для того, чтобы они начали использовать определение обработки, что влечет за собой отправку меньшего количества последующих сообщений; как следствие, такого рода вещи должны быть настроены для вашего приложения и соответствовать проблеме, которую вы пытаетесь решить с помощью приложения (и нет никакой гарантии, что такое определение обработки существует).
По этой причине более Акка-идиоматично согласиться с тем, что доставка и обработка сообщения, как правило, не гарантируется никогда.