Как найти событие в EventStore по его идентификатору?

В настоящее время я использую Eventstore (от Грега Янга) для своего корпоративного проекта. В моей модели чтения я храню идентификаторы обработанных событий, а не имя события. Как найти событие в Eventstore по его идентификатору?


person ThieuND    schedule 24.11.2018    source источник


Ответы (2)


Я не думаю, что это возможно в настоящее время. Я думаю, у вас есть два варианта:

в вашей модели чтения сохраните поток и индекс или позицию фиксации/подготовки события, а затем прочитайте событие либо из потока $all, используя позицию фиксации/подготовки, либо из потока, в который оно было записано, используя поток и индекс. Это, пожалуй, самое простое.

Или создайте проекцию в хранилище событий, которая индексирует события по их идентификатору и перепроецирует в поток с именем, скажем, eventid-{event.id}, тогда вы можете читать прямо из этого потока.

Второй обратно совместим с вашей текущей моделью чтения, но я не уверен, что это правильно, поскольку проекции вызывают усиление записи, и вам, вероятно, нужно убедиться, что вы исключаете проецирование системных событий.

person Sam Holder    schedule 13.12.2018
comment
На самом деле я сохранил идентификаторы событий только для того, чтобы избежать дублирования обработки, но иногда мне хотелось узнать их все содержимое для устранения неполадок. Я не думал о сохранении позиций событий, спасибо за эту идею. - person ThieuND; 18.12.2018

Вы можете запросить событие, используя следующий URL-адрес. Это вернет событие и последние 20 событий до него.

{youreventstoredomain}: 2113/web/index.html#/streams/$ce-{streamname}/{eventnumber}/backward/20

person Joshua Duxbury    schedule 16.12.2020
comment
Это не сработало. Похоже, что в предложенном вами шаблоне {eventid} — это порядковый номер события в потоке, в отличие от идентификатора события, который EventStore генерирует при создании события. - person user1007074; 05.07.2021
comment
Правильно @ user1007074 извините, я ссылался на целочисленное значение индекса, а не на уникальный идентификатор. Я обновлю имя, так как оно не должно называться EventID, так как это руководство - person Joshua Duxbury; 13.07.2021