Sequential or concurrent processing of actions via coroutines based on some conditions

@ebrowne72 thanks for your reply and suggestion.
Indeed CompletableDeferred (mentioned in the documentation) is something, which I was looking for in order to transfer back the result of execution.

There’s only one thing, which looks odd in this api comparing to executor.submit() - necessity to pass this CompletableDeferred in the argument together with original message. But anyway I can work-around this issue by making it implementation detail of my ActionsRunner class and do not expose it to public api.

Now I have to check if there is a way to expose idle state from the actor in order to see, that it does no message processing and should be prefered actor to do the job.

Alternatively (because actors supposed to be cheap) I can consider always launching new actor is there is no actor currently processing actions with specified id and let them be finished after processing.

P.S. yes, I am worried about the map getting too big