относительно заданного вопроса здесь:
предположим, что у нас есть события ProductCreated и ProductRenamed, которые оба содержат название продукта. Теперь мы хотим запросить EventStoreDB для всех событий типа ProductCreated и ProductRenamed с заданным заголовком. Я хочу, чтобы все эти события проверяли, есть ли какой-либо продукт в списке. система, которая была создана или переименована в данный заголовок, чтобы я мог исключить повторяющийся заголовок в домене
я использую MongoDB для создания отчетов пользовательского интерфейса из всех опубликованных событий, и там все в порядке. но для проверки некоторых инвариантов, таких как проверка уникальных значений, мне нужно либо запросить хранилище событий для некоторых событий вместе с их критериями и путем повторения их, решите, существует ли продукт, созданный с тем же названием, но не переименованный, или продукт, переименованный с тем же названием.
для таких запросов единственным способом, который предоставляет хранилище событий, является создание одноразовой проекции с надлежащим кодом сценария java, который фильтрует и выдает необходимые события в новый поток. а затем все, что мне нужно сделать, это извлекать события из нового сгенерированного поток, который заполняется проекцией
нет, странно то, что проекции отлично подходят для подписки и создания новых потоков, но они кажутся странными для выполнения запросов в реальном времени. Сразу после создания проекции с помощью HTTP API я проверяю новый результирующий поток на предмет результата запроса, но похоже, что у рабочих не было возможности уточнить результат, и я получаю ответ 404. Но после ожидания нескольких секунд новые потоки выскакивают и заполняются результатом.
в этом подходе слишком много неправильного:
во-первых, кажется, что если хранилище событий заполнено миллионами событий во многих потоках, оно не сможет сразу обработать и отфильтровать их все в результирующий поток. оно не создает поток немедленно, не говоря уже о населении. мне нужно подождать некоторое время и проверить результат, надеясь, что проекция сделана
во-вторых, мне приходится получать несколько раз и выполнять несколько команд GET HTTP, которые кажутся медленными. Новый клиент JVM еще не готов.
В-третьих, я должен удалить результирующий поток после того, как я закончу с результатом, и в противном случае хранилище событий останется с миллионами потерянных потоков результатов запроса.
Я хотел бы передать java-скрипт какому-нибудь API и получить результат страница за страницей, например, запрашивая MongoDB, не беспокоясь о проекции, новых потоках и проблемах синхронизации.
я видел раздел запроса в пользовательском интерфейсе администратора, но я не знаю, для чего он нужен, и, к сожалению, документация не очень помогает
Я ожидаю, что магазин событий сделает что-то невозможное? мне нужно создать модель внутреннего чтения с ограниченным контекстом для выполнения таких проверок?
я использую свои события для обезвоживания агрегатов и готов использовать те же события для таких простых запросов, не приобретая другие методы