1.3.1 • Published 1 year ago

grpc-js-consul v1.3.1

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

GRPC consul resolver

NPM npm Build Status

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

NameFormatdefaultDescription
tagstringundefinedSelect endpoints only with this tag
passingtrue/falsefalseReturn only endpoints which pass all health-checks
waitas in time.ParseDurationundefinedWait time for watch changes. Due this time period endpoints will be force refreshed
insecuretrue/falseundefinedAllow insecure communication with Consul
nearstringundefinedSort endpoints by response duration. Can be efficient combine with limit parameter default: "_agent"
limitintundefinedLimit number of endpoints for the service
timeoutas in time.ParseDurationundefinedHttp-client timeout
tokenstringundefinedConsul token
dcstringundefinedConsul datacenter to choose
staletrue/falsefalseAllow stale results from the agent. https://www.consul.io/api/features/consistency.html#stale
consistenttrue/falsefalseRequireConsistent 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.