Я считаю, что вам нужно распараллелить обработку команд, чтобы ускорить работу. Есть два способа добиться этого:
- Изменить локальное
CommandBus
- Распределить ваше приложение
Я предполагаю, что вы находитесь на указателе 1, поэтому мой ответ будет адаптирован к этому.
Когда у вас есть единственный экземпляр приложения Axon, использующий Spring Boot, SimpleCommandBus
будет автоматически настроен для вас. Это не дает возможности для одновременной работы. Таким образом, настройка другого бина CommandBus
должна быть способом go.
Я бы посоветовал сначала начать использовать AsynchronousCommandBus
. Эта реализация использует Executor
(который вы можете дополнительно настроить, если хотите) для раскрутки потоков для отправки (и обработки) каждой выполняемой команды.
Если это все еще слишком медленно, как вам нравится, я Я бы попробовал DisruptorCommandBus
(подробнее о том, что такое «Disruptor», вы можете посмотреть здесь ). Эта реализация CommandBus
будет использовать два пула потоков; один пул для обработки команд, а другой для хранения событий.
Наконец, если вы уже работаете с распределенной версией CommandBus
(например, Axon Server или DistributedCommandBus
), у вас будет чтобы предоставить bean-компонент CommandBus
с прикрепленным к нему квалификатором localSegment. Чтобы получить краткий обзор командных шин, предоставляемых Axon, я бы посмотрел там Справочное руководство ( здесь ).