Понятно, так что вы, по сути, хотите раскрыть возможности службы, когда речь заходит о том, какие команды могут обрабатываться заданным компонентом обработки команд, независимо от того, является ли этот компонент Aggregate или External Обработчик команд .
Обратите внимание, что взаимодействие между компонентом, который отправляет команды, и компонентом, который их обрабатывает, находится внутри CommandBus
. Когда приложение Axon запускается, это CommandBus
, который получает все регистрации для известных обработчиков команд.
Таким образом, CommandBus
обеспечивает прозрачность местоположения *1013* для этой части приложения. И это прозрачность местоположения, которая обеспечивает четкие и четко разделенные компоненты; По сути, это поможет вам использовать эволюционный подход к микросервисам (как описывает AxonIQ здесь ). Таким образом, я бы поспорил о необходимости совместного использования всех известных обработчиков команд для данной службы / агрегата через REST.
Независимо от того, имеет ли это смысл, всегда вопрос «это зависит». Я, например, создал средство для обмена известными командами, которые служба может обработать как схему JSON, как вы можете видеть здесь в примере проекта, который я помог построить между AxonIQ и Pivotal.
Итак, чтобы перейти к вашему вопросу:
ВОПРОС: Предлагает ли Axon какие-либо решения RESTful из коробки или есть лучшая автоматически конфигурируемая альтернатива Spring HATEOAS?
Нет, Axon не предоставляет нечто подобное из коробки, так как он ожидает, что вы используете CommandBus
для связи. Я знаю, что вам может понадобиться отправная точка где-то, для чего REST имеет смысл, но даже тогда выставление всех известных команд можно рассматривать как раскрытие вашего внутреннего домена для внешнего мира. В большинстве сценариев ios это было бы нежелательно, но, как указано, это сильно «зависит» от вашего варианта использования.