【问题标题】:How to find an event in EventStore by it Id?如何通过 ID 在 EventStore 中查找事件?
【发布时间】:2018-11-24 07:09:10
【问题描述】:

目前我正在为我的公司项目使用 Eventstore(由 Greg Young 编写)。在我的读取模型中,我存储已处理的事件 ID,而不是事件名称。如何使用其 Id 在 Eventstore 中找到该事件?

【问题讨论】:

    标签: eventstoredb


    【解决方案1】:

    我认为目前这是不可能的。我认为你有两个选择:

    在您的读取模型中存储流和索引,或事件的提交/准备位置,然后使用提交/准备位置从$all 流中读取事件,或者使用流和索引。这可能是最简单的。

    或者在事件存储中创建一个投影,通过事件的 id 索引事件并重新投影到一个名为 eventid-{event.id} 的流中,然后您可以直接从此流中读取。

    第二个向后兼容您当前的读取模型,但我不确定这样做是否正确,因为预测会导致写入放大,您可能需要确保将系统事件排除在投影之外。

    【讨论】:

    • 实际上我存储事件ID只是为了避免重复处理,但有时我想知道它们的全部内容以进行故障排除。我还没有考虑存储事件位置,谢谢你的想法。
    【解决方案2】:

    您可以使用以下 URL 路径查询事件。这将返回事件及其之前的最后 20 个事件

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

    【讨论】:

    • 这对我不起作用。看起来在您建议的模式中{eventid} 是流中事件的序号,而不是 EventStore 在创建事件时生成的事件 Guid。
    • 没错@user1007074 抱歉,我引用的是整数索引值而不是唯一标识符。我将更新名称,因为它不应该称为 EventID,因为那是 guid
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-25
    • 2019-10-11
    • 2018-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    相关资源
    最近更新 更多