我能找到的所有文档似乎都表明我需要两个 http 请求来执行此操作:一个到流,给我一个到最后一个事件的链接,然后一个跟随那个链接。
这似乎很奇怪,难道没有办法只用一个请求来做到这一点吗?
我能找到的所有文档似乎都表明我需要两个 http 请求来执行此操作:一个到流,给我一个到最后一个事件的链接,然后一个跟随那个链接。
这似乎很奇怪,难道没有办法只用一个请求来做到这一点吗?
如果使用 .NET 客户端,您还可以使用向后读取 API
Task<StreamEventsSlice> ReadStreamEventsBackwardAsync(string stream, int start, int count, bool resolveLinkTos)
在哪里
StreamPosition.End
(-1) 从末尾开始。因此,此代码将为您提供流中的最后一个事件(如果它是投影,则启用 linkTos)
StreamEventsSlice slice = await Connection.ReadStreamEventsBackwardAsync("StreamName", StreamPosition.End, 1, true, creds);
关键字是'head',比如git。所以最后一个事件是在[url of the stream]/head
。
如果您使用的是 EventStore gRPC 客户端,则另一种选择。
_client.ReadStreamAsync(Direction.Backwards, _streamName, StreamPosition.End, 1)
非常类似于 .NET 版本。您请求从流的末尾开始向后读取流,并且只返回一个事件。
然后,您的结果是一个仅包含一个项目的可迭代 - 最新事件