1.3.1 • Published 1 year ago
grpc-js-consul v1.3.1
GRPC consul resolver
Feature less and easy-to-use resolver which return endpoints for service from the Hashicorp Consul and watch for the changes.
This library is not production ready and may not always save backward-compatibility
Quick Start
For using resolving endpoints from your Hashicorp Consul just import this library with import {register} from "grpc-js-consul"
, call register()
and pass valid connection string to the address
.
Connection string
consul://127.0.0.127:8500/my-service?[=]&[wait=]&[near=]&[insecure=]&[limit=]&[tag=]&[token=]
Parameters:
Same as consul api
Name | Format | default | Description |
---|---|---|---|
tag | string | undefined | Select endpoints only with this tag |
passing | true/false | false | Return only endpoints which pass all health-checks |
wait | as in time.ParseDuration | undefined | Wait time for watch changes. Due this time period endpoints will be force refreshed |
insecure | true/false | undefined | Allow insecure communication with Consul |
near | string | undefined | Sort endpoints by response duration. Can be efficient combine with limit parameter default: "_agent" |
limit | int | undefined | Limit number of endpoints for the service |
timeout | as in time.ParseDuration | undefined | Http-client timeout |
token | string | undefined | Consul token |
dc | string | undefined | Consul datacenter to choose |
stale | true/false | false | Allow stale results from the agent. https://www.consul.io/api/features/consistency.html#stale |
consistent | true/false | false | RequireConsistent forces the read to be fully consistent. This is more expensive but prevents ever performing a stale read. |
Example
See here or in test
import { credentials } from "@grpc/grpc-js";
import { register } from "grpc-js-consul";
import { EchoClient } from "./idls/hello_grpc_pb";
register();
const client = new EchoClient("consul://host.docker.internal:8500/hello",
credentials.createInsecure(),
{
"grpc.service_config": JSON.stringify({
loadBalancingConfig: [
{
round_robin: {},
},
],
}),
}
);
//...
License
MIT-LICENSE. See LICENSE or the LICENSE file provided in the repository for details.