领事客户端
一个用TypeScript写的Hashicorp领事的客户端.
此库目前有客户端支持 KV API领事 编辑 Catalog API 领事。 。 。 .
安装
$ npm install --save @creditkarma/consul-client
K/V 存储
K/V商店提供了简单的JS API,用于获取领事内外的价值. 此API主要通过克夫斯托尔级被曝光.
import { KvStore, IKey, Observer } from '@creditkarma/consul-client'
/**
* Instantiate KvStore with location of Consul, default is localhost:8500.
*
* The argument is actually an array of locations in order to support fail over.
*/
const kvStore: KvStore = new KvStore([ 'http://localhost:8500' ])
键
KvStore 根据 IKey 对象。 这些物品有1个财产和1个可选财产。 所需财产为: path。路径是向上看的关键名称。 可选财产是: dc。dc是读取的数据中心。 根据领事文件,这将默认为被询问代理的数据中心,由主机地址指定.
// Set value for key
kvStore.set({ path: 'key', dc: 'dc1' }, 'test').then((success: boolean) => {
if (success) {
// write was successful
}
})
// Get current value of key
kvStore.get({ path: 'key', dc: 'dc1' }).then((val: string) => {
// val === 'test'
})
// Watch a key for value changes
kvStore.watch({ path: 'key', dc: 'dc1' }).onValue((val: string) => {
// runs anytime the value changes, initially fires with current value
})
// Stop watching a value
kvStore.unwatch({ path: 'key', dc: 'dc1' })
// Delete key from consul
kvStore.delete({ path: 'key', dc: 'dc1' }).then((success: boolean) => {
if (success) {
// delete was successful
}
})
观察员
一个 Observer 是从呼叫中返回的对象 watch。 。 。 .
它有五种公开的方法:
const observer: Observer<string> = kvStore.watch({ path: 'key', dc: 'dc1' })
observer.onValue((val: string) => {
// runs anytime the value changes, initially fires with current value
})
observer.onError((err: Error) => {
// runs anytime there is an error updating the value.
// depending on the error the library may continue watching the key.
})
observer.current() // Returns the current value
observer.previous() // Returns the previous value
observer.destroy() // Nulls out all internal state
// Get the current value, returns null if no value
const currentVal: string | null = observer.current()
// Get the previous value, returns null in no previous value
const previousVal: string | null = observer.previous()
请求选项
我们用 请求 作为我们的HTTP客户端。 因此,您可以通过选项请求自定义您的环境 HTTP 请求 。 无论是在即时处理新 KvStore 时,还是在提出请求时,都可以做到这一点.
const kvStore: KvStore = new KvStore([ 'http://localhost:8500' ], { headers: { ... } })
kvStore.get({ path: 'key' }, { headers: { ... } })
给 KvStore 构造器的选项在每次请求中都会被使用. 为某种方法提供的选项只用于该请求。 传递到请求方法的选项在满足请求之前被与实例选项深度合并.
可用 选项
目录
Catalog API 允许您发现您领事注册的其他资产 。 这对服务发现有用.
import { Catalog } from '@creditkarma/consul-client'
/**
* Instantiate Catalog with location of Consul, default is localhost:8500
*
* Like KvStore the Catalog supports fail over by providing a list of addresses.
*/
const catalog: Catalog = new Catalog([ 'http://localhost:8500' ])
API 概览
// List all nodes registered with Consul
catalog.listNodes().then((res: Array<INodeDescription>) => {
// Do something
})
// List all services registered with Consul
catalog.listServices().then((res: IServiceMap) => {
// Do something
})
// List all nodes registered with a given service
catalog.listNodesForService('service-name').then((res: IServiceMap) => {
// Do something
})
// Get the registered address for a given service
catalog.resolveAddress('service-name').then((res: string) => {
// Do something
})
// Watch for runtime changes to a service address
catalog.watchAddress('service-name').onValue((res: string) => {
// Do something
})
捐款
欲了解更多关于贡献新功能和错误修正的信息,请参见我们 贡献准则。 。 。 . 外部捐助者必须签署捐助者许可证协定
许可证
这个项目的许可证根据 Apache 许可证版本 2.0