订阅 Consul Key-Value

Subscribing to Consul Key-Value

我正在尝试使用 Consul 的 Key-Value API 将 JSON 配置传递到我其中一个容器中的应用程序 运行ning。它工作得很好,但是 API 没有为密钥提供任何 pub-sub 功能(只是 read/write/delete)。

到目前为止,我设法通过使用 Watch feature 在密钥更改时重新启动容器来人为补偿,但这让我需要

  1. 外部配置 Consul(加载新配置,或使用 CLI,指定要监视的密钥,以及 shell 脚本到 运行)
  2. 中途重启我的应用程序运行 - 一个可能丢失数据的好方法。

是否有任何编程方式(除了每 x 秒轮询一次)来通知 Consul 中的关键更改,还是我应该放弃此解决方案并转移到 Redis?

快速查看 consul 的资源后,"watch" 似乎是一个简单的周期性拉动。您可以在您的代码中实现类似的东西来实现这一点。

观察者的周期运行:https://github.com/hashicorp/consul/blob/master/watch/plan.go#L46

KeyWatch 处理程序:https://github.com/hashicorp/consul/blob/master/watch/funcs.go#L29