Skip to content
Easy-pluggable full-feature GRPC resolver for services registered in Consul
Branch: master
Clone or download
rantav and mbobakov Add support for more consul params. (#10)
dc - to select a DC
allow-stale - to allow stale data at the agent
require-consistent - to require consistency from the agent
Latest commit 18dcf5a Jul 29, 2019

GRPC consul resolver

Feature rich and easy-to-use resolver which return endpoints for service from the Hashicorp Consul and watch for the changes.

This library is production ready and will always save backward-compatibility

Quick Start

For using resolving endpoints from your Hashicorp Consul just import this library with import _ / and pass valid connection string to the grpc.Dial.

For full example see this section

Connection string



Name Format Description
tag string Select endpoints only with this tag
healthy true/false Return only endpoints which pass all health-checks. Default: false
wait as in time.ParseDuration Wait time for watch changes. Due this time period endpoints will be force refreshed. Default: inherits agent property
insecure true/false Allow insecure communication with Consul. Default: true
near string Sort endpoints by response duration. Can be efficient combine with limit parameter default: "_agent"
limit int Limit number of endpoints for the service. Default: no limit
timeout as in time.ParseDuration Http-client timeout. Default: 60s
max-backoff as in time.ParseDuration Max backoff time for reconnect to consul. Reconnects will start from 10ms to max-backoff exponentialy with factor 2. Default: 1s
token string Consul token
dc string Consul datacenter to choose. Optional
allow-stale true/false Allow stale results from the agent.
require-consistent true/false RequireConsistent forces the read to be fully consistent. This is more expensive but prevents ever performing a stale read.


package main

import (

	_ "" // It's important


func main() {
    conn, err := grpc.Dial(
    if err != nil {
    defer conn.Close()


MIT-LICENSE. See LICENSE or the LICENSE file provided in the repository for details.

You can’t perform that action at this time.