В настоящее время я использую Eventstore (от Грега Янга) для своего корпоративного проекта. В моей модели чтения я храню идентификаторы обработанных событий, а не имя события. Как найти событие в Eventstore по его идентификатору?
Как найти событие в EventStore по его идентификатору?
Ответы (2)
Я не думаю, что это возможно в настоящее время. Я думаю, у вас есть два варианта:
в вашей модели чтения сохраните поток и индекс или позицию фиксации/подготовки события, а затем прочитайте событие либо из потока $all
, используя позицию фиксации/подготовки, либо из потока, в который оно было записано, используя поток и индекс. Это, пожалуй, самое простое.
Или создайте проекцию в хранилище событий, которая индексирует события по их идентификатору и перепроецирует в поток с именем, скажем, eventid-{event.id}
, тогда вы можете читать прямо из этого потока.
Второй обратно совместим с вашей текущей моделью чтения, но я не уверен, что это правильно, поскольку проекции вызывают усиление записи, и вам, вероятно, нужно убедиться, что вы исключаете проецирование системных событий.
Вы можете запросить событие, используя следующий URL-адрес. Это вернет событие и последние 20 событий до него.
{youreventstoredomain}: 2113/web/index.html#/streams/$ce-{streamname}/{eventnumber}/backward/20
{eventid}
— это порядковый номер события в потоке, в отличие от идентификатора события, который EventStore генерирует при создании события.
- person user1007074; 05.07.2021