Sync docs from master to gh-pages
This commit is contained in:
478
reference/html/appendix.html
Normal file
478
reference/html/appendix.html
Normal file
@@ -0,0 +1,478 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="generator" content="Asciidoctor 1.5.7.1">
|
||||
<title>Common application properties</title>
|
||||
<link rel="stylesheet" href="css/spring.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||
|
||||
<style>
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.switch {
|
||||
border-width: 1px 1px 0 1px;
|
||||
border-style: solid;
|
||||
border-color: #7a2518;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.switch--item {
|
||||
padding: 10px;
|
||||
background-color: #ffffff;
|
||||
color: #7a2518;
|
||||
display: inline-block;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.switch--item:not(:first-child) {
|
||||
border-width: 0 0 0 1px;
|
||||
border-style: solid;
|
||||
border-color: #7a2518;
|
||||
}
|
||||
|
||||
.switch--item.selected {
|
||||
background-color: #7a2519;
|
||||
color: #ffffff;
|
||||
}
|
||||
</style>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/zepto/1.2.0/zepto.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
function addBlockSwitches() {
|
||||
$('.primary').each(function() {
|
||||
primary = $(this);
|
||||
createSwitchItem(primary, createBlockSwitch(primary)).item.addClass("selected");
|
||||
primary.children('.title').remove();
|
||||
});
|
||||
$('.secondary').each(function(idx, node) {
|
||||
secondary = $(node);
|
||||
primary = findPrimary(secondary);
|
||||
switchItem = createSwitchItem(secondary, primary.children('.switch'));
|
||||
switchItem.content.addClass('hidden');
|
||||
findPrimary(secondary).append(switchItem.content);
|
||||
secondary.remove();
|
||||
});
|
||||
}
|
||||
|
||||
function createBlockSwitch(primary) {
|
||||
blockSwitch = $('<div class="switch"></div>');
|
||||
primary.prepend(blockSwitch);
|
||||
return blockSwitch;
|
||||
}
|
||||
|
||||
function findPrimary(secondary) {
|
||||
candidate = secondary.prev();
|
||||
while (!candidate.is('.primary')) {
|
||||
candidate = candidate.prev();
|
||||
}
|
||||
return candidate;
|
||||
}
|
||||
|
||||
function createSwitchItem(block, blockSwitch) {
|
||||
blockName = block.children('.title').text();
|
||||
content = block.children('.content').first().append(block.next('.colist'));
|
||||
item = $('<div class="switch--item">' + blockName + '</div>');
|
||||
item.on('click', '', content, function(e) {
|
||||
$(this).addClass('selected');
|
||||
$(this).siblings().removeClass('selected');
|
||||
e.data.siblings('.content').addClass('hidden');
|
||||
e.data.removeClass('hidden');
|
||||
});
|
||||
blockSwitch.append(item);
|
||||
return {'item': item, 'content': content};
|
||||
}
|
||||
|
||||
$(addBlockSwitches);
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body class="book toc2 toc-left">
|
||||
<div id="header">
|
||||
<div id="toc" class="toc2">
|
||||
<div id="toctitle">Table of Contents</div>
|
||||
<ul class="sectlevel1">
|
||||
<li><a href="#common-application-properties">Appendix A: Common application properties</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id="content">
|
||||
<div class="sect1">
|
||||
<h2 id="common-application-properties"><a class="link" href="#common-application-properties">Appendix A: Common application properties</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>Various properties can be specified inside your <code>application.properties</code> file, inside your <code>application.yml</code> file, or as command line switches.
|
||||
This appendix provides a list of common Spring Cloud Consul properties and references to the underlying classes that consume them.</p>
|
||||
</div>
|
||||
<div class="admonitionblock note">
|
||||
<table>
|
||||
<tr>
|
||||
<td class="icon">
|
||||
<i class="fa icon-note" title="Note"></i>
|
||||
</td>
|
||||
<td class="content">
|
||||
Property contributions can come from additional jar files on your classpath, so you should not consider this an exhaustive list.
|
||||
Also, you can define your own properties.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<table class="tableblock frame-all grid-all stretch">
|
||||
<colgroup>
|
||||
<col style="width: 33.3333%;">
|
||||
<col style="width: 33.3333%;">
|
||||
<col style="width: 33.3334%;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="tableblock halign-left valign-top">Name</th>
|
||||
<th class="tableblock halign-left valign-top">Default</th>
|
||||
<th class="tableblock halign-left valign-top">Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.config.acl-token</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.config.data-key</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">data</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">If format is Format.PROPERTIES or Format.YAML then the following field is used as key to look up consul for configuration.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.config.default-context</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">application</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.config.enabled</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.config.fail-fast</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Throw exceptions during config lookup if true, otherwise, log warnings.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.config.format</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.config.name</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Alternative to spring.application.name to use in looking up values in consul KV.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.config.prefix</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">config</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.config.profile-separator</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">,</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.config.watch.delay</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">1000</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">The value of the fixed delay for the watch in millis. Defaults to 1000.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.config.watch.enabled</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">If the watch is enabled. Defaults to true.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.config.watch.wait-time</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">55</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">The number of seconds to wait (or block) for watch query, defaults to 55. Needs to be less than default ConsulClient (defaults to 60). To increase ConsulClient timeout create a ConsulClient bean with a custom ConsulRawClient with a custom HttpClient.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.acl-token</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.catalog-services-watch-delay</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">1000</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">The delay between calls to watch consul catalog in millis, default is 1000.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.catalog-services-watch-timeout</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">The number of seconds to block while watching consul catalog, default is 2.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.datacenters</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Map of serviceId’s → datacenter to query for in server list. This allows looking up services in another datacenters.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.default-query-tag</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Tag to query for in service list if one is not listed in serverListQueryTags.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.default-zone-metadata-name</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">zone</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Service instance zone comes from metadata. This allows changing the metadata tag name.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.deregister</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Disable automatic de-registration of service in consul.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.enabled</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Is service discovery enabled?</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.fail-fast</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Throw exceptions during service registration if true, otherwise, log warnings (defaults to true).</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.health-check-critical-timeout</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Timeout to deregister services critical for longer than timeout (e.g. 30m). Requires consul version 7.x or higher.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.health-check-headers</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Headers to be applied to the Health Check calls.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.health-check-interval</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">10s</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">How often to perform the health check (e.g. 10s), defaults to 10s.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.health-check-path</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">/actuator/health</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Alternate server path to invoke for health checking.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.health-check-timeout</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Timeout for health check (e.g. 10s).</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.health-check-tls-skip-verify</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Skips certificate verification during service checks if true, otherwise runs certificate verification.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.health-check-url</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Custom health check url to override default.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.heartbeat.enabled</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.heartbeat.interval-ratio</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.heartbeat.ttl-unit</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">s</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.heartbeat.ttl-value</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">30</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.hostname</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Hostname to use when accessing server.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.include-hostname-in-instance-id</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Whether hostname is included into the default instance id when registering service.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.instance-group</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Service instance group.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.instance-id</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Unique service instance id.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.instance-zone</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Service instance zone.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.ip-address</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">IP address to use when accessing service (must also set preferIpAddress to use).</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.lifecycle.enabled</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.management-port</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Port to register the management service under (defaults to management port).</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.management-suffix</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">management</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Suffix to use when registering management service.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.management-tags</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Tags to use when registering management service.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.order</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">0</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Order of the discovery client used by <code>CompositeDiscoveryClient</code> for sorting available clients.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.port</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Port to register the service under (defaults to listening port).</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.prefer-agent-address</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Source of how we will determine the address to use.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.prefer-ip-address</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Use ip address rather than hostname during registration.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.query-passing</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Add the 'passing` parameter to /v1/health/service/serviceName. This pushes health check passing to the server.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.register</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Register as a service in consul.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.register-health-check</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Register health check in consul. Useful during development of a service.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.scheme</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">http</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Whether to register an http or https service.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.server-list-query-tags</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Map of serviceId’s → tag to query for in server list. This allows filtering services by a single tag.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.service-name</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Service name.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.discovery.tags</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Tags to use when registering service.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.enabled</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">true</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Is spring cloud consul enabled.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.host</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">localhost</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Consul agent hostname. Defaults to 'localhost'.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.port</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">8500</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Consul agent port. Defaults to '8500'.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.retry.initial-interval</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">1000</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Initial retry interval in milliseconds.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.retry.max-attempts</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">6</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Maximum number of attempts.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.retry.max-interval</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">2000</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Maximum interval for backoff.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.retry.multiplier</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">1.1</p></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Multiplier for next interval.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.scheme</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Consul agent scheme (HTTP/HTTPS). If there is no scheme in address - client will use HTTP.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.tls.certificate-password</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Password to open the certificate.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.tls.certificate-path</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">File path to the certificate.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.tls.key-store-instance-type</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Type of key framework to use.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.tls.key-store-password</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Password to an external keystore.</p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">spring.cloud.consul.tls.key-store-path</p></td>
|
||||
<td class="tableblock halign-left valign-top"></td>
|
||||
<td class="tableblock halign-left valign-top"><p class="tableblock">Path to an external keystore.</p></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript" src="js/tocbot/tocbot.min.js"></script>
|
||||
<script type="text/javascript" src="js/toc.js"></script>
|
||||
<link rel="stylesheet" href="js/highlight/styles/atom-one-dark-reasonable.min.css">
|
||||
<script src="js/highlight/highlight.min.js"></script>
|
||||
<script>hljs.initHighlighting()</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -96,35 +96,50 @@ $(addBlockSwitches);
|
||||
<div id="toc" class="toc2">
|
||||
<div id="toctitle">Table of Contents</div>
|
||||
<ul class="sectlevel1">
|
||||
<li><a href="#spring-cloud-consul-install">Install Consul</a></li>
|
||||
<li><a href="#spring-cloud-consul-agent">Consul Agent</a></li>
|
||||
<li><a href="#spring-cloud-consul-discovery">Service Discovery with Consul</a>
|
||||
<li><a href="#spring-cloud-consul-install">1. Install Consul</a></li>
|
||||
<li><a href="#spring-cloud-consul-agent">2. Consul Agent</a></li>
|
||||
<li><a href="#spring-cloud-consul-discovery">3. Service Discovery with Consul</a>
|
||||
<ul class="sectlevel2">
|
||||
<li><a href="#_how_to_activate">How to activate</a></li>
|
||||
<li><a href="#_registering_with_consul">Registering with Consul</a></li>
|
||||
<li><a href="#_http_health_check">HTTP Health Check</a></li>
|
||||
<li><a href="#_looking_up_services">Looking up services</a></li>
|
||||
<li><a href="#_consul_catalog_watch">Consul Catalog Watch</a></li>
|
||||
<li><a href="#how-to-activate">3.1. How to activate</a></li>
|
||||
<li><a href="#registering-with-consul">3.2. Registering with Consul</a>
|
||||
<ul class="sectlevel3">
|
||||
<li><a href="#registering-management-as-a-separate-service">3.2.1. Registering Management as a Separate Service</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#spring-cloud-consul-config">Distributed Configuration with Consul</a>
|
||||
<ul class="sectlevel2">
|
||||
<li><a href="#_how_to_activate_2">How to activate</a></li>
|
||||
<li><a href="#_customizing">Customizing</a></li>
|
||||
<li><a href="#spring-cloud-consul-config-watch">Config Watch</a></li>
|
||||
<li><a href="#spring-cloud-consul-config-format">YAML or Properties with Config</a></li>
|
||||
<li><a href="#spring-cloud-consul-config-git2consul">git2consul with Config</a></li>
|
||||
<li><a href="#spring-cloud-consul-failfast">Fail Fast</a></li>
|
||||
<li><a href="#http-health-check">3.3. HTTP Health Check</a>
|
||||
<ul class="sectlevel3">
|
||||
<li><a href="#metadata-and-consul-tags">3.3.1. Metadata and Consul tags</a></li>
|
||||
<li><a href="#making-the-consul-instance-id-unique">3.3.2. Making the Consul Instance ID Unique</a></li>
|
||||
<li><a href="#applying-headers-to-health-check-requests">3.3.3. Applying Headers to Health Check Requests</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#spring-cloud-consul-retry">Consul Retry</a></li>
|
||||
<li><a href="#spring-cloud-consul-bus">Spring Cloud Bus with Consul</a>
|
||||
<ul class="sectlevel2">
|
||||
<li><a href="#_how_to_activate_3">How to activate</a></li>
|
||||
<li><a href="#looking-up-services">3.4. Looking up services</a>
|
||||
<ul class="sectlevel3">
|
||||
<li><a href="#using-load-balancer">3.4.1. Using Load-balancer</a></li>
|
||||
<li><a href="#using-the-discoveryclient">3.4.2. Using the DiscoveryClient</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#spring-cloud-consul-hystrix">Circuit Breaker with Hystrix</a></li>
|
||||
<li><a href="#spring-cloud-consul-turbine">Hystrix metrics aggregation with Turbine and Consul</a></li>
|
||||
<li><a href="#consul-catalog-watch">3.5. Consul Catalog Watch</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#spring-cloud-consul-config">4. Distributed Configuration with Consul</a>
|
||||
<ul class="sectlevel2">
|
||||
<li><a href="#how-to-activate-2">4.1. How to activate</a></li>
|
||||
<li><a href="#customizing">4.2. Customizing</a></li>
|
||||
<li><a href="#spring-cloud-consul-config-watch">4.3. Config Watch</a></li>
|
||||
<li><a href="#spring-cloud-consul-config-format">4.4. YAML or Properties with Config</a></li>
|
||||
<li><a href="#spring-cloud-consul-config-git2consul">4.5. git2consul with Config</a></li>
|
||||
<li><a href="#spring-cloud-consul-failfast">4.6. Fail Fast</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#spring-cloud-consul-retry">5. Consul Retry</a></li>
|
||||
<li><a href="#spring-cloud-consul-bus">6. Spring Cloud Bus with Consul</a>
|
||||
<ul class="sectlevel2">
|
||||
<li><a href="#how-to-activate-3">6.1. How to activate</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#spring-cloud-consul-hystrix">7. Circuit Breaker with Hystrix</a></li>
|
||||
<li><a href="#spring-cloud-consul-turbine">8. Hystrix metrics aggregation with Turbine and Consul</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@@ -146,7 +161,7 @@ Intelligent Routing (Zuul) and Client Side Load Balancing (Ribbon), Circuit Brea
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="spring-cloud-consul-install"><a class="link" href="#spring-cloud-consul-install">Install Consul</a></h2>
|
||||
<h2 id="spring-cloud-consul-install"><a class="anchor" href="#spring-cloud-consul-install"></a><a class="link" href="#spring-cloud-consul-install">1. Install Consul</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>Please see the <a href="https://www.consul.io/intro/getting-started/install.html">installation documentation</a> for instructions on how to install Consul.</p>
|
||||
@@ -154,7 +169,7 @@ Intelligent Routing (Zuul) and Client Side Load Balancing (Ribbon), Circuit Brea
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="spring-cloud-consul-agent"><a class="link" href="#spring-cloud-consul-agent">Consul Agent</a></h2>
|
||||
<h2 id="spring-cloud-consul-agent"><a class="anchor" href="#spring-cloud-consul-agent"></a><a class="link" href="#spring-cloud-consul-agent">2. Consul Agent</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>A Consul Agent client must be available to all Spring Cloud Consul applications. By default, the Agent client is expected to be at <code>localhost:8500</code>. See the <a href="https://consul.io/docs/agent/basics.html">Agent documentation</a> for specifics on how to start an Agent client and how to connect to a cluster of Consul Agent Servers. For development, after you have installed consul, you may start a Consul Agent using the following command:</p>
|
||||
@@ -165,24 +180,24 @@ Intelligent Routing (Zuul) and Client Side Load Balancing (Ribbon), Circuit Brea
|
||||
</div>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>This will start an agent in server mode on port 8500, with the ui available at <a href="http://localhost:8500" class="bare">http://localhost:8500</a></p>
|
||||
<p>This will start an agent in server mode on port 8500, with the ui available at <a href="http://localhost:8500" class="bare">localhost:8500</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="spring-cloud-consul-discovery"><a class="link" href="#spring-cloud-consul-discovery">Service Discovery with Consul</a></h2>
|
||||
<h2 id="spring-cloud-consul-discovery"><a class="anchor" href="#spring-cloud-consul-discovery"></a><a class="link" href="#spring-cloud-consul-discovery">3. Service Discovery with Consul</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>Service Discovery is one of the key tenets of a microservice based architecture. Trying to hand configure each client or some form of convention can be very difficult to do and can be very brittle. Consul provides Service Discovery services via an <a href="https://www.consul.io/docs/agent/http.html">HTTP API</a> and <a href="https://www.consul.io/docs/agent/dns.html">DNS</a>. Spring Cloud Consul leverages the HTTP API for service registration and discovery. This does not prevent non-Spring Cloud applications from leveraging the DNS interface. Consul Agents servers are run in a <a href="https://www.consul.io/docs/internals/architecture.html">cluster</a> that communicates via a <a href="https://www.consul.io/docs/internals/gossip.html">gossip protocol</a> and uses the <a href="https://www.consul.io/docs/internals/consensus.html">Raft consensus protocol</a>.</p>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="_how_to_activate"><a class="link" href="#_how_to_activate">How to activate</a></h3>
|
||||
<h3 id="how-to-activate"><a class="anchor" href="#how-to-activate"></a><a class="link" href="#how-to-activate">3.1. How to activate</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>To activate Consul Service Discovery use the starter with group <code>org.springframework.cloud</code> and artifact id <code>spring-cloud-starter-consul-discovery</code>. See the <a href="https://projects.spring.io/spring-cloud/">Spring Cloud Project page</a> for details on setting up your build system with the current Spring Cloud Release Train.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="_registering_with_consul"><a class="link" href="#_registering_with_consul">Registering with Consul</a></h3>
|
||||
<h3 id="registering-with-consul"><a class="anchor" href="#registering-with-consul"></a><a class="link" href="#registering-with-consul">3.2. Registering with Consul</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>When a client registers with Consul, it provides meta-data about itself such as host and port, id, name and tags. An HTTP <a href="https://www.consul.io/docs/agent/checks.html">Check</a> is created by default that Consul hits the <code>/health</code> endpoint every 10 seconds. If the health check fails, the service instance is marked as critical.</p>
|
||||
</div>
|
||||
@@ -242,7 +257,7 @@ If you use <a href="#spring-cloud-consul-config">Spring Cloud Consul Config</a>,
|
||||
<p>To disable the service registration you can set <code>spring.cloud.consul.discovery.register</code> to <code>false</code>.</p>
|
||||
</div>
|
||||
<div class="sect3">
|
||||
<h4 id="_registering_management_as_a_separate_service"><a class="link" href="#_registering_management_as_a_separate_service">Registering Management as a Separate Service</a></h4>
|
||||
<h4 id="registering-management-as-a-separate-service"><a class="anchor" href="#registering-management-as-a-separate-service"></a><a class="link" href="#registering-management-as-a-separate-service">3.2.1. Registering Management as a Separate Service</a></h4>
|
||||
<div class="paragraph">
|
||||
<p>When management server port is set to something different than the application port, by setting <code>management.server.port</code> property, management service will be registered as a separate service than the application service. For example:</p>
|
||||
</div>
|
||||
@@ -353,7 +368,7 @@ spring.cloud.consul.discovery.management-tags</pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="_http_health_check"><a class="link" href="#_http_health_check">HTTP Health Check</a></h3>
|
||||
<h3 id="http-health-check"><a class="anchor" href="#http-health-check"></a><a class="link" href="#http-health-check">3.3. HTTP Health Check</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>The health check for a Consul instance defaults to "/health", which is the default locations of a useful endpoint in a Spring Boot Actuator application. You need to change these, even for an Actuator application if you use a non-default context path or servlet path (e.g. <code>server.servletPath=/foo</code>) or management endpoint path (e.g. <code>management.server.servlet.context-path=/admin</code>). The interval that Consul uses to check the health endpoint may also be configured. "10s" and "1m" represent 10 seconds and 1 minute respectively. Example:</p>
|
||||
</div>
|
||||
@@ -372,7 +387,7 @@ spring.cloud.consul.discovery.management-tags</pre>
|
||||
<p>You can disable the health check by setting <code>management.health.consul.enabled=false</code>.</p>
|
||||
</div>
|
||||
<div class="sect3">
|
||||
<h4 id="_metadata_and_consul_tags"><a class="link" href="#_metadata_and_consul_tags">Metadata and Consul tags</a></h4>
|
||||
<h4 id="metadata-and-consul-tags"><a class="anchor" href="#metadata-and-consul-tags"></a><a class="link" href="#metadata-and-consul-tags">3.3.1. Metadata and Consul tags</a></h4>
|
||||
<div class="paragraph">
|
||||
<p>Consul does not yet support metadata on services. Spring Cloud’s <code>ServiceInstance</code> has a <code>Map<String, String> metadata</code> field. Spring Cloud Consul uses Consul tags to approximate metadata until Consul officially supports metadata. Tags with the form <code>key=value</code> will be split and used as a <code>Map</code> key and value respectively. Tags without the equal <code>=</code> sign, will be used as both the key and value.</p>
|
||||
</div>
|
||||
@@ -391,7 +406,7 @@ spring.cloud.consul.discovery.management-tags</pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect3">
|
||||
<h4 id="_making_the_consul_instance_id_unique"><a class="link" href="#_making_the_consul_instance_id_unique">Making the Consul Instance ID Unique</a></h4>
|
||||
<h4 id="making-the-consul-instance-id-unique"><a class="anchor" href="#making-the-consul-instance-id-unique"></a><a class="link" href="#making-the-consul-instance-id-unique">3.3.2. Making the Consul Instance ID Unique</a></h4>
|
||||
<div class="paragraph">
|
||||
<p>By default a consul instance is registered with an ID that is equal to its Spring Application Context ID. By default, the Spring Application Context ID is <code>${spring.application.name}:comma,separated,profiles:${server.port}</code>. For most cases, this will allow multiple instances of one service to run on one machine. If further uniqueness is required, Using Spring Cloud you can override this by providing a unique identifier in <code>spring.cloud.consul.discovery.instanceId</code>. For example:</p>
|
||||
</div>
|
||||
@@ -410,7 +425,7 @@ spring.cloud.consul.discovery.management-tags</pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect3">
|
||||
<h4 id="_applying_headers_to_health_check_requests"><a class="link" href="#_applying_headers_to_health_check_requests">Applying Headers to Health Check Requests</a></h4>
|
||||
<h4 id="applying-headers-to-health-check-requests"><a class="anchor" href="#applying-headers-to-health-check-requests"></a><a class="link" href="#applying-headers-to-health-check-requests">3.3.3. Applying Headers to Health Check Requests</a></h4>
|
||||
<div class="paragraph">
|
||||
<p>Headers can be applied to health check requests. For example, if you’re trying to register a <a href="https://cloud.spring.io/spring-cloud-config/">Spring Cloud Config</a> server that uses <a href="https://github.com/spring-cloud/spring-cloud-config/blob/master/docs/src/main/asciidoc/spring-cloud-config.adoc#vault-backend">Vault Backend</a>:</p>
|
||||
</div>
|
||||
@@ -444,9 +459,9 @@ spring.cloud.consul.discovery.management-tags</pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="_looking_up_services"><a class="link" href="#_looking_up_services">Looking up services</a></h3>
|
||||
<h3 id="looking-up-services"><a class="anchor" href="#looking-up-services"></a><a class="link" href="#looking-up-services">3.4. Looking up services</a></h3>
|
||||
<div class="sect3">
|
||||
<h4 id="_using_load_balancer"><a class="link" href="#_using_load_balancer">Using Load-balancer</a></h4>
|
||||
<h4 id="using-load-balancer"><a class="anchor" href="#using-load-balancer"></a><a class="link" href="#using-load-balancer">3.4.1. Using Load-balancer</a></h4>
|
||||
<div class="paragraph">
|
||||
<p>Spring Cloud has support for <a href="https://github.com/spring-cloud/spring-cloud-netflix/blob/master/docs/src/main/asciidoc/spring-cloud-netflix.adoc#spring-cloud-feign">Feign</a> (a REST client builder) and also <a href="https://github.com/spring-cloud/spring-cloud-netflix/blob/master/docs/src/main/asciidoc/spring-cloud-netflix.adoc#spring-cloud-ribbon">Spring <code>RestTemplate</code></a>
|
||||
for looking up services using the logical service names/ids instead of physical URLs. Both Feign and the discovery-aware RestTemplate utilize <a href="https://cloud.spring.io/spring-cloud-netflix/single/spring-cloud-netflix.html#spring-cloud-ribbon">Ribbon</a> for client-side load balancing.</p>
|
||||
@@ -500,7 +515,7 @@ to <code>false</code>, so that <code>BlockingLoadBalancerClient</code> is used i
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect3">
|
||||
<h4 id="_using_the_discoveryclient"><a class="link" href="#_using_the_discoveryclient">Using the DiscoveryClient</a></h4>
|
||||
<h4 id="using-the-discoveryclient"><a class="anchor" href="#using-the-discoveryclient"></a><a class="link" href="#using-the-discoveryclient">3.4.2. Using the DiscoveryClient</a></h4>
|
||||
<div class="paragraph">
|
||||
<p>You can also use the <code>org.springframework.cloud.client.discovery.DiscoveryClient</code> which provides a simple API for discovery clients that is not specific to Netflix, e.g.</p>
|
||||
</div>
|
||||
@@ -521,7 +536,7 @@ public String serviceUrl() {
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="_consul_catalog_watch"><a class="link" href="#_consul_catalog_watch">Consul Catalog Watch</a></h3>
|
||||
<h3 id="consul-catalog-watch"><a class="anchor" href="#consul-catalog-watch"></a><a class="link" href="#consul-catalog-watch">3.5. Consul Catalog Watch</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>The Consul Catalog Watch takes advantage of the ability of consul to <a href="https://www.consul.io/docs/agent/watches.html#services">watch services</a>. The Catalog Watch makes a blocking Consul HTTP API call to determine if any services have changed. If there is new service data a Heartbeat Event is published.</p>
|
||||
</div>
|
||||
@@ -538,7 +553,7 @@ public String serviceUrl() {
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="spring-cloud-consul-config"><a class="link" href="#spring-cloud-consul-config">Distributed Configuration with Consul</a></h2>
|
||||
<h2 id="spring-cloud-consul-config"><a class="anchor" href="#spring-cloud-consul-config"></a><a class="link" href="#spring-cloud-consul-config">4. Distributed Configuration with Consul</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>Consul provides a <a href="https://consul.io/docs/agent/http/kv.html">Key/Value Store</a> for storing configuration and other metadata. Spring Cloud Consul Config is an alternative to the <a href="https://github.com/spring-cloud/spring-cloud-config">Config Server and Client</a>. Configuration is loaded into the Spring Environment during the special "bootstrap" phase. Configuration is stored in the <code>/config</code> folder by default. Multiple <code>PropertySource</code> instances are created based on the application’s name and the active profiles that mimicks the Spring Cloud Config order of resolving properties. For example, an application with the name "testApp" and with the "dev" profile will have the following property sources created:</p>
|
||||
@@ -558,7 +573,7 @@ config/application/</pre>
|
||||
<p>Configuration is currently read on startup of the application. Sending a HTTP POST to <code>/refresh</code> will cause the configuration to be reloaded. <a href="#spring-cloud-consul-config-watch">Config Watch</a> will also automatically detect changes and reload the application context.</p>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="_how_to_activate_2"><a class="link" href="#_how_to_activate_2">How to activate</a></h3>
|
||||
<h3 id="how-to-activate-2"><a class="anchor" href="#how-to-activate-2"></a><a class="link" href="#how-to-activate-2">4.1. How to activate</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>To get started with Consul Configuration use the starter with group <code>org.springframework.cloud</code> and artifact id <code>spring-cloud-starter-consul-config</code>. See the <a href="https://projects.spring.io/spring-cloud/">Spring Cloud Project page</a> for details on setting up your build system with the current Spring Cloud Release Train.</p>
|
||||
</div>
|
||||
@@ -567,7 +582,7 @@ config/application/</pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="_customizing"><a class="link" href="#_customizing">Customizing</a></h3>
|
||||
<h3 id="customizing"><a class="anchor" href="#customizing"></a><a class="link" href="#customizing">4.2. Customizing</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>Consul Config may be customized using the following properties:</p>
|
||||
</div>
|
||||
@@ -602,7 +617,7 @@ config/application/</pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="spring-cloud-consul-config-watch"><a class="link" href="#spring-cloud-consul-config-watch">Config Watch</a></h3>
|
||||
<h3 id="spring-cloud-consul-config-watch"><a class="anchor" href="#spring-cloud-consul-config-watch"></a><a class="link" href="#spring-cloud-consul-config-watch">4.3. Config Watch</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>The Consul Config Watch takes advantage of the ability of consul to <a href="https://www.consul.io/docs/agent/watches.html#keyprefix">watch a key prefix</a>. The Config Watch makes a blocking Consul HTTP API call to determine if any relevant configuration data has changed for the current application. If there is new configuration data a Refresh Event is published. This is equivalent to calling the <code>/refresh</code> actuator endpoint.</p>
|
||||
</div>
|
||||
@@ -617,7 +632,7 @@ config/application/</pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="spring-cloud-consul-config-format"><a class="link" href="#spring-cloud-consul-config-format">YAML or Properties with Config</a></h3>
|
||||
<h3 id="spring-cloud-consul-config-format"><a class="anchor" href="#spring-cloud-consul-config-format"></a><a class="link" href="#spring-cloud-consul-config-format">4.4. YAML or Properties with Config</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>It may be more convenient to store a blob of properties in YAML or Properties format as opposed to individual key/value pairs. Set the <code>spring.cloud.consul.config.format</code> property to <code>YAML</code> or <code>PROPERTIES</code>. For example to use YAML:</p>
|
||||
</div>
|
||||
@@ -650,7 +665,7 @@ config/application/data</pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="spring-cloud-consul-config-git2consul"><a class="link" href="#spring-cloud-consul-config-git2consul">git2consul with Config</a></h3>
|
||||
<h3 id="spring-cloud-consul-config-git2consul"><a class="anchor" href="#spring-cloud-consul-config-git2consul"></a><a class="link" href="#spring-cloud-consul-config-git2consul">4.5. git2consul with Config</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>git2consul is a Consul community project that loads files from a git repository to individual keys into Consul. By default the names of the keys are names of the files. YAML and Properties files are supported with file extensions of <code>.yml</code> and <code>.properties</code> respectively. Set the <code>spring.cloud.consul.config.format</code> property to <code>FILES</code>. For example:</p>
|
||||
</div>
|
||||
@@ -693,7 +708,7 @@ config/application.yml</pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="spring-cloud-consul-failfast"><a class="link" href="#spring-cloud-consul-failfast">Fail Fast</a></h3>
|
||||
<h3 id="spring-cloud-consul-failfast"><a class="anchor" href="#spring-cloud-consul-failfast"></a><a class="link" href="#spring-cloud-consul-failfast">4.6. Fail Fast</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>It may be convenient in certain circumstances (like local development or certain test scenarios) to not fail if consul isn’t available for configuration. Setting <code>spring.cloud.consul.config.failFast=false</code> in <code>bootstrap.yml</code> will cause the configuration module to log a warning rather than throw an exception. This will allow the application to continue startup normally.</p>
|
||||
</div>
|
||||
@@ -701,7 +716,7 @@ config/application.yml</pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="spring-cloud-consul-retry"><a class="link" href="#spring-cloud-consul-retry">Consul Retry</a></h2>
|
||||
<h2 id="spring-cloud-consul-retry"><a class="anchor" href="#spring-cloud-consul-retry"></a><a class="link" href="#spring-cloud-consul-retry">5. Consul Retry</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>If you expect that the consul agent may occasionally be unavailable when
|
||||
@@ -729,10 +744,10 @@ Retry has a <code>RetryInterceptorBuilder</code> that makes it easy to create on
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="spring-cloud-consul-bus"><a class="link" href="#spring-cloud-consul-bus">Spring Cloud Bus with Consul</a></h2>
|
||||
<h2 id="spring-cloud-consul-bus"><a class="anchor" href="#spring-cloud-consul-bus"></a><a class="link" href="#spring-cloud-consul-bus">6. Spring Cloud Bus with Consul</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="sect2">
|
||||
<h3 id="_how_to_activate_3"><a class="link" href="#_how_to_activate_3">How to activate</a></h3>
|
||||
<h3 id="how-to-activate-3"><a class="anchor" href="#how-to-activate-3"></a><a class="link" href="#how-to-activate-3">6.1. How to activate</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>To get started with the Consul Bus use the starter with group <code>org.springframework.cloud</code> and artifact id <code>spring-cloud-starter-consul-bus</code>. See the <a href="https://projects.spring.io/spring-cloud/">Spring Cloud Project page</a> for details on setting up your build system with the current Spring Cloud Release Train.</p>
|
||||
</div>
|
||||
@@ -743,7 +758,7 @@ Retry has a <code>RetryInterceptorBuilder</code> that makes it easy to create on
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="spring-cloud-consul-hystrix"><a class="link" href="#spring-cloud-consul-hystrix">Circuit Breaker with Hystrix</a></h2>
|
||||
<h2 id="spring-cloud-consul-hystrix"><a class="anchor" href="#spring-cloud-consul-hystrix"></a><a class="link" href="#spring-cloud-consul-hystrix">7. Circuit Breaker with Hystrix</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>Applications can use the Hystrix Circuit Breaker provided by the Spring Cloud Netflix project by including this starter in the projects pom.xml: <code>spring-cloud-starter-hystrix</code>. Hystrix doesn’t depend on the Netflix Discovery Client. The <code>@EnableHystrix</code> annotation should be placed on a configuration class (usually the main class). Then methods can be annotated with <code>@HystrixCommand</code> to be protected by a circuit breaker. See <a href="https://projects.spring.io/spring-cloud/spring-cloud.html#_circuit_breaker_hystrix_clients">the documentation</a> for more details.</p>
|
||||
@@ -751,7 +766,7 @@ Retry has a <code>RetryInterceptorBuilder</code> that makes it easy to create on
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="spring-cloud-consul-turbine"><a class="link" href="#spring-cloud-consul-turbine">Hystrix metrics aggregation with Turbine and Consul</a></h2>
|
||||
<h2 id="spring-cloud-consul-turbine"><a class="anchor" href="#spring-cloud-consul-turbine"></a><a class="link" href="#spring-cloud-consul-turbine">8. Hystrix metrics aggregation with Turbine and Consul</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>Turbine (provided by the Spring Cloud Netflix project), aggregates multiple instances Hystrix metrics streams, so the dashboard can display an aggregate view. Turbine uses the <code>DiscoveryClient</code> interface to lookup relevant instances. To use Turbine with Spring Cloud Consul, configure the Turbine application in a manner similar to the following examples:</p>
|
||||
|
||||
@@ -96,35 +96,50 @@ $(addBlockSwitches);
|
||||
<div id="toc" class="toc2">
|
||||
<div id="toctitle">Table of Contents</div>
|
||||
<ul class="sectlevel1">
|
||||
<li><a href="#spring-cloud-consul-install">Install Consul</a></li>
|
||||
<li><a href="#spring-cloud-consul-agent">Consul Agent</a></li>
|
||||
<li><a href="#spring-cloud-consul-discovery">Service Discovery with Consul</a>
|
||||
<li><a href="#spring-cloud-consul-install">1. Install Consul</a></li>
|
||||
<li><a href="#spring-cloud-consul-agent">2. Consul Agent</a></li>
|
||||
<li><a href="#spring-cloud-consul-discovery">3. Service Discovery with Consul</a>
|
||||
<ul class="sectlevel2">
|
||||
<li><a href="#_how_to_activate">How to activate</a></li>
|
||||
<li><a href="#_registering_with_consul">Registering with Consul</a></li>
|
||||
<li><a href="#_http_health_check">HTTP Health Check</a></li>
|
||||
<li><a href="#_looking_up_services">Looking up services</a></li>
|
||||
<li><a href="#_consul_catalog_watch">Consul Catalog Watch</a></li>
|
||||
<li><a href="#how-to-activate">3.1. How to activate</a></li>
|
||||
<li><a href="#registering-with-consul">3.2. Registering with Consul</a>
|
||||
<ul class="sectlevel3">
|
||||
<li><a href="#registering-management-as-a-separate-service">3.2.1. Registering Management as a Separate Service</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#spring-cloud-consul-config">Distributed Configuration with Consul</a>
|
||||
<ul class="sectlevel2">
|
||||
<li><a href="#_how_to_activate_2">How to activate</a></li>
|
||||
<li><a href="#_customizing">Customizing</a></li>
|
||||
<li><a href="#spring-cloud-consul-config-watch">Config Watch</a></li>
|
||||
<li><a href="#spring-cloud-consul-config-format">YAML or Properties with Config</a></li>
|
||||
<li><a href="#spring-cloud-consul-config-git2consul">git2consul with Config</a></li>
|
||||
<li><a href="#spring-cloud-consul-failfast">Fail Fast</a></li>
|
||||
<li><a href="#http-health-check">3.3. HTTP Health Check</a>
|
||||
<ul class="sectlevel3">
|
||||
<li><a href="#metadata-and-consul-tags">3.3.1. Metadata and Consul tags</a></li>
|
||||
<li><a href="#making-the-consul-instance-id-unique">3.3.2. Making the Consul Instance ID Unique</a></li>
|
||||
<li><a href="#applying-headers-to-health-check-requests">3.3.3. Applying Headers to Health Check Requests</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#spring-cloud-consul-retry">Consul Retry</a></li>
|
||||
<li><a href="#spring-cloud-consul-bus">Spring Cloud Bus with Consul</a>
|
||||
<ul class="sectlevel2">
|
||||
<li><a href="#_how_to_activate_3">How to activate</a></li>
|
||||
<li><a href="#looking-up-services">3.4. Looking up services</a>
|
||||
<ul class="sectlevel3">
|
||||
<li><a href="#using-load-balancer">3.4.1. Using Load-balancer</a></li>
|
||||
<li><a href="#using-the-discoveryclient">3.4.2. Using the DiscoveryClient</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#spring-cloud-consul-hystrix">Circuit Breaker with Hystrix</a></li>
|
||||
<li><a href="#spring-cloud-consul-turbine">Hystrix metrics aggregation with Turbine and Consul</a></li>
|
||||
<li><a href="#consul-catalog-watch">3.5. Consul Catalog Watch</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#spring-cloud-consul-config">4. Distributed Configuration with Consul</a>
|
||||
<ul class="sectlevel2">
|
||||
<li><a href="#how-to-activate-2">4.1. How to activate</a></li>
|
||||
<li><a href="#customizing">4.2. Customizing</a></li>
|
||||
<li><a href="#spring-cloud-consul-config-watch">4.3. Config Watch</a></li>
|
||||
<li><a href="#spring-cloud-consul-config-format">4.4. YAML or Properties with Config</a></li>
|
||||
<li><a href="#spring-cloud-consul-config-git2consul">4.5. git2consul with Config</a></li>
|
||||
<li><a href="#spring-cloud-consul-failfast">4.6. Fail Fast</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#spring-cloud-consul-retry">5. Consul Retry</a></li>
|
||||
<li><a href="#spring-cloud-consul-bus">6. Spring Cloud Bus with Consul</a>
|
||||
<ul class="sectlevel2">
|
||||
<li><a href="#how-to-activate-3">6.1. How to activate</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#spring-cloud-consul-hystrix">7. Circuit Breaker with Hystrix</a></li>
|
||||
<li><a href="#spring-cloud-consul-turbine">8. Hystrix metrics aggregation with Turbine and Consul</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
@@ -146,7 +161,7 @@ Intelligent Routing (Zuul) and Client Side Load Balancing (Ribbon), Circuit Brea
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="spring-cloud-consul-install"><a class="link" href="#spring-cloud-consul-install">Install Consul</a></h2>
|
||||
<h2 id="spring-cloud-consul-install"><a class="anchor" href="#spring-cloud-consul-install"></a><a class="link" href="#spring-cloud-consul-install">1. Install Consul</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>Please see the <a href="https://www.consul.io/intro/getting-started/install.html">installation documentation</a> for instructions on how to install Consul.</p>
|
||||
@@ -154,7 +169,7 @@ Intelligent Routing (Zuul) and Client Side Load Balancing (Ribbon), Circuit Brea
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="spring-cloud-consul-agent"><a class="link" href="#spring-cloud-consul-agent">Consul Agent</a></h2>
|
||||
<h2 id="spring-cloud-consul-agent"><a class="anchor" href="#spring-cloud-consul-agent"></a><a class="link" href="#spring-cloud-consul-agent">2. Consul Agent</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>A Consul Agent client must be available to all Spring Cloud Consul applications. By default, the Agent client is expected to be at <code>localhost:8500</code>. See the <a href="https://consul.io/docs/agent/basics.html">Agent documentation</a> for specifics on how to start an Agent client and how to connect to a cluster of Consul Agent Servers. For development, after you have installed consul, you may start a Consul Agent using the following command:</p>
|
||||
@@ -165,24 +180,24 @@ Intelligent Routing (Zuul) and Client Side Load Balancing (Ribbon), Circuit Brea
|
||||
</div>
|
||||
</div>
|
||||
<div class="paragraph">
|
||||
<p>This will start an agent in server mode on port 8500, with the ui available at <a href="http://localhost:8500" class="bare">http://localhost:8500</a></p>
|
||||
<p>This will start an agent in server mode on port 8500, with the ui available at <a href="http://localhost:8500" class="bare">localhost:8500</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="spring-cloud-consul-discovery"><a class="link" href="#spring-cloud-consul-discovery">Service Discovery with Consul</a></h2>
|
||||
<h2 id="spring-cloud-consul-discovery"><a class="anchor" href="#spring-cloud-consul-discovery"></a><a class="link" href="#spring-cloud-consul-discovery">3. Service Discovery with Consul</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>Service Discovery is one of the key tenets of a microservice based architecture. Trying to hand configure each client or some form of convention can be very difficult to do and can be very brittle. Consul provides Service Discovery services via an <a href="https://www.consul.io/docs/agent/http.html">HTTP API</a> and <a href="https://www.consul.io/docs/agent/dns.html">DNS</a>. Spring Cloud Consul leverages the HTTP API for service registration and discovery. This does not prevent non-Spring Cloud applications from leveraging the DNS interface. Consul Agents servers are run in a <a href="https://www.consul.io/docs/internals/architecture.html">cluster</a> that communicates via a <a href="https://www.consul.io/docs/internals/gossip.html">gossip protocol</a> and uses the <a href="https://www.consul.io/docs/internals/consensus.html">Raft consensus protocol</a>.</p>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="_how_to_activate"><a class="link" href="#_how_to_activate">How to activate</a></h3>
|
||||
<h3 id="how-to-activate"><a class="anchor" href="#how-to-activate"></a><a class="link" href="#how-to-activate">3.1. How to activate</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>To activate Consul Service Discovery use the starter with group <code>org.springframework.cloud</code> and artifact id <code>spring-cloud-starter-consul-discovery</code>. See the <a href="https://projects.spring.io/spring-cloud/">Spring Cloud Project page</a> for details on setting up your build system with the current Spring Cloud Release Train.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="_registering_with_consul"><a class="link" href="#_registering_with_consul">Registering with Consul</a></h3>
|
||||
<h3 id="registering-with-consul"><a class="anchor" href="#registering-with-consul"></a><a class="link" href="#registering-with-consul">3.2. Registering with Consul</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>When a client registers with Consul, it provides meta-data about itself such as host and port, id, name and tags. An HTTP <a href="https://www.consul.io/docs/agent/checks.html">Check</a> is created by default that Consul hits the <code>/health</code> endpoint every 10 seconds. If the health check fails, the service instance is marked as critical.</p>
|
||||
</div>
|
||||
@@ -242,7 +257,7 @@ If you use <a href="#spring-cloud-consul-config">Spring Cloud Consul Config</a>,
|
||||
<p>To disable the service registration you can set <code>spring.cloud.consul.discovery.register</code> to <code>false</code>.</p>
|
||||
</div>
|
||||
<div class="sect3">
|
||||
<h4 id="_registering_management_as_a_separate_service"><a class="link" href="#_registering_management_as_a_separate_service">Registering Management as a Separate Service</a></h4>
|
||||
<h4 id="registering-management-as-a-separate-service"><a class="anchor" href="#registering-management-as-a-separate-service"></a><a class="link" href="#registering-management-as-a-separate-service">3.2.1. Registering Management as a Separate Service</a></h4>
|
||||
<div class="paragraph">
|
||||
<p>When management server port is set to something different than the application port, by setting <code>management.server.port</code> property, management service will be registered as a separate service than the application service. For example:</p>
|
||||
</div>
|
||||
@@ -353,7 +368,7 @@ spring.cloud.consul.discovery.management-tags</pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="_http_health_check"><a class="link" href="#_http_health_check">HTTP Health Check</a></h3>
|
||||
<h3 id="http-health-check"><a class="anchor" href="#http-health-check"></a><a class="link" href="#http-health-check">3.3. HTTP Health Check</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>The health check for a Consul instance defaults to "/health", which is the default locations of a useful endpoint in a Spring Boot Actuator application. You need to change these, even for an Actuator application if you use a non-default context path or servlet path (e.g. <code>server.servletPath=/foo</code>) or management endpoint path (e.g. <code>management.server.servlet.context-path=/admin</code>). The interval that Consul uses to check the health endpoint may also be configured. "10s" and "1m" represent 10 seconds and 1 minute respectively. Example:</p>
|
||||
</div>
|
||||
@@ -372,7 +387,7 @@ spring.cloud.consul.discovery.management-tags</pre>
|
||||
<p>You can disable the health check by setting <code>management.health.consul.enabled=false</code>.</p>
|
||||
</div>
|
||||
<div class="sect3">
|
||||
<h4 id="_metadata_and_consul_tags"><a class="link" href="#_metadata_and_consul_tags">Metadata and Consul tags</a></h4>
|
||||
<h4 id="metadata-and-consul-tags"><a class="anchor" href="#metadata-and-consul-tags"></a><a class="link" href="#metadata-and-consul-tags">3.3.1. Metadata and Consul tags</a></h4>
|
||||
<div class="paragraph">
|
||||
<p>Consul does not yet support metadata on services. Spring Cloud’s <code>ServiceInstance</code> has a <code>Map<String, String> metadata</code> field. Spring Cloud Consul uses Consul tags to approximate metadata until Consul officially supports metadata. Tags with the form <code>key=value</code> will be split and used as a <code>Map</code> key and value respectively. Tags without the equal <code>=</code> sign, will be used as both the key and value.</p>
|
||||
</div>
|
||||
@@ -391,7 +406,7 @@ spring.cloud.consul.discovery.management-tags</pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect3">
|
||||
<h4 id="_making_the_consul_instance_id_unique"><a class="link" href="#_making_the_consul_instance_id_unique">Making the Consul Instance ID Unique</a></h4>
|
||||
<h4 id="making-the-consul-instance-id-unique"><a class="anchor" href="#making-the-consul-instance-id-unique"></a><a class="link" href="#making-the-consul-instance-id-unique">3.3.2. Making the Consul Instance ID Unique</a></h4>
|
||||
<div class="paragraph">
|
||||
<p>By default a consul instance is registered with an ID that is equal to its Spring Application Context ID. By default, the Spring Application Context ID is <code>${spring.application.name}:comma,separated,profiles:${server.port}</code>. For most cases, this will allow multiple instances of one service to run on one machine. If further uniqueness is required, Using Spring Cloud you can override this by providing a unique identifier in <code>spring.cloud.consul.discovery.instanceId</code>. For example:</p>
|
||||
</div>
|
||||
@@ -410,7 +425,7 @@ spring.cloud.consul.discovery.management-tags</pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect3">
|
||||
<h4 id="_applying_headers_to_health_check_requests"><a class="link" href="#_applying_headers_to_health_check_requests">Applying Headers to Health Check Requests</a></h4>
|
||||
<h4 id="applying-headers-to-health-check-requests"><a class="anchor" href="#applying-headers-to-health-check-requests"></a><a class="link" href="#applying-headers-to-health-check-requests">3.3.3. Applying Headers to Health Check Requests</a></h4>
|
||||
<div class="paragraph">
|
||||
<p>Headers can be applied to health check requests. For example, if you’re trying to register a <a href="https://cloud.spring.io/spring-cloud-config/">Spring Cloud Config</a> server that uses <a href="https://github.com/spring-cloud/spring-cloud-config/blob/master/docs/src/main/asciidoc/spring-cloud-config.adoc#vault-backend">Vault Backend</a>:</p>
|
||||
</div>
|
||||
@@ -444,9 +459,9 @@ spring.cloud.consul.discovery.management-tags</pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="_looking_up_services"><a class="link" href="#_looking_up_services">Looking up services</a></h3>
|
||||
<h3 id="looking-up-services"><a class="anchor" href="#looking-up-services"></a><a class="link" href="#looking-up-services">3.4. Looking up services</a></h3>
|
||||
<div class="sect3">
|
||||
<h4 id="_using_load_balancer"><a class="link" href="#_using_load_balancer">Using Load-balancer</a></h4>
|
||||
<h4 id="using-load-balancer"><a class="anchor" href="#using-load-balancer"></a><a class="link" href="#using-load-balancer">3.4.1. Using Load-balancer</a></h4>
|
||||
<div class="paragraph">
|
||||
<p>Spring Cloud has support for <a href="https://github.com/spring-cloud/spring-cloud-netflix/blob/master/docs/src/main/asciidoc/spring-cloud-netflix.adoc#spring-cloud-feign">Feign</a> (a REST client builder) and also <a href="https://github.com/spring-cloud/spring-cloud-netflix/blob/master/docs/src/main/asciidoc/spring-cloud-netflix.adoc#spring-cloud-ribbon">Spring <code>RestTemplate</code></a>
|
||||
for looking up services using the logical service names/ids instead of physical URLs. Both Feign and the discovery-aware RestTemplate utilize <a href="https://cloud.spring.io/spring-cloud-netflix/single/spring-cloud-netflix.html#spring-cloud-ribbon">Ribbon</a> for client-side load balancing.</p>
|
||||
@@ -500,7 +515,7 @@ to <code>false</code>, so that <code>BlockingLoadBalancerClient</code> is used i
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect3">
|
||||
<h4 id="_using_the_discoveryclient"><a class="link" href="#_using_the_discoveryclient">Using the DiscoveryClient</a></h4>
|
||||
<h4 id="using-the-discoveryclient"><a class="anchor" href="#using-the-discoveryclient"></a><a class="link" href="#using-the-discoveryclient">3.4.2. Using the DiscoveryClient</a></h4>
|
||||
<div class="paragraph">
|
||||
<p>You can also use the <code>org.springframework.cloud.client.discovery.DiscoveryClient</code> which provides a simple API for discovery clients that is not specific to Netflix, e.g.</p>
|
||||
</div>
|
||||
@@ -521,7 +536,7 @@ public String serviceUrl() {
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="_consul_catalog_watch"><a class="link" href="#_consul_catalog_watch">Consul Catalog Watch</a></h3>
|
||||
<h3 id="consul-catalog-watch"><a class="anchor" href="#consul-catalog-watch"></a><a class="link" href="#consul-catalog-watch">3.5. Consul Catalog Watch</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>The Consul Catalog Watch takes advantage of the ability of consul to <a href="https://www.consul.io/docs/agent/watches.html#services">watch services</a>. The Catalog Watch makes a blocking Consul HTTP API call to determine if any services have changed. If there is new service data a Heartbeat Event is published.</p>
|
||||
</div>
|
||||
@@ -538,7 +553,7 @@ public String serviceUrl() {
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="spring-cloud-consul-config"><a class="link" href="#spring-cloud-consul-config">Distributed Configuration with Consul</a></h2>
|
||||
<h2 id="spring-cloud-consul-config"><a class="anchor" href="#spring-cloud-consul-config"></a><a class="link" href="#spring-cloud-consul-config">4. Distributed Configuration with Consul</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>Consul provides a <a href="https://consul.io/docs/agent/http/kv.html">Key/Value Store</a> for storing configuration and other metadata. Spring Cloud Consul Config is an alternative to the <a href="https://github.com/spring-cloud/spring-cloud-config">Config Server and Client</a>. Configuration is loaded into the Spring Environment during the special "bootstrap" phase. Configuration is stored in the <code>/config</code> folder by default. Multiple <code>PropertySource</code> instances are created based on the application’s name and the active profiles that mimicks the Spring Cloud Config order of resolving properties. For example, an application with the name "testApp" and with the "dev" profile will have the following property sources created:</p>
|
||||
@@ -558,7 +573,7 @@ config/application/</pre>
|
||||
<p>Configuration is currently read on startup of the application. Sending a HTTP POST to <code>/refresh</code> will cause the configuration to be reloaded. <a href="#spring-cloud-consul-config-watch">Config Watch</a> will also automatically detect changes and reload the application context.</p>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="_how_to_activate_2"><a class="link" href="#_how_to_activate_2">How to activate</a></h3>
|
||||
<h3 id="how-to-activate-2"><a class="anchor" href="#how-to-activate-2"></a><a class="link" href="#how-to-activate-2">4.1. How to activate</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>To get started with Consul Configuration use the starter with group <code>org.springframework.cloud</code> and artifact id <code>spring-cloud-starter-consul-config</code>. See the <a href="https://projects.spring.io/spring-cloud/">Spring Cloud Project page</a> for details on setting up your build system with the current Spring Cloud Release Train.</p>
|
||||
</div>
|
||||
@@ -567,7 +582,7 @@ config/application/</pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="_customizing"><a class="link" href="#_customizing">Customizing</a></h3>
|
||||
<h3 id="customizing"><a class="anchor" href="#customizing"></a><a class="link" href="#customizing">4.2. Customizing</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>Consul Config may be customized using the following properties:</p>
|
||||
</div>
|
||||
@@ -602,7 +617,7 @@ config/application/</pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="spring-cloud-consul-config-watch"><a class="link" href="#spring-cloud-consul-config-watch">Config Watch</a></h3>
|
||||
<h3 id="spring-cloud-consul-config-watch"><a class="anchor" href="#spring-cloud-consul-config-watch"></a><a class="link" href="#spring-cloud-consul-config-watch">4.3. Config Watch</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>The Consul Config Watch takes advantage of the ability of consul to <a href="https://www.consul.io/docs/agent/watches.html#keyprefix">watch a key prefix</a>. The Config Watch makes a blocking Consul HTTP API call to determine if any relevant configuration data has changed for the current application. If there is new configuration data a Refresh Event is published. This is equivalent to calling the <code>/refresh</code> actuator endpoint.</p>
|
||||
</div>
|
||||
@@ -617,7 +632,7 @@ config/application/</pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="spring-cloud-consul-config-format"><a class="link" href="#spring-cloud-consul-config-format">YAML or Properties with Config</a></h3>
|
||||
<h3 id="spring-cloud-consul-config-format"><a class="anchor" href="#spring-cloud-consul-config-format"></a><a class="link" href="#spring-cloud-consul-config-format">4.4. YAML or Properties with Config</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>It may be more convenient to store a blob of properties in YAML or Properties format as opposed to individual key/value pairs. Set the <code>spring.cloud.consul.config.format</code> property to <code>YAML</code> or <code>PROPERTIES</code>. For example to use YAML:</p>
|
||||
</div>
|
||||
@@ -650,7 +665,7 @@ config/application/data</pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="spring-cloud-consul-config-git2consul"><a class="link" href="#spring-cloud-consul-config-git2consul">git2consul with Config</a></h3>
|
||||
<h3 id="spring-cloud-consul-config-git2consul"><a class="anchor" href="#spring-cloud-consul-config-git2consul"></a><a class="link" href="#spring-cloud-consul-config-git2consul">4.5. git2consul with Config</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>git2consul is a Consul community project that loads files from a git repository to individual keys into Consul. By default the names of the keys are names of the files. YAML and Properties files are supported with file extensions of <code>.yml</code> and <code>.properties</code> respectively. Set the <code>spring.cloud.consul.config.format</code> property to <code>FILES</code>. For example:</p>
|
||||
</div>
|
||||
@@ -693,7 +708,7 @@ config/application.yml</pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect2">
|
||||
<h3 id="spring-cloud-consul-failfast"><a class="link" href="#spring-cloud-consul-failfast">Fail Fast</a></h3>
|
||||
<h3 id="spring-cloud-consul-failfast"><a class="anchor" href="#spring-cloud-consul-failfast"></a><a class="link" href="#spring-cloud-consul-failfast">4.6. Fail Fast</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>It may be convenient in certain circumstances (like local development or certain test scenarios) to not fail if consul isn’t available for configuration. Setting <code>spring.cloud.consul.config.failFast=false</code> in <code>bootstrap.yml</code> will cause the configuration module to log a warning rather than throw an exception. This will allow the application to continue startup normally.</p>
|
||||
</div>
|
||||
@@ -701,7 +716,7 @@ config/application.yml</pre>
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="spring-cloud-consul-retry"><a class="link" href="#spring-cloud-consul-retry">Consul Retry</a></h2>
|
||||
<h2 id="spring-cloud-consul-retry"><a class="anchor" href="#spring-cloud-consul-retry"></a><a class="link" href="#spring-cloud-consul-retry">5. Consul Retry</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>If you expect that the consul agent may occasionally be unavailable when
|
||||
@@ -729,10 +744,10 @@ Retry has a <code>RetryInterceptorBuilder</code> that makes it easy to create on
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="spring-cloud-consul-bus"><a class="link" href="#spring-cloud-consul-bus">Spring Cloud Bus with Consul</a></h2>
|
||||
<h2 id="spring-cloud-consul-bus"><a class="anchor" href="#spring-cloud-consul-bus"></a><a class="link" href="#spring-cloud-consul-bus">6. Spring Cloud Bus with Consul</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="sect2">
|
||||
<h3 id="_how_to_activate_3"><a class="link" href="#_how_to_activate_3">How to activate</a></h3>
|
||||
<h3 id="how-to-activate-3"><a class="anchor" href="#how-to-activate-3"></a><a class="link" href="#how-to-activate-3">6.1. How to activate</a></h3>
|
||||
<div class="paragraph">
|
||||
<p>To get started with the Consul Bus use the starter with group <code>org.springframework.cloud</code> and artifact id <code>spring-cloud-starter-consul-bus</code>. See the <a href="https://projects.spring.io/spring-cloud/">Spring Cloud Project page</a> for details on setting up your build system with the current Spring Cloud Release Train.</p>
|
||||
</div>
|
||||
@@ -743,7 +758,7 @@ Retry has a <code>RetryInterceptorBuilder</code> that makes it easy to create on
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="spring-cloud-consul-hystrix"><a class="link" href="#spring-cloud-consul-hystrix">Circuit Breaker with Hystrix</a></h2>
|
||||
<h2 id="spring-cloud-consul-hystrix"><a class="anchor" href="#spring-cloud-consul-hystrix"></a><a class="link" href="#spring-cloud-consul-hystrix">7. Circuit Breaker with Hystrix</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>Applications can use the Hystrix Circuit Breaker provided by the Spring Cloud Netflix project by including this starter in the projects pom.xml: <code>spring-cloud-starter-hystrix</code>. Hystrix doesn’t depend on the Netflix Discovery Client. The <code>@EnableHystrix</code> annotation should be placed on a configuration class (usually the main class). Then methods can be annotated with <code>@HystrixCommand</code> to be protected by a circuit breaker. See <a href="https://projects.spring.io/spring-cloud/spring-cloud.html#_circuit_breaker_hystrix_clients">the documentation</a> for more details.</p>
|
||||
@@ -751,7 +766,7 @@ Retry has a <code>RetryInterceptorBuilder</code> that makes it easy to create on
|
||||
</div>
|
||||
</div>
|
||||
<div class="sect1">
|
||||
<h2 id="spring-cloud-consul-turbine"><a class="link" href="#spring-cloud-consul-turbine">Hystrix metrics aggregation with Turbine and Consul</a></h2>
|
||||
<h2 id="spring-cloud-consul-turbine"><a class="anchor" href="#spring-cloud-consul-turbine"></a><a class="link" href="#spring-cloud-consul-turbine">8. Hystrix metrics aggregation with Turbine and Consul</a></h2>
|
||||
<div class="sectionbody">
|
||||
<div class="paragraph">
|
||||
<p>Turbine (provided by the Spring Cloud Netflix project), aggregates multiple instances Hystrix metrics streams, so the dashboard can display an aggregate view. Turbine uses the <code>DiscoveryClient</code> interface to lookup relevant instances. To use Turbine with Spring Cloud Consul, configure the Turbine application in a manner similar to the following examples:</p>
|
||||
|
||||
Reference in New Issue
Block a user