How execute new commands automatically


If you would like to execute new commands automatically, from the result of the execution of a command; In what part of the Axon framework should it be done?

Hi Luis,

Without knowing the exact use case around your question, what I suggest to be the best approach is to use the CommandGateway#send(Object) function.

This mode of publishing commands will return you a CompletableFuture, upon which you can do chaining calls for certain results of publishing the command.

For example, if the initial send() call is successful, you can do something like:

.thenApply(commandResult -> commandGateway.send(mySecondCommand));

For the scenario the publishing of myCommand failed, you can use the CompletableFuture#exceptionally(Function<Trowable, ? extends T>) call to perform some task if you’d want.

Hope this helps!



Hi Steven,

I would like to do the following with Axon Framework.

You have a system that receives N of coffee orders, if in the preparation there is an error due to lack of water, sugar, coffee or some ingredient; the system should be able to retry its preparation of said beverage 5 minutes later; I can´t imagine how it could be done with the Axon Framework.

Hi Luis,

one way is to use a RetryScheduler. You can configure it in a CommandGateway.
Another way would be to use a SchedulingExecutor to schedule a task when a command fails. That task would be to send the command again.

Hope this helps.