4

我能找到的所有文档似乎都表明我需要两个 http 请求来执行此操作:一个到流,给我一个到最后一个事件的链接,然后一个跟随那个链接。

这似乎很奇怪,难道没有办法只用一个请求来做到这一点吗?

4

3 回答 3

4

如果使用 .NET 客户端,您还可以使用向后读取 API

Task<StreamEventsSlice> ReadStreamEventsBackwardAsync(string stream, int start, int count, bool resolveLinkTos)

在哪里

  • 开始 - 通常如果您知道从哪个事件编号开始,但在这种情况下我们不知道,因此我们可以StreamPosition.End(-1) 从末尾开始。
  • Count - 要倒退多少个事件

因此,此代码将为您提供流中的最后一个事件(如果它是投影,则启用 linkTos)

 StreamEventsSlice slice = await Connection.ReadStreamEventsBackwardAsync("StreamName", StreamPosition.End, 1, true, creds);
于 2018-07-11T14:27:53.383 回答
3

关键字是'head',比如git。所以最后一个事件是在[url of the stream]/head

于 2017-11-15T00:20:31.140 回答
0

如果您使用的是 EventStore gRPC 客户端,则另一种选择。

_client.ReadStreamAsync(Direction.Backwards, _streamName, StreamPosition.End, 1)

非常类似于 .NET 版本。您请求从流的末尾开始向后读取流,并且只返回一个事件。

然后,您的结果是一个仅包含一个项目的可迭代 - 最新事件

从流中读取 - 向后读取

于 2021-08-12T09:32:51.600 回答