Во-первых, мне было интересно, зачем вам извлекать полный список всех агрегатов из Repository
. Интерфейс Repository
настроен таким образом, что вы можете загрузить Aggregate
для обработки команд или для создания нового Aggregate
.
Задавая вопрос, который у вас есть, я почти предполагаю, что вы используете его для запросов, а не для обработки команд. Однако это не предназначено для EventSourcingRepository
.
Одна из причин, по которой вам это может понадобиться, - это то, что вы хотите реализовать вызов API для публикации команды для всех Aggregates
определенного типа в вашем приложении. Если взять этот сценарий, то да, вам нужно сохранить ссылки на aggregateId самостоятельно.
Но в заключение я отвечу на мой предыдущий вопрос: почему вы хотите получать список агрегатов через интерфейс Repository
?
Обновление ответа
Что касается вашего комментария, я добавил к своему ответу следующее:
Axon поможет вам настроить ваше приложение с учетом источников событий, а также с CQRS (разделение ответственности за запросы команд). Таким образом, это означает, что команды и запросы вашего приложения разделены.
Агрегат Repository
- это командная сторона вашего приложения, в которой вы запрашиваете выполнение действий. Таким образом, он не предоставляет список агрегатов, так как команда является выражением намерений для агрегата . Следовательно, пользователю Repository
требуется только получить один агрегат или создать его.
Пример списка агрегатов, который вам нужен, - это сторона запроса вашего приложения. Сторона запроса (ваши представления / объекты) обычно обновляется на основе событий (полученных через события). Для любых требований к запросу, которые есть в вашем приложении, вы обычно вводите отдельное представление, адаптированное к вашим потребностям.
В вашем примере это означает, что вы вводите компонент обработки событий, прослушивающий ваши агрегированные события, которые обновляют репозиторий с моделями запросов вашего агрегата.
person
Steven
schedule
13.11.2017