@@ -98,11 +98,21 @@ Connect all servers under the domain, for example: http://www.baidu.com:80. Note
### consul://\<service-name\>
Get a list of services with the specified service name through consul. By default, only services with the status of passing are obtained.
Get a list of services with the specified service-name through consul. The default address for consul is localhost:8500, which can be modified by setting -consul\_agent\_addr in gflags. The connection timeout time of consul is 200ms by default, which can be modified by -consul\_connect\_timeout\_ms.
If consul is not accessible when the brpc service is restarted, the naming service can be automatically downgraded to the file naming service to obtain the service list. The service list file can be generated through the consul-template, which will save the latest downstream service node before the consul is unavailable. When consul recovers, naming service can automatically switch back to consul naming service.
By default, [stale](https://www.consul.io/api/index.html#consistency-modes) and passing(only the service list with the return status of passing is returned) are added to the consul request parameter. The [consul request parameter]((https://www.consul.io/api/health.html#parameters-2)) can be modified by -consul\_url\_parameter in gflags.
In addition to the first request to the consul, the follow-up requests to the consul using the [long polling](https://www.consul.io/api/index.html#blocking-queries) feature. That is, the consul returns the result only when the service list is updated or the request time out. The timeout threshold defaults to 60 seconds, which can be modified by -consul\_blocking\_query\_wait\_secs.
If the service list returned by the consul has an incorrect [response format](https://www.consul.io/api/health.html#sample-response-2), or all services in the list are filtered because the key fields such as the address and port are missing or cannot be parsed, the consul naming server will refuse to update the service list and revisit the consul after a period of time(
default 500ms, can be modified by -consul\_retry\_interval\_ms).
If consul is not accessible, the service can be automatically downgraded to the file naming service for getting service list. This feature is turned off by default and can be turned on by setting -consul\_enable\_degrade\_to\_file\_naming\_service.
The service list file directory is set with -consul \_file\_naming\_service\_dir. Using service-name as the file name. This file can be generated by the consul-template, which holds the latest downstream service node before the consul is unavailable. The consul naming service is automatically restored when consul is restored.
In addition to the first request to the consul, subsequent requests to the consul use long polling. Long polling means that consul returns results only when the service list updates or requests time out.