Поскольку в Справочном руководстве в настоящее время это не указано, я хочу указать это здесь.
В настоящее время у вас есть примерно два подхода, которым вы руководствуетесь при распространении приложения Axon или разделении приложения Axon на (микро) сервисы:
- Используйте полностью открытый подход
- Использование AxonHub / AxonDb
Используя подход 2, который вы можете реализовать в среде разработчика, вам нужно будет только запустить AxonHub и AxonDb и настроить их для своего приложения.
Вот и все, вы сделали; Вы можете масштабировать свое приложение, и все сообщения будут перенаправлены по желанию.
Однако, если вы хотите выбрать маршрут 1, вам придется предоставить несколько конфигураций
Во-первых, вы заявляете, что используете RabbitMQ для маршрутизации команд и событий.
Фактически, платформа не просто позволяет использовать RabbitMQ для маршрутизации команд вообще. Обратите внимание, это решение для распространения EventMessages
, но не CommandMessages
.
Я предлагаю использовать JGroups или Spring Cloud для маршрутизации ваших команд в сценарии с открытым исходным кодом (я добавил ссылки на страницы Справочного руководства, касающиеся распределения CommandBus
для JGroups и Spring Облако).
Чтобы распространять ваши события, вы можете использовать три подхода:
- Используйте общую базу данных для ваших событий.
- Используйте AMQP для отправки ваших событий в разные экземпляры.
- Используйте Kafka , чтобы отправлять свои события в разные экземпляры.
Мои личные предпочтения при запуске приложения - начинать с одного монолита и отделять при необходимости.
Я думаю, что термин «Evolutionary Micro Services» прекрасно это понимает.
Как бы то ни было, если вы используете парадигму обмена сообщениями, поддерживаемую Аксоном, во всей ее полноте, разделить сторону Команды со стороны Запроса после подопечных должно быть довольно просто.
Если вы дополнительно используете AxonHub для распространения своих сообщений, то вы практически закончили.
В заключение я не нашел очень точного запроса по вашим вопросам.
Дает ли это вам необходимую информацию для продолжения, @Federico Ponzi?
Обновление
Подумав, я думаю, ваше решение довольно простое.
Вы используете Spring Boot и хотите настроить EventStore
на использование MySQL. Чтобы Axon установил правильное значение EventStorageEngine
(инфра-компонент, используемый под крышками для чтения / записи событий), вы можете просто добавить зависимость от spring-boot-starter-data-jpa
.
Аксон, его автоматическая конфигурация в этом сценарии автоматически заметит, что у вас есть Spring Data JPA на вашем пути к классам, и, таким образом, установит JpaEventStorageEngine
.