Etcd - 过时的索引。如何从客户端读取 "X-Etcd-Index"

Etcd - Outdated index. How to read "X-Etcd-Index" from client

我正在使用 github.com/coreos/etcd/client 与 etcd 云通信,有时我会收到 401 错误 "The event in requested index is outdated and cleared",在服务器页面上有解释为什么会发生以及如何发生可以解决。其实我想实现下面的场景

  1. 获取"key"及其修改后的索引
  2. 做点工作
  3. 从修改后的索引
  4. 开始在 "key" 上观看

这样我就可以确定第 2 步中的所有更改也会收到。但是 Etcd 只保存前 N 个更改,有时我会收到 401 错误。根据 docu 我可以使用来自 Get key 请求的 "X-Etcd-Index" + 1 header 作为修改后的索引来观看。

curl 'http://127.0.0.1:2379/v2/keys/foo' -vv
< HTTP/1.1 200 OK
< Content-Type: application/json
< X-Etcd-Cluster-Id: f63cd37d2ff4f650
< X-Etcd-Index: 17245
< X-Raft-Index: 2107637
< X-Raft-Term: 360
< Date: Tue, 15 Dec 2015 09:02:20 GMT
< Content-Length: 791
< ...

但我不使用直接 http 调用,只使用 github。com/coreos/etcd/client。我怎样才能从获取密钥请求中获取(并且实际上是否可以使用 api)http header 信息?

X-Etcd-Indexheader对应Response.Index字段

索引在响应字段中作为 "Index" 对象可用。请参阅此处的文档:https://godoc.org/github.com/coreos/etcd/client#Response