You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by jr...@apache.org on 2018/04/28 14:19:37 UTC
[1/8] qpid-site git commit: Copyedits for the readme
Repository: qpid-site
Updated Branches:
refs/heads/asf-site 3d0bbfbc6 -> f9417e2b9
Copyedits for the readme
Project: http://git-wip-us.apache.org/repos/asf/qpid-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-site/commit/bb2a2cac
Tree: http://git-wip-us.apache.org/repos/asf/qpid-site/tree/bb2a2cac
Diff: http://git-wip-us.apache.org/repos/asf/qpid-site/diff/bb2a2cac
Branch: refs/heads/asf-site
Commit: bb2a2cac93fe0f2aa20310a3b7904599b02b00a5
Parents: b02dd8a
Author: Justin Ross <jr...@apache.org>
Authored: Tue Dec 12 09:24:04 2017 -0800
Committer: Justin Ross <jr...@apache.org>
Committed: Thu Apr 26 17:18:09 2018 -0700
----------------------------------------------------------------------
README.md | 39 ++++++++++++++++++++-------------------
1 file changed, 20 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/bb2a2cac/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index f79ca4e..36e5b9a 100644
--- a/README.md
+++ b/README.md
@@ -1,15 +1,15 @@
# Qpid Site
-## Setup your environment
+## Dependencies
-To setup paths in your environment, source the `config.sh` script.
-
- ~$ cd qpid-site/
- [qpid-site]$ source config.sh
+ - Curl
+ - Git
+ - GNU Find
+ - GNU Make
+ - Python 2.7
## Project layout
- config.sh # Sets up your project environment
Makefile # Defines the make targets
python/ # Python library code; used by scripts
scripts/ # Scripts called by the make rules
@@ -46,19 +46,21 @@ These are the important ones:
3. To look at the result in your browser, navigate to
- file:///$somepath/site/output/somepage.html
+ file:/<some-path>/qpid-site/output/somepage.html
## Render transformations
-The render step takes files under `input/` and reproduces them under
-`output/`. The following transformations are applied in the process:
+The render operation takes files under `input/` and reproduces them
+under `output/`. The following transformations are applied in the
+process.
- - `.html.in` files are wrapped in the site template and copied
+ - `.html.in` files are wrapped in the standard page template and
+ copied.
- `.md` (Markdown) files are converted to HTML, wrapped in the site
- template, and copied
- - All other files are simply copied
+ template, and copied.
+ - All other files are simply copied.
- All Markdown, HTML, Javascript, and CSS files undergo substitution
- for `{{placeholders}}`
+ for `{{placeholders}}`.
## Markdown syntax
@@ -111,9 +113,8 @@ working.
## Generating release content
-Most of the site content is written by human beings. Release content,
-however, is automated. Use the following commands to generate content
-for a new release.
+Content for new releases is generated using scripts. Use one of the
+following commands.
# Usage: make gen-$module-release RELEASE=$VERSION [CHECKOUT_DIR=$DIR]
@@ -151,7 +152,7 @@ parameter to the location of a local Subversion checkout, the scripts
will instead use the provided content.
When you add release content, you should also update the following
-files:
+files.
input/_transom_config.py # Update the current release pointer
input/releases/index.md # Add current release, move the previous
@@ -169,8 +170,8 @@ dependencies on Fedora or RHEL.
## Publishing your work
Qpid uses gitpubsub to send new content to the Qpid website. Any file
-committed under the 'content' dir on the 'asf-site' branch of the
-https://git-wip-us.apache.org/repos/asf/qpid-site.git repo is
+committed under the `content/` directory on the `asf-site` branch of
+the https://git-wip-us.apache.org/repos/asf/qpid-site.git repo is
automatically propagated to the live site. `make publish` renders to
this same `content/` directory.
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org
[7/8] qpid-site git commit: QPID-8154: Add missing images to the
Dispatch user guide; regen the master doc snapshot
Posted by jr...@apache.org.
QPID-8154: Add missing images to the Dispatch user guide; regen the master doc snapshot
Project: http://git-wip-us.apache.org/repos/asf/qpid-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-site/commit/b64809eb
Tree: http://git-wip-us.apache.org/repos/asf/qpid-site/tree/b64809eb
Diff: http://git-wip-us.apache.org/repos/asf/qpid-site/diff/b64809eb
Branch: refs/heads/asf-site
Commit: b64809ebe1a1f466bb5ef2071627bd182abf3dfa
Parents: bb2a2ca
Author: Justin Ross <jr...@apache.org>
Authored: Sat Apr 28 07:06:50 2018 -0700
Committer: Justin Ross <jr...@apache.org>
Committed: Sat Apr 28 07:06:50 2018 -0700
----------------------------------------------------------------------
content/deferred.css | 2 +-
.../releases/qpid-dispatch-master/index.html | 2 +-
.../man/qdrouterd.conf.html | 488 +-
.../qpid-dispatch-master/man/qdstat.html | 8 +
.../user-guide/images/01-peer-to-peer.png | Bin 0 -> 20101 bytes
.../user-guide/images/balanced-routing.png | Bin 0 -> 43261 bytes
.../user-guide/images/brokered-messaging.png | Bin 0 -> 50206 bytes
.../user-guide/images/closest-routing.png | Bin 0 -> 39803 bytes
.../user-guide/images/console1.png | Bin 0 -> 40412 bytes
.../user-guide/images/console_charts.png | Bin 0 -> 70070 bytes
.../user-guide/images/console_entity.png | Bin 0 -> 69319 bytes
.../user-guide/images/console_login.png | Bin 0 -> 39915 bytes
.../user-guide/images/console_overview.png | Bin 0 -> 87960 bytes
.../user-guide/images/console_schema.png | Bin 0 -> 68025 bytes
.../user-guide/images/console_topology.png | Bin 0 -> 67338 bytes
.../user-guide/images/link-routing.png | Bin 0 -> 46968 bytes
.../user-guide/images/message-routing.png | Bin 0 -> 35861 bytes
.../user-guide/images/multicast-routing.png | Bin 0 -> 44923 bytes
.../user-guide/images/path-redundancy-01.png | Bin 0 -> 47995 bytes
.../user-guide/images/path-redundancy-02.png | Bin 0 -> 42131 bytes
.../path-redundancy-temp-decoupling-01.png | Bin 0 -> 47766 bytes
.../path-redundancy-temp-decoupling-02.png | Bin 0 -> 49105 bytes
.../user-guide/images/sharded-queue-01.png | Bin 0 -> 28383 bytes
.../user-guide/images/sharded-queue-02.png | Bin 0 -> 62233 bytes
.../qpid-dispatch-master/user-guide/index.html | 4503 ++++++++----------
input/releases/qpid-dispatch-master/index.md | 2 +-
.../man/qdrouterd.conf.html.in | 488 +-
.../qpid-dispatch-master/man/qdstat.html.in | 8 +
.../user-guide/images/01-peer-to-peer.png | Bin 0 -> 20101 bytes
.../user-guide/images/balanced-routing.png | Bin 0 -> 43261 bytes
.../user-guide/images/brokered-messaging.png | Bin 0 -> 50206 bytes
.../user-guide/images/closest-routing.png | Bin 0 -> 39803 bytes
.../user-guide/images/console1.png | Bin 0 -> 40412 bytes
.../user-guide/images/console_charts.png | Bin 0 -> 70070 bytes
.../user-guide/images/console_entity.png | Bin 0 -> 69319 bytes
.../user-guide/images/console_login.png | Bin 0 -> 39915 bytes
.../user-guide/images/console_overview.png | Bin 0 -> 87960 bytes
.../user-guide/images/console_schema.png | Bin 0 -> 68025 bytes
.../user-guide/images/console_topology.png | Bin 0 -> 67338 bytes
.../user-guide/images/link-routing.png | Bin 0 -> 46968 bytes
.../user-guide/images/message-routing.png | Bin 0 -> 35861 bytes
.../user-guide/images/multicast-routing.png | Bin 0 -> 44923 bytes
.../user-guide/images/path-redundancy-01.png | Bin 0 -> 47995 bytes
.../user-guide/images/path-redundancy-02.png | Bin 0 -> 42131 bytes
.../path-redundancy-temp-decoupling-01.png | Bin 0 -> 47766 bytes
.../path-redundancy-temp-decoupling-02.png | Bin 0 -> 49105 bytes
.../user-guide/images/sharded-queue-01.png | Bin 0 -> 28383 bytes
.../user-guide/images/sharded-queue-02.png | Bin 0 -> 62233 bytes
.../user-guide/index.html.in | 4503 ++++++++----------
scripts/gen-dispatch-release-docs | 5 +-
50 files changed, 5041 insertions(+), 4968 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/content/deferred.css
----------------------------------------------------------------------
diff --git a/content/deferred.css b/content/deferred.css
index 586435c..8260174 100644
--- a/content/deferred.css
+++ b/content/deferred.css
@@ -385,7 +385,7 @@ div.sect1, div.sect2, div.paragraph, div.listingblock, div.ulist, div.tableblock
margin-bottom: 1em;
}
-div.ulist > ul > li > p {
+div.ulist > ul > li > *:last-child {
margin-bottom: 0;
}
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/content/releases/qpid-dispatch-master/index.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-dispatch-master/index.html b/content/releases/qpid-dispatch-master/index.html
index d818280..5906133 100644
--- a/content/releases/qpid-dispatch-master/index.html
+++ b/content/releases/qpid-dispatch-master/index.html
@@ -124,7 +124,7 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
smoother experience, see the <a href="/releases/qpid-dispatch-1.0.1/index.html">current stable
release</a>.</p>
-<p>This content was generated at 11:21 on Tuesday, 28 November 2017.</p>
+<p>This content was generated at 07:00 on Saturday, 28 April 2018.</p>
</div>
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/content/releases/qpid-dispatch-master/man/qdrouterd.conf.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-dispatch-master/man/qdrouterd.conf.html b/content/releases/qpid-dispatch-master/man/qdrouterd.conf.html
index aa4dc83..b936f76 100644
--- a/content/releases/qpid-dispatch-master/man/qdrouterd.conf.html
+++ b/content/releases/qpid-dispatch-master/man/qdrouterd.conf.html
@@ -170,9 +170,9 @@ attribute of <em>sslProfile</em> sections.</p></div>
<div class="content">
<pre><code>sslProfile {
name: my-ssl
- certDb: ca-certificate-1.pem
+ caCertFile: ca-certificate-1.pem
certFile: server-certificate-1.pem
- keyFile: server-private-key.pem
+ privateKeyFile: server-private-key.pem
}
listener {
@@ -208,7 +208,7 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>helloInterval</em> (integer, default=<em>1</em>)
+<em>helloIntervalSeconds</em> (integer, default=<em>1</em>)
</dt>
<dd>
<p>
@@ -216,7 +216,7 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>helloMaxAge</em> (integer, default=<em>3</em>)
+<em>helloMaxAgeSeconds</em> (integer, default=<em>3</em>)
</dt>
<dd>
<p>
@@ -224,7 +224,7 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>raInterval</em> (integer, default=<em>30</em>)
+<em>raIntervalSeconds</em> (integer, default=<em>30</em>)
</dt>
<dd>
<p>
@@ -232,7 +232,7 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>raIntervalFlux</em> (integer, default=<em>4</em>)
+<em>raIntervalFluxSeconds</em> (integer, default=<em>4</em>)
</dt>
<dd>
<p>
@@ -240,7 +240,7 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>remoteLsMaxAge</em> (integer, default=<em>60</em>)
+<em>remoteLsMaxAgeSeconds</em> (integer, default=<em>60</em>)
</dt>
<dd>
<p>
@@ -256,15 +256,15 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>debugDump</em> (path)
+<em>debugDumpFile</em> (path)
</dt>
<dd>
<p>
- A file to dump debugging information that can’t be logged normally.
+ The absolute path to the location for the debug dump file. The router writes debug-level information to this file if the logger is not available.
</p>
</dd>
<dt class="hdlist1">
-<em>saslConfigPath</em> (path)
+<em>saslConfigDir</em> (path)
</dt>
<dd>
<p>
@@ -280,11 +280,19 @@ listener {
</p>
</dd>
<dt class="hdlist1">
+<em>allowResumableLinkRoute</em> (boolean, default=<em>True</em>)
+</dt>
+<dd>
+<p>
+ Whether links can be routed where timeout is non-zero or expiry-policy is not link-detach
+</p>
+</dd>
+<dt class="hdlist1">
<em>allowUnsettledMulticast</em> (boolean)
</dt>
<dd>
<p>
- If true, allow senders to send unsettled deliveries to multicast addresses. These deliveries shall be settled by the ingress router. If false, unsettled deliveries to multicast addresses shall be rejected.
+ (DEPRECATED) If true, allow senders to send unsettled deliveries to multicast addresses. These deliveries shall be settled by the ingress router. If false, unsettled deliveries to multicast addresses shall be rejected.
</p>
</dd>
<dt class="hdlist1">
@@ -295,6 +303,62 @@ listener {
Default forwarding treatment for any address without a specified treatment. multicast - one copy of each message delivered to all subscribers; closest - messages delivered to only the closest subscriber; balanced - messages delivered to one subscriber with load balanced across subscribers; unavailable - this address is unavailable, link attaches to an address of unavilable distribution will be rejected.
</p>
</dd>
+<dt class="hdlist1">
+<em>helloInterval</em> (integer, default=<em>1</em>)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) Interval in seconds between HELLO messages sent to neighbor routers. This attribute has been deprecated. Use helloIntervalSeconds instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>helloMaxAge</em> (integer, default=<em>3</em>)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) Time in seconds after which a neighbor is declared lost if no HELLO is received. This attribute has been deprecated. Use helloMaxAgeSeconds instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>raInterval</em> (integer, default=<em>30</em>)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) Interval in seconds between Router-Advertisements sent to all routers in a stable network. This attribute has been deprecated. Use raIntervalSeconds instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>raIntervalFlux</em> (integer, default=<em>4</em>)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) Interval in seconds between Router-Advertisements sent to all routers during topology fluctuations. This attribute has been deprecated. Use raIntervalFluxSeconds instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>remoteLsMaxAge</em> (integer, default=<em>60</em>)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) Time in seconds after which link state is declared stale if no RA is received. This attribute has been deprecated. Use remoteLsMaxAgeSeconds instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>debugDump</em> (path)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) The absolute path to the location for the debug dump file. The router writes debug-level information to this file if the logger is not available. This attribute has been deprecated. Use debugDumpFile instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>saslConfigPath</em> (path)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) Absolute path to the SASL configuration file. This attribute has been deprecated. Use saslConfigDir instead.
+</p>
+</dd>
</dl></div>
</div>
<div class="sect2">
@@ -310,7 +374,15 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>certDb</em> (path)
+<em>protocols</em> (string)
+</dt>
+<dd>
+<p>
+ The TLS protocols that this sslProfile can use. You can specify a list of one or more of TLSv1, TLSv1.1, or TLSv1.2. To specify multiple protocols, separate the protocols with a space. For example, to permit the sslProfile to use TLS v1.1 and TLS v1.2 only, you would set the value to TLSv1.1 TLSv1.2. If you do not specify a value, the sslProfile uses the TLS protocol specified by the system-wide configuration.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>caCertFile</em> (path)
</dt>
<dd>
<p>
@@ -326,7 +398,7 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>keyFile</em> (path)
+<em>privateKeyFile</em> (path)
</dt>
<dd>
<p>
@@ -338,7 +410,7 @@ listener {
</dt>
<dd>
<p>
- If the above private key is password protected, this is the absolute path to a file containing the password that unlocks the certificate key.
+ If the above private key is password protected, this is the absolute path to a file containing the password that unlocks the certificate key. This file should be permission protected to limit access
</p>
</dd>
<dt class="hdlist1">
@@ -346,7 +418,7 @@ listener {
</dt>
<dd>
<p>
- An alternative to storing the password in a file referenced by passwordFile is to supply the password right here in the configuration file. This takes precedence over the passwordFile if both are specified.
+ (DEPRECATED) An alternative to storing the password in a file referenced by passwordFile is to supply the password right here in the configuration file. This takes precedence over the passwordFile if both are specified. This attribute has been deprecated because it is unsafe to store plain text passwords in config files. Use the passwordFile instead
</p>
</dd>
<dt class="hdlist1">
@@ -358,13 +430,37 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>displayNameFile</em> (string)
+<em>uidNameMappingFile</em> (string)
</dt>
<dd>
<p>
The absolute path to the file containing the unique id to display name mapping
</p>
</dd>
+<dt class="hdlist1">
+<em>certDb</em> (path)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) The absolute path to the database that contains the public certificates of trusted certificate authorities (CA). This attribute has been deprecated. Use caCertFile instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>keyFile</em> (path)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) The absolute path to the file containing the PEM-formatted private key for the above certificate. This attribute has been deprecated. Use privateKeyFile instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>displayNameFile</em> (string)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) The absolute path to the file containing the unique id to display name mapping This attribute has been deprecated. Use uidNameMappingFile instead.
+</p>
+</dd>
</dl></div>
</div>
<div class="sect2">
@@ -372,15 +468,31 @@ listener {
<div class="paragraph"><p>EXPERIMENTAL. Attributes for setting SASL plugin.</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
-<em>authService</em> (string, required)
+<em>authService</em> (string)
</dt>
<dd>
<p>
- Address of a service to delegate authentication to.
+ (DEPRECATED) Address of a service to delegate authentication to. This attribute has been deprecated. Use the host and port attributes instead.
</p>
</dd>
<dt class="hdlist1">
-<em>saslInitHostname</em> (string)
+<em>host</em> (string)
+</dt>
+<dd>
+<p>
+ A host name, IPV4 or IPV6 literal, of the service to delegate to.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>port</em> (string, default=<em>amqp</em>)
+</dt>
+<dd>
+<p>
+ Port number of the service delegated host.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>realm</em> (string)
</dt>
<dd>
<p>
@@ -388,13 +500,29 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>authSslProfile</em> (string)
+<em>sslProfile</em> (string)
</dt>
<dd>
<p>
Name of the sslProfile to use for the authentication service.
</p>
</dd>
+<dt class="hdlist1">
+<em>saslInitHostname</em> (string)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) Value to set for hostname field on sasl-init This attribute has been deprecated. Use realm instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>authSslProfile</em> (string)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) Name of the sslProfile to use for the authentication service. This attribute has been deprecated. Use sslProfile instead.
+</p>
+</dd>
</dl></div>
</div>
<div class="sect2">
@@ -414,11 +542,11 @@ listener {
</dt>
<dd>
<p>
- Port number or symbolic service name.
+ Port number or symbolic service name. If <em>0</em>, the router shall assign an ephemeral port to the listener and log the port number with a log of the form <em>SERVER (notice) Listening on <host>:<assigned-port> (<listener-name>)</em>
</p>
</dd>
<dt class="hdlist1">
-<em>protocolFamily</em> (One of [<em>IPv4</em>, <em>IPv6</em>])
+<em>socketAddressFamily</em> (One of [<em>IPv4</em>, <em>IPv6</em>])
</dt>
<dd>
<p>
@@ -490,7 +618,7 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>trustedCerts</em> (path)
+<em>trustedCertsFile</em> (path)
</dt>
<dd>
<p>
@@ -562,7 +690,7 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>failoverList</em> (string)
+<em>failoverUrls</em> (string)
</dt>
<dd>
<p>
@@ -578,7 +706,7 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>httpRoot</em> (path)
+<em>httpRootDir</em> (path)
</dt>
<dd>
<p>
@@ -586,13 +714,53 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>logMessage</em> (string, default=<em>none</em>)
+<em>messageLoggingComponents</em> (string, default=<em>none</em>)
</dt>
<dd>
<p>
A comma separated list that indicates which components of the message should be logged. Defaults to <em>none</em> (log nothing). If you want all properties and application properties of the message logged use <em>all</em>. Specific components of the message can be logged by indicating the components via a comma separated list. The components are message-id, user-id, to, subject, reply-to, correlation-id, content-type, content-encoding, absolute-expiry-time, creation-time, group-id, group-sequence, reply-to-group-id, app-properties. The application-data part of the bare message will not be logged. No spaces are allowed
</p>
</dd>
+<dt class="hdlist1">
+<em>protocolFamily</em> (One of [<em>IPv4</em>, <em>IPv6</em>])
+</dt>
+<dd>
+<p>
+ (DEPRECATED) [<em>IPv4</em>, <em>IPv6</em>] IPv4: Internet Protocol version 4; IPv6: Internet Protocol version 6. If not specified, the protocol family will be automatically determined from the address. This attribute has been deprecated. Use socketAddressFamily instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>trustedCerts</em> (path)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) This optional setting can be used to reduce the set of available CAs for client authentication. If used, this setting must provide the absolute path to a PEM file that contains the trusted certificates. This attribute has been deprecated. Use trustedCertsFile instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>failoverList</em> (string)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) A comma-separated list of failover urls to be supplied to connected clients. Form: [(amqp|amqps|ws|wss)://]host_or_ip[:port] This attribute has been deprecated. Use failoverUrls instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>httpRoot</em> (path)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) Serve HTTP files from this directory, defaults to the installed stand-alone console directory This attribute has been deprecated. Use httpRootDir instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>logMessage</em> (string, default=<em>none</em>)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) A comma separated list that indicates which components of the message should be logged. Defaults to <em>none</em> (log nothing). If you want all properties and application properties of the message logged use <em>all</em>. Specific components of the message can be logged by indicating the components via a comma separated list. The components are message-id, user-id, to, subject, reply-to, correlation-id, content-type, content-encoding, absolute-expiry-time, creation-time, group-id, group-sequence, reply-to-group-id, app-properties. The application-data part of the bare message will not be logged. No spaces are allowed This attribute has been deprecated. Use messageLoggingComponents instead.
+</p>
+</dd>
</dl></div>
</div>
<div class="sect2">
@@ -712,7 +880,7 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>verifyHostName</em> (boolean, default=<em>True</em>)
+<em>verifyHostname</em> (boolean, default=<em>True</em>)
</dt>
<dd>
<p>
@@ -736,13 +904,29 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>logMessage</em> (string, default=<em>none</em>)
+<em>messageLoggingComponents</em> (string, default=<em>none</em>)
</dt>
<dd>
<p>
A comma separated list that indicates which components of the message should be logged (no spaces allowed between list components). Defaults to <em>none</em> (log nothing). If you want all properties and application properties of the message logged use <em>all</em>. Specific components of the message can be logged by indicating the components via a comma separated list. The components are message-id, user-id, to, subject, reply-to, correlation-id, content-type, content-encoding, absolute-expiry-time, creation-time, group-id, group-sequence, reply-to-group-id, app-properties. The application-data part of the bare message will not be logged. This log message is written to the MESSAGE logging module. In the <em>log</em> entity, set <em>module</em> property to MESSAGE or DEFAULT and <em>enable</em> to trace+ to see this log message
</p>
</dd>
+<dt class="hdlist1">
+<em>verifyHostName</em> (boolean, default=<em>True</em>)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) yes: Ensures that when initiating a connection (as a client) the host name in the URL to which this connector connects to matches the host name in the digital certificate that the peer sends back as part of the SSL connection; no: Does not perform host name verification This attribute has been deprecated. Use verifyHostname instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>logMessage</em> (string, default=<em>none</em>)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) A comma separated list that indicates which components of the message should be logged (no spaces allowed between list components). Defaults to <em>none</em> (log nothing). If you want all properties and application properties of the message logged use <em>all</em>. Specific components of the message can be logged by indicating the components via a comma separated list. The components are message-id, user-id, to, subject, reply-to, correlation-id, content-type, content-encoding, absolute-expiry-time, creation-time, group-id, group-sequence, reply-to-group-id, app-properties. The application-data part of the bare message will not be logged. This log message is written to the MESSAGE logging module. In the <em>log</em> entity, set <em>module</em> property to MESSAGE or DEFAULT and <em>enable</em> to trace+ to see this log message This attribute has been deprecated. Use messageLoggingComponents instead.
+</p>
+</dd>
</dl></div>
</div>
<div class="sect2">
@@ -766,7 +950,7 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>timestamp</em> (boolean)
+<em>includeTimestamp</em> (boolean)
</dt>
<dd>
<p>
@@ -774,7 +958,7 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>source</em> (boolean)
+<em>includeSource</em> (boolean)
</dt>
<dd>
<p>
@@ -782,13 +966,37 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>output</em> (string)
+<em>outputFile</em> (string)
</dt>
<dd>
<p>
Where to send log messages. Can be <em>stderr</em>, <em>stdout</em>, <em>syslog</em> or a file name.
</p>
</dd>
+<dt class="hdlist1">
+<em>timestamp</em> (boolean)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) Include timestamp in log messages. This attribute has been deprecated. Use includeTimestamp instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>source</em> (boolean)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) Include source file and line number in log messages. This attribute has been deprecated. Use includeSource instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>output</em> (string)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) Where to send log messages. Can be <em>stderr</em>, <em>stdout</em>, <em>syslog</em> or a file name. This attribute has been deprecated. Use outputFile instead.
+</p>
+</dd>
</dl></div>
</div>
<div class="sect2">
@@ -890,13 +1098,21 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>dir</em> (One of [<em>in</em>, <em>out</em>], required)
+<em>direction</em> (One of [<em>in</em>, <em>out</em>], required)
</dt>
<dd>
<p>
The permitted direction of links: <em>in</em> means client senders; <em>out</em> means client receivers
</p>
</dd>
+<dt class="hdlist1">
+<em>dir</em> (One of [<em>in</em>, <em>out</em>], required)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) The permitted direction of links: <em>in</em> means client senders; <em>out</em> means client receivers This attribute has been deprecated. Use direction instead.
+</p>
+</dd>
</dl></div>
</div>
<div class="sect2">
@@ -912,7 +1128,7 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>dir</em> (One of [<em>in</em>, <em>out</em>], required)
+<em>direction</em> (One of [<em>in</em>, <em>out</em>], required)
</dt>
<dd>
<p>
@@ -951,6 +1167,98 @@ listener {
If present, an alternate address of the node on the remote container. This is used if the node has a different address than the address used internally by the router to route deliveries.
</p>
</dd>
+<dt class="hdlist1">
+<em>dir</em> (One of [<em>in</em>, <em>out</em>], required)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) The direction of the link to be created. In means into the router, out means out of the router. This attribute has been deprecated. Use direction instead.
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_exchange">exchange</h3>
+<div class="paragraph"><p>[EXPERIMENTAL] Defines a topic exchange.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+<em>address</em> (string, required)
+</dt>
+<dd>
+<p>
+ The address of the exchange. Used by the message publisher as the target for sending messages.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>phase</em> (integer)
+</dt>
+<dd>
+<p>
+ The address phase for the exchange. Defaults to <em>0</em>.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>alternateAddress</em> (string)
+</dt>
+<dd>
+<p>
+ The address to forward the message to if no bindings are matched.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>alternatePhase</em> (integer)
+</dt>
+<dd>
+<p>
+ The address phase for the alternateAddress. Defaults to <em>0</em>.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>matchMethod</em> (One of [<em>amqp</em>, <em>mqtt</em>], default=<em>amqp</em>)
+</dt>
+<dd>
+<p>
+ Key matching algorithm used. <em>amqp</em> uses the legacy AMQP topic exchange wildcard match method as described in the pre-1.0 drafts. <em>mqtt</em> uses the MQTT topic filter wildcard match method.
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_binding">binding</h3>
+<div class="paragraph"><p>[EXPERIMENTAL] Defines a keyed next hop binding for a topic exchange. The subject field of the messages arriving at the exchange is compared against the binding’s key value using the exchange’s matchMethod. If the subject matches the key the message is forwarded to the nextHopAddress. The nextHopAddress overrides the message’s original destination.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+<em>exchangeName</em> (string, required)
+</dt>
+<dd>
+<p>
+ The name of the exchange to bind.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>bindingKey</em> (string)
+</dt>
+<dd>
+<p>
+ Pattern to compare against incoming message’s subject. The key is a string of zero or more tokens and wildcards. The format depends on the matchMethod configured for the exchange. For AMQP each token is delimited by the <em>.</em> character and wild-card tokens <em>*</em> matches a single token and <em></em> matches zero or more tokens. For MQTT each token is delimited by the <em>/</em> character and wildcard tokens <em>+</em> matches a single token and <em></em> matches zero or more tokens at the end of the topic. If a key is not provided the binding will match all messages arriving at the exchange (fanout behavior).
+</p>
+</dd>
+<dt class="hdlist1">
+<em>nextHopAddress</em> (string, required)
+</dt>
+<dd>
+<p>
+ The address to forward the message to when the message’s topic string matches the binding key pattern. This address is used by message consumers as the source of incoming messages.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>nextHopPhase</em> (integer)
+</dt>
+<dd>
+<p>
+ The address phase used when forwarding messages that match this binding.
+</p>
+</dd>
</dl></div>
</div>
<div class="sect2">
@@ -1008,7 +1316,7 @@ listener {
</dt>
<dd>
<p>
- Global maximum number of concurrent client connections allowed. This limit is always enforced even if no other policy settings have been defined.
+ The maximum number of concurrent client connections allowed for this router. This limit is always enforced, even if no other policy settings have been defined. The limit is applied to all incoming connections regardless of remote host, authenticated user, or targeted vhost.
</p>
</dd>
<dt class="hdlist1">
@@ -1016,7 +1324,7 @@ listener {
</dt>
<dd>
<p>
- Enable vhost policy user groups, connection denial, and resource limit enforcement
+ Enables the router to enforce the connection denials and resource limits defined in the configured vhost policies.
</p>
</dd>
<dt class="hdlist1">
@@ -1024,7 +1332,7 @@ listener {
</dt>
<dd>
<p>
- Absolute path to a directory that holds vhost definition .json files. All vhost definitions in all .json files in this directory are processed.
+ The absolute path to a directory that holds vhost policy definition files in JSON format (*.json). The router processes all of the vhost policies in each JSON file that is in this directory.
</p>
</dd>
<dt class="hdlist1">
@@ -1032,7 +1340,7 @@ listener {
</dt>
<dd>
<p>
- Vhost rule set name to use for connections with a vhost that is otherwise not defined. Default vhost processing may be disabled either by erasing the definition of defaultVhost or by not defining a vhost object named <em>$default</em>.
+ The name of the default vhost policy, which is applied to any connection for which a vhost policy has not been configured. If <em>defaultVhost</em> is not defined, then default vhost processing is disabled.
</p>
</dd>
</dl></div>
@@ -1042,11 +1350,11 @@ listener {
<div class="paragraph"><p>AMQP virtual host policy definition of users, user groups, allowed remote hosts, and AMQP restrictions.</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
-<em>id</em> (string, required)
+<em>hostname</em> (string, required)
</dt>
<dd>
<p>
- The vhost name.
+ The hostname of the vhost. This vhost policy will be applied to any client connection that is directed to this hostname.
</p>
</dd>
<dt class="hdlist1">
@@ -1054,7 +1362,7 @@ listener {
</dt>
<dd>
<p>
- Maximum number of concurrent client connections allowed.
+ The global maximum number of concurrent client connections allowed for this vhost.
</p>
</dd>
<dt class="hdlist1">
@@ -1062,7 +1370,7 @@ listener {
</dt>
<dd>
<p>
- Maximum number of concurrent client connections allowed for any single user.
+ The maximum number of concurrent client connections allowed for any user.
</p>
</dd>
<dt class="hdlist1">
@@ -1070,7 +1378,7 @@ listener {
</dt>
<dd>
<p>
- Maximum number of concurrent client connections allowed for any remote host.
+ The maximum number of concurrent client connections allowed for any remote host (the host from which the client is connecting).
</p>
</dd>
<dt class="hdlist1">
@@ -1078,7 +1386,7 @@ listener {
</dt>
<dd>
<p>
- Unrestricted users, those who are not members of a defined user group, are allowed to connect to this application. Unrestricted users are assigned to the <em>default</em> user group and receive <em>default</em> settings.
+ Whether unknown users (users who are not members of a defined user group) are allowed to connect to the vhost. Unknown users are assigned to the <em>$default</em> user group and receive <em>$default</em> settings.
</p>
</dd>
<dt class="hdlist1">
@@ -1086,7 +1394,99 @@ listener {
</dt>
<dd>
<p>
- A map where each key is a user group name and the value is a map of the corresponding settings for that group.
+ A map where each key is a vhost name and each value is a map of the settings for users of that vhost.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>id</em> (string, required)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) The hostname of the vhost. This vhost policy will be applied to any client connection that is directed to this hostname. This attribute has been deprecated. Use hostname instead.
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_vhostusergroupsettings">vhostUserGroupSettings</h3>
+<div class="paragraph"><p>Policy settings for users connecting to a vhost. Configuration files including this section must use .json format.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+<em>maxFrameSize</em> (integer, default=<em>16384</em>)
+</dt>
+<dd>
+<p>
+ The largest frame, in bytes, that may be sent on this connection. Non-zero policy values overwrite values specified for a listener object (AMQP Open, max-frame-size).
+</p>
+</dd>
+<dt class="hdlist1">
+<em>maxSessionWindow</em> (integer, default=<em>1638400</em>)
+</dt>
+<dd>
+<p>
+ The incoming capacity for new AMQP sessions, measured in octets. Non-zero policy values overwrite values specified for a listener object (AMQP Begin, incoming-window).
+</p>
+</dd>
+<dt class="hdlist1">
+<em>maxSessions</em> (integer, default=<em>32768</em>)
+</dt>
+<dd>
+<p>
+ The maximum number of sessions that may be created on this connection. Non-zero policy values overwrite values specified for a listener object (AMQP Open, channel-max).
+</p>
+</dd>
+<dt class="hdlist1">
+<em>maxSenders</em> (integer, default=<em>2147483647</em>)
+</dt>
+<dd>
+<p>
+ The maximum number of sending links that may be created on this connection. A value of <em>0</em> disables all sender links.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>maxReceivers</em> (integer, default=<em>2147483647</em>)
+</dt>
+<dd>
+<p>
+ The maximum number of receiving links that may be created on this connection. A value of <em>0</em> disables all receiver links.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>allowDynamicSource</em> (boolean)
+</dt>
+<dd>
+<p>
+ Whether this connection is allowed to create dynamic receiving links (links to resources that do not exist on the peer). A value of <em>true</em> means that users are able to automatically create resources on the peer system.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>allowAnonymousSender</em> (boolean)
+</dt>
+<dd>
+<p>
+ Whether this connection is allowed to create sending links if the sender does not provide a target address. By prohibiting anonymous senders, the router only needs to verify once, when the link is created, that the sender is permitted to send messages to the target address. The router does not need to verify each message that is sent on the link. A value of <em>true</em> means that users may send messages to any address. Allowing anonymous senders can also decrease performance: if the sender does not specify a target address, then the router must parse each message to determine how to route it.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>allowUserIdProxy</em> (boolean)
+</dt>
+<dd>
+<p>
+ Whether this connection is allowed to send messages with a user ID that is different than the connection’s authenticated user name.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>sources</em> (string)
+</dt>
+<dd>
+<p>
+</p>
+</dd>
+<dt class="hdlist1">
+<em>targets</em> (string)
+</dt>
+<dd>
+<p>
</p>
</dd>
</dl></div>
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/content/releases/qpid-dispatch-master/man/qdstat.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-dispatch-master/man/qdstat.html b/content/releases/qpid-dispatch-master/man/qdstat.html
index 73315a8..547af1e 100644
--- a/content/releases/qpid-dispatch-master/man/qdstat.html
+++ b/content/releases/qpid-dispatch-master/man/qdstat.html
@@ -450,6 +450,14 @@ The number of pre-settled deliveries that transited this link.
</p>
</dd>
<dt class="hdlist1">
+psdrop
+</dt>
+<dd>
+<p>
+The number of pre-settled deliveries that were dropped due to congestion.
+</p>
+</dd>
+<dt class="hdlist1">
acc
</dt>
<dd>
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/content/releases/qpid-dispatch-master/user-guide/images/01-peer-to-peer.png
----------------------------------------------------------------------
diff --git a/content/releases/qpid-dispatch-master/user-guide/images/01-peer-to-peer.png b/content/releases/qpid-dispatch-master/user-guide/images/01-peer-to-peer.png
new file mode 100755
index 0000000..5c834aa
Binary files /dev/null and b/content/releases/qpid-dispatch-master/user-guide/images/01-peer-to-peer.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/content/releases/qpid-dispatch-master/user-guide/images/balanced-routing.png
----------------------------------------------------------------------
diff --git a/content/releases/qpid-dispatch-master/user-guide/images/balanced-routing.png b/content/releases/qpid-dispatch-master/user-guide/images/balanced-routing.png
new file mode 100755
index 0000000..fedcdbf
Binary files /dev/null and b/content/releases/qpid-dispatch-master/user-guide/images/balanced-routing.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/content/releases/qpid-dispatch-master/user-guide/images/brokered-messaging.png
----------------------------------------------------------------------
diff --git a/content/releases/qpid-dispatch-master/user-guide/images/brokered-messaging.png b/content/releases/qpid-dispatch-master/user-guide/images/brokered-messaging.png
new file mode 100755
index 0000000..ae129d4
Binary files /dev/null and b/content/releases/qpid-dispatch-master/user-guide/images/brokered-messaging.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/content/releases/qpid-dispatch-master/user-guide/images/closest-routing.png
----------------------------------------------------------------------
diff --git a/content/releases/qpid-dispatch-master/user-guide/images/closest-routing.png b/content/releases/qpid-dispatch-master/user-guide/images/closest-routing.png
new file mode 100755
index 0000000..ba3f0a5
Binary files /dev/null and b/content/releases/qpid-dispatch-master/user-guide/images/closest-routing.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/content/releases/qpid-dispatch-master/user-guide/images/console1.png
----------------------------------------------------------------------
diff --git a/content/releases/qpid-dispatch-master/user-guide/images/console1.png b/content/releases/qpid-dispatch-master/user-guide/images/console1.png
new file mode 100755
index 0000000..f131884
Binary files /dev/null and b/content/releases/qpid-dispatch-master/user-guide/images/console1.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/content/releases/qpid-dispatch-master/user-guide/images/console_charts.png
----------------------------------------------------------------------
diff --git a/content/releases/qpid-dispatch-master/user-guide/images/console_charts.png b/content/releases/qpid-dispatch-master/user-guide/images/console_charts.png
new file mode 100755
index 0000000..169c2ca
Binary files /dev/null and b/content/releases/qpid-dispatch-master/user-guide/images/console_charts.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/content/releases/qpid-dispatch-master/user-guide/images/console_entity.png
----------------------------------------------------------------------
diff --git a/content/releases/qpid-dispatch-master/user-guide/images/console_entity.png b/content/releases/qpid-dispatch-master/user-guide/images/console_entity.png
new file mode 100755
index 0000000..130c7e7
Binary files /dev/null and b/content/releases/qpid-dispatch-master/user-guide/images/console_entity.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/content/releases/qpid-dispatch-master/user-guide/images/console_login.png
----------------------------------------------------------------------
diff --git a/content/releases/qpid-dispatch-master/user-guide/images/console_login.png b/content/releases/qpid-dispatch-master/user-guide/images/console_login.png
new file mode 100755
index 0000000..63e22c6
Binary files /dev/null and b/content/releases/qpid-dispatch-master/user-guide/images/console_login.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/content/releases/qpid-dispatch-master/user-guide/images/console_overview.png
----------------------------------------------------------------------
diff --git a/content/releases/qpid-dispatch-master/user-guide/images/console_overview.png b/content/releases/qpid-dispatch-master/user-guide/images/console_overview.png
new file mode 100755
index 0000000..af25f36
Binary files /dev/null and b/content/releases/qpid-dispatch-master/user-guide/images/console_overview.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/content/releases/qpid-dispatch-master/user-guide/images/console_schema.png
----------------------------------------------------------------------
diff --git a/content/releases/qpid-dispatch-master/user-guide/images/console_schema.png b/content/releases/qpid-dispatch-master/user-guide/images/console_schema.png
new file mode 100755
index 0000000..ba56c7b
Binary files /dev/null and b/content/releases/qpid-dispatch-master/user-guide/images/console_schema.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/content/releases/qpid-dispatch-master/user-guide/images/console_topology.png
----------------------------------------------------------------------
diff --git a/content/releases/qpid-dispatch-master/user-guide/images/console_topology.png b/content/releases/qpid-dispatch-master/user-guide/images/console_topology.png
new file mode 100755
index 0000000..ae4b22a
Binary files /dev/null and b/content/releases/qpid-dispatch-master/user-guide/images/console_topology.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/content/releases/qpid-dispatch-master/user-guide/images/link-routing.png
----------------------------------------------------------------------
diff --git a/content/releases/qpid-dispatch-master/user-guide/images/link-routing.png b/content/releases/qpid-dispatch-master/user-guide/images/link-routing.png
new file mode 100755
index 0000000..0c1b9e4
Binary files /dev/null and b/content/releases/qpid-dispatch-master/user-guide/images/link-routing.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/content/releases/qpid-dispatch-master/user-guide/images/message-routing.png
----------------------------------------------------------------------
diff --git a/content/releases/qpid-dispatch-master/user-guide/images/message-routing.png b/content/releases/qpid-dispatch-master/user-guide/images/message-routing.png
new file mode 100755
index 0000000..42f4638
Binary files /dev/null and b/content/releases/qpid-dispatch-master/user-guide/images/message-routing.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/content/releases/qpid-dispatch-master/user-guide/images/multicast-routing.png
----------------------------------------------------------------------
diff --git a/content/releases/qpid-dispatch-master/user-guide/images/multicast-routing.png b/content/releases/qpid-dispatch-master/user-guide/images/multicast-routing.png
new file mode 100755
index 0000000..d4548a6
Binary files /dev/null and b/content/releases/qpid-dispatch-master/user-guide/images/multicast-routing.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/content/releases/qpid-dispatch-master/user-guide/images/path-redundancy-01.png
----------------------------------------------------------------------
diff --git a/content/releases/qpid-dispatch-master/user-guide/images/path-redundancy-01.png b/content/releases/qpid-dispatch-master/user-guide/images/path-redundancy-01.png
new file mode 100755
index 0000000..ba8f10d
Binary files /dev/null and b/content/releases/qpid-dispatch-master/user-guide/images/path-redundancy-01.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/content/releases/qpid-dispatch-master/user-guide/images/path-redundancy-02.png
----------------------------------------------------------------------
diff --git a/content/releases/qpid-dispatch-master/user-guide/images/path-redundancy-02.png b/content/releases/qpid-dispatch-master/user-guide/images/path-redundancy-02.png
new file mode 100755
index 0000000..6d4a1f5
Binary files /dev/null and b/content/releases/qpid-dispatch-master/user-guide/images/path-redundancy-02.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/content/releases/qpid-dispatch-master/user-guide/images/path-redundancy-temp-decoupling-01.png
----------------------------------------------------------------------
diff --git a/content/releases/qpid-dispatch-master/user-guide/images/path-redundancy-temp-decoupling-01.png b/content/releases/qpid-dispatch-master/user-guide/images/path-redundancy-temp-decoupling-01.png
new file mode 100755
index 0000000..c3c6631
Binary files /dev/null and b/content/releases/qpid-dispatch-master/user-guide/images/path-redundancy-temp-decoupling-01.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/content/releases/qpid-dispatch-master/user-guide/images/path-redundancy-temp-decoupling-02.png
----------------------------------------------------------------------
diff --git a/content/releases/qpid-dispatch-master/user-guide/images/path-redundancy-temp-decoupling-02.png b/content/releases/qpid-dispatch-master/user-guide/images/path-redundancy-temp-decoupling-02.png
new file mode 100755
index 0000000..ecab8b1
Binary files /dev/null and b/content/releases/qpid-dispatch-master/user-guide/images/path-redundancy-temp-decoupling-02.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/content/releases/qpid-dispatch-master/user-guide/images/sharded-queue-01.png
----------------------------------------------------------------------
diff --git a/content/releases/qpid-dispatch-master/user-guide/images/sharded-queue-01.png b/content/releases/qpid-dispatch-master/user-guide/images/sharded-queue-01.png
new file mode 100755
index 0000000..ab25be0
Binary files /dev/null and b/content/releases/qpid-dispatch-master/user-guide/images/sharded-queue-01.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/content/releases/qpid-dispatch-master/user-guide/images/sharded-queue-02.png
----------------------------------------------------------------------
diff --git a/content/releases/qpid-dispatch-master/user-guide/images/sharded-queue-02.png b/content/releases/qpid-dispatch-master/user-guide/images/sharded-queue-02.png
new file mode 100755
index 0000000..7e73e6d
Binary files /dev/null and b/content/releases/qpid-dispatch-master/user-guide/images/sharded-queue-02.png differ
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org
[2/8] qpid-site git commit: QPID-8015: Correct style scope
Posted by jr...@apache.org.
QPID-8015: Correct style scope
Project: http://git-wip-us.apache.org/repos/asf/qpid-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-site/commit/b02dd8a7
Tree: http://git-wip-us.apache.org/repos/asf/qpid-site/tree/b02dd8a7
Diff: http://git-wip-us.apache.org/repos/asf/qpid-site/diff/b02dd8a7
Branch: refs/heads/asf-site
Commit: b02dd8a79281ee441a43ae99094cfc335b4cc4e1
Parents: 3d0bbfb
Author: Justin Ross <jr...@apache.org>
Authored: Tue Nov 28 12:33:06 2017 -0800
Committer: Justin Ross <jr...@apache.org>
Committed: Thu Apr 26 17:18:09 2018 -0700
----------------------------------------------------------------------
input/deferred.css | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b02dd8a7/input/deferred.css
----------------------------------------------------------------------
diff --git a/input/deferred.css b/input/deferred.css
index 586435c..8260174 100644
--- a/input/deferred.css
+++ b/input/deferred.css
@@ -385,7 +385,7 @@ div.sect1, div.sect2, div.paragraph, div.listingblock, div.ulist, div.tableblock
margin-bottom: 1em;
}
-div.ulist > ul > li > p {
+div.ulist > ul > li > *:last-child {
margin-bottom: 0;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org
[4/8] qpid-site git commit: QPID-8154: Add missing images to the
Dispatch user guide; regen the master doc snapshot
Posted by jr...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/input/releases/qpid-dispatch-master/user-guide/index.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-dispatch-master/user-guide/index.html.in b/input/releases/qpid-dispatch-master/user-guide/index.html.in
index 1f1e40a..0d7b048 100644
--- a/input/releases/qpid-dispatch-master/user-guide/index.html.in
+++ b/input/releases/qpid-dispatch-master/user-guide/index.html.in
@@ -34,53 +34,56 @@
<li><a href="#security">2.5. Security</a></li>
</ul>
</li>
-<li><a href="#getting_started">3. Getting Started</a>
+<li><a href="#getting-started">3. Getting Started</a>
<ul class="sectlevel2">
-<li><a href="#starting_the_router">3.1. Starting the Router</a></li>
+<li><a href="#starting-the-router">3.1. Starting the Router</a></li>
<li><a href="#routing_messages_in_a_peer_to_peer_configuration">3.2. Routing Messages in a Peer-to-Peer Configuration</a>
<ul class="sectlevel3">
-<li><a href="#starting_the_receiver_client">3.2.1. Starting the Receiver Client</a></li>
-<li><a href="#sending_messages">3.2.2. Sending Messages</a></li>
+<li><a href="#starting-the-receiver-client">3.2.1. Starting the Receiver Client</a></li>
+<li><a href="#sending-messages">3.2.2. Sending Messages</a></li>
</ul>
</li>
</ul>
</li>
-<li><a href="#router_configuration">4. Configuration</a>
+<li><a href="#router-configuration">4. Configuration</a>
<ul class="sectlevel2">
<li><a href="#accessing_the_router_configuration_file">4.1. Accessing the Router Configuration File</a></li>
<li><a href="#how_the_router_configuration_file_is_structured">4.2. How the Router Configuration File is Structured</a></li>
-<li><a href="#methods_for_changing_router_configuration">4.3. Changing a Router’s Configuration</a>
+<li><a href="#methods-for-changing-router-configuration">4.3. Changing a Router’s Configuration</a>
<ul class="sectlevel3">
-<li><a href="#making_permanent_change_to_router_configuration">4.3.1. Making a Permanent Change to the Router’s Configuration</a></li>
-<li><a href="#changing_configuration_for_running_router">4.3.2. Changing the Configuration for a Running Router</a></li>
+<li><a href="#making-permanent-change-to-router-configuration">4.3.1. Making a Permanent Change to the Router’s Configuration</a></li>
+<li><a href="#changing-configuration-for-running-router">4.3.2. Changing the Configuration for a Running Router</a></li>
</ul>
</li>
<li><a href="#default_configuration_settings">4.4. Default Configuration Settings</a></li>
<li><a href="#setting_essential_configuration_properties">4.5. Setting Essential Configuration Properties</a></li>
</ul>
</li>
-<li><a href="#router_network_connections">5. Network Connections</a>
+<li><a href="#router-network-connections">5. Network Connections</a>
<ul class="sectlevel2">
-<li><a href="#adding_incoming_connections">5.1. Listening for Incoming Connections</a></li>
-<li><a href="#adding_outgoing_connections">5.2. Adding Outgoing Connections</a></li>
+<li><a href="#adding-incoming-connections">5.1. Listening for Incoming Connections</a></li>
+<li><a href="#adding-outgoing-connections">5.2. Adding Outgoing Connections</a></li>
</ul>
</li>
-<li><a href="#security_config">6. Security</a>
+<li><a href="#security-config">6. Security</a>
<ul class="sectlevel2">
-<li><a href="#setting_up_ssl_for_encryption_and_authentication">6.1. Setting Up SSL/TLS for Encryption and Authentication</a></li>
-<li><a href="#setting_up_sasl_for_authentication_and_payload_encryption">6.2. Setting Up SASL for Authentication and Payload Encryption</a></li>
-<li><a href="#securing_incoming_connections">6.3. Securing Incoming Connections</a>
+<li><a href="#authenticating_remote_peers">6.1. Authenticating Remote Peers</a>
<ul class="sectlevel3">
-<li><a href="#adding_ssl_encryption_to_incoming_connection">6.3.1. Adding SSL/TLS Encryption to an Incoming Connection</a></li>
-<li><a href="#adding_sasl_authentication_to_incoming_connection">6.3.2. Adding SASL Authentication to an Incoming Connection</a></li>
-<li><a href="#adding_ssl_client_authentication_to_incoming_connection">6.3.3. Adding SSL/TLS Client Authentication to an Incoming Connection</a></li>
-<li><a href="#adding_sasl_payload_encryption_to_incoming_connection">6.3.4. Adding SASL Payload Encryption to an Incoming Connection</a></li>
+<li><a href="#setting-up-ssl-for-encryption-and-authentication">6.1.1. Setting Up SSL/TLS for Encryption and Authentication</a></li>
+<li><a href="#setting-up-sasl-for-authentication-and-payload-encryption">6.1.2. Setting Up SASL for Authentication and Payload Encryption</a></li>
+<li><a href="#securing-incoming-connections">6.1.3. Securing Incoming Connections</a></li>
+<li><a href="#securing-outgoing-connections">6.1.4. Securing Outgoing Connections</a></li>
+<li><a href="#integrating-with-kerberos">6.1.5. Integrating with Kerberos</a></li>
</ul>
</li>
-<li><a href="#securing_outgoing_connections">6.4. Securing Outgoing Connections</a>
+<li><a href="#authorizing_access_to_messaging_resources">6.2. Authorizing Access to Messaging Resources</a>
<ul class="sectlevel3">
-<li><a href="#adding_ssl_authentication_to_outgoing_connection">6.4.1. Adding SSL/TLS Client Authentication to an Outgoing Connection</a></li>
-<li><a href="#adding_sasl_authentication_to_outgoing_connection">6.4.2. Adding SASL Authentication to an Outgoing Connection</a></li>
+<li><a href="#types_of_policies">6.2.1. Types of Policies</a></li>
+<li><a href="#how_dispatch_router_applies_policies">6.2.2. How Dispatch Router Applies Policies</a></li>
+<li><a href="#configuring_global_policies">6.2.3. Configuring Global Policies</a></li>
+<li><a href="#configuring_vhost_policies">6.2.4. Configuring Vhost Policies</a></li>
+<li><a href="#example_configuring_a_vhost_policy">6.2.5. Example: Configuring a Vhost Policy</a></li>
+<li><a href="#example_using_a_vhost_policy_to_limit_memory_consumption_advanced">6.2.6. Example: Using a Vhost Policy to Limit Memory Consumption (Advanced)</a></li>
</ul>
</li>
</ul>
@@ -96,10 +99,10 @@
<li><a href="#configuring_message_routing">7.2. Configuring Message Routing</a>
<ul class="sectlevel3">
<li><a href="#addresses_2">7.2.1. Addresses</a></li>
-<li><a href="#routing_patterns_overview">7.2.2. Routing Patterns</a></li>
+<li><a href="#routing-patterns-overview">7.2.2. Routing Patterns</a></li>
<li><a href="#message_settlement_2">7.2.3. Message Settlement</a></li>
-<li><a href="#routing_messages_between_clients">7.2.4. Routing Messages Between Clients</a></li>
-<li><a href="#routing_messages_through_broker">7.2.5. Routing Messages Through a Broker Queue</a></li>
+<li><a href="#routing-messages-between-clients">7.2.4. Routing Messages Between Clients</a></li>
+<li><a href="#routing-messages-through-broker">7.2.5. Routing Messages Through a Broker Queue</a></li>
<li><a href="#example_routing_messages_through_broker_queues">7.2.6. Example: Routing Messages Through Broker Queues</a></li>
</ul>
</li>
@@ -108,7 +111,7 @@
<li><a href="#link_route_addresses_2">7.3.1. Link Route Addresses</a></li>
<li><a href="#link_route_routing_patterns">7.3.2. Link Route Routing Patterns</a></li>
<li><a href="#link_route_flow_control">7.3.3. Link Route Flow Control</a></li>
-<li><a href="#creating_link_route">7.3.4. Creating a Link Route</a></li>
+<li><a href="#creating-link-route">7.3.4. Creating a Link Route</a></li>
<li><a href="#example_using_a_link_route_to_provide_client_isolation">7.3.5. Example: Using a Link Route to Provide Client Isolation</a></li>
</ul>
</li>
@@ -116,7 +119,7 @@
</li>
<li><a href="#logging">8. Logging</a>
<ul class="sectlevel2">
-<li><a href="#logging_modules_you_can_configure">8.1. Logging Modules</a>
+<li><a href="#logging-modules-you-can-configure">8.1. Logging Modules</a>
<ul class="sectlevel3">
<li><a href="#the_code_default_code_logging_module">8.1.1. The <code>DEFAULT</code> Logging Module</a></li>
<li><a href="#the_code_router_code_logging_module">8.1.2. The <code>ROUTER</code> Logging Module</a></li>
@@ -132,7 +135,7 @@
<li><a href="#the_code_policy_code_logging_module">8.1.12. The <code>POLICY</code> Logging Module</a></li>
</ul>
</li>
-<li><a href="#configure_default_logging">8.2. Configuring Logging</a></li>
+<li><a href="#configure-default-logging">8.2. Configuring Logging</a></li>
<li><a href="#viewing_log_entries">8.3. Viewing Log Entries</a>
<ul class="sectlevel3">
<li><a href="#viewing_log_entries_on_the_console">8.3.1. Viewing Log Entries on the Console</a></li>
@@ -141,112 +144,66 @@
</li>
</ul>
</li>
-<li><a href="#policy">9. Policy</a>
+<li><a href="#management">9. Management</a>
<ul class="sectlevel2">
-<li><a href="#definitions">9.1. Definitions</a>
+<li><a href="#using_apache_qpid_dispatch_router_console">9.1. Using Apache Qpid Dispatch Router Console</a>
<ul class="sectlevel3">
-<li><a href="#vhost">9.1.1. vhost</a></li>
+<li><a href="#console-overview">9.1.1. Console Overview</a></li>
+<li><a href="#console-installation">9.1.2. Console Installation</a></li>
+<li><a href="#console-operation">9.1.3. Console Operation</a></li>
</ul>
</li>
-<li><a href="#policy_features">9.2. Policy Features</a>
+<li><a href="#monitoring-using-qdstat">9.2. Monitoring Dispatch Router Using <code>qdstat</code></a>
<ul class="sectlevel3">
-<li><a href="#total_connection_limit">9.2.1. Total Connection Limit</a></li>
-<li><a href="#vhost_policy">9.2.2. Vhost Policy</a></li>
-<li><a href="#default_vhost">9.2.3. Default Vhost</a></li>
+<li><a href="#syntax_for_using_code_qdstat_code">9.2.1. Syntax for Using <code>qdstat</code></a></li>
+<li><a href="#viewing_general_statistics_for_a_router">9.2.2. Viewing General Statistics for a Router</a></li>
+<li><a href="#viewing_a_list_of_connections_to_a_router">9.2.3. Viewing a List of Connections to a Router</a></li>
+<li><a href="#viewing_amqp_links_attached_to_a_router">9.2.4. Viewing AMQP Links Attached to a Router</a></li>
+<li><a href="#viewing_known_routers_on_a_network">9.2.5. Viewing Known Routers on a Network</a></li>
+<li><a href="#viewing_addresses_known_to_a_router">9.2.6. Viewing Addresses Known to a Router</a></li>
+<li><a href="#viewing_a_router_s_autolinks">9.2.7. Viewing a Router’s Autolinks</a></li>
+<li><a href="#viewing_the_status_of_a_router_s_link_routes">9.2.8. Viewing the Status of a Router’s Link Routes</a></li>
+<li><a href="#viewing_memory_consumption_information">9.2.9. Viewing Memory Consumption Information</a></li>
</ul>
</li>
-<li><a href="#policy_schema">9.3. Policy Schema</a>
+<li><a href="#managing-router">9.3. Managing Dispatch Router Using <code>qdmanage</code></a>
<ul class="sectlevel3">
-<li><a href="#global_policy">9.3.1. Global Policy</a></li>
-<li><a href="#vhost_policy_2">9.3.2. Vhost Policy</a></li>
-<li><a href="#vhost_user_group_settings_map">9.3.3. Vhost User Group Settings Map</a></li>
+<li><a href="#syntax_for_using_code_qdmanage_code">9.3.1. Syntax for Using <code>qdmanage</code></a></li>
+<li><a href="#managing_network_connections">9.3.2. Managing Network Connections</a></li>
+<li><a href="#managing_security">9.3.3. Managing Security</a></li>
+<li><a href="#managing_routing">9.3.4. Managing Routing</a></li>
+<li><a href="#managing_logging">9.3.5. Managing Logging</a></li>
</ul>
</li>
-<li><a href="#policy_wildcard_and_user_name_substitution">9.4. Policy Wildcard and User Name Substitution</a>
-<ul class="sectlevel3">
-<li><a href="#remote_host_wildcard">9.4.1. Remote Host Wildcard</a></li>
-<li><a href="#amqp_source_and_target_wildcard_and_name_substitution">9.4.2. AMQP Source and Target Wildcard and Name Substitution</a></li>
-</ul>
-</li>
-<li><a href="#composing_policies">9.5. Composing Policies</a>
-<ul class="sectlevel3">
-<li><a href="#example_1_user_policy_disabled">9.5.1. Example 1. User Policy Disabled</a></li>
-<li><a href="#example2">9.5.2. Example 2. All Users Have Simple Connection Limits</a></li>
-<li><a href="#example_3_admins_must_connect_from_localhost">9.5.3. Example 3. Admins Must Connect From Localhost</a></li>
-<li><a href="#example_4_limiting_possible_memory_consumption">9.5.4. Example 4. Limiting Possible Memory Consumption</a></li>
-</ul>
-</li>
-</ul>
-</li>
-<li><a href="#management">10. Management</a>
-<ul class="sectlevel2">
-<li><a href="#using_apache_qpid_dispatch_router_console">10.1. Using Apache Qpid Dispatch Router Console</a>
-<ul class="sectlevel3">
-<li><a href="#console-overview">10.1.1. Console Overview</a></li>
-<li><a href="#console-installation">10.1.2. Console Installation</a></li>
-<li><a href="#console-operation">10.1.3. Console Operation</a></li>
-</ul>
-</li>
-<li><a href="#monitoring_using_qdstat">10.2. Monitoring Dispatch Router Using <code>qdstat</code></a>
-<ul class="sectlevel3">
-<li><a href="#syntax_for_using_code_qdstat_code">10.2.1. Syntax for Using <code>qdstat</code></a></li>
-<li><a href="#viewing_general_statistics_for_a_router">10.2.2. Viewing General Statistics for a Router</a></li>
-<li><a href="#viewing_a_list_of_connections_to_a_router">10.2.3. Viewing a List of Connections to a Router</a></li>
-<li><a href="#viewing_amqp_links_attached_to_a_router">10.2.4. Viewing AMQP Links Attached to a Router</a></li>
-<li><a href="#viewing_known_routers_on_a_network">10.2.5. Viewing Known Routers on a Network</a></li>
-<li><a href="#viewing_addresses_known_to_a_router">10.2.6. Viewing Addresses Known to a Router</a></li>
-<li><a href="#viewing_a_router_s_autolinks">10.2.7. Viewing a Router’s Autolinks</a></li>
-<li><a href="#viewing_the_status_of_a_router_s_link_routes">10.2.8. Viewing the Status of a Router’s Link Routes</a></li>
-<li><a href="#viewing_memory_consumption_information">10.2.9. Viewing Memory Consumption Information</a></li>
-</ul>
-</li>
-<li><a href="#managing_router">10.3. Managing Dispatch Router Using <code>qdmanage</code></a>
-<ul class="sectlevel3">
-<li><a href="#syntax_for_using_code_qdmanage_code">10.3.1. Syntax for Using <code>qdmanage</code></a></li>
-<li><a href="#managing_network_connections">10.3.2. Managing Network Connections</a></li>
-<li><a href="#managing_security">10.3.3. Managing Security</a></li>
-<li><a href="#managing_routing">10.3.4. Managing Routing</a></li>
-<li><a href="#managing_logging">10.3.5. Managing Logging</a></li>
+<li><a href="#management_entities">9.4. Management Entities</a></li>
</ul>
</li>
-<li><a href="#management_entities">10.4. Management Entities</a></li>
-</ul>
-</li>
-<li><a href="#reliability">11. Reliability</a>
+<li><a href="#reliability">10. Reliability</a>
<ul class="sectlevel2">
-<li><a href="#path_redundancy">11.1. Path Redundancy</a></li>
-<li><a href="#path_redundancy_and_temporal_decoupling">11.2. Path Redundancy and Temporal Decoupling</a></li>
-<li><a href="#sharded_queue">11.3. Sharded Queue</a></li>
+<li><a href="#path_redundancy">10.1. Path Redundancy</a></li>
+<li><a href="#path_redundancy_and_temporal_decoupling">10.2. Path Redundancy and Temporal Decoupling</a></li>
+<li><a href="#sharded_queue">10.3. Sharded Queue</a></li>
</ul>
</li>
-<li><a href="#technical_details_specifications">12. Technical Details and Specifications</a>
+<li><a href="#technical-details-specifications">11. Technical Details and Specifications</a>
<ul class="sectlevel2">
-<li><a href="#client_compatibility">12.1. Client Compatibility</a></li>
-<li><a href="#amqp_mapping">12.2. AMQP Mapping</a>
+<li><a href="#client-compatibility">11.1. Client Compatibility</a></li>
+<li><a href="#amqp-mapping">11.2. AMQP Mapping</a>
<ul class="sectlevel3">
-<li><a href="#message_annotations">12.2.1. Message Annotations</a></li>
-<li><a href="#sourcetarget_capabilities">12.2.2. Source/Target Capabilities</a></li>
-<li><a href="#dynamic_node_properties">12.2.3. Dynamic-Node-Properties</a></li>
-<li><a href="#addresses_and_address_formats">12.2.4. Addresses and Address Formats</a></li>
-<li><a href="#implementation_of_the_amqp_management_specification">12.2.5. Implementation of the AMQP Management Specification</a></li>
+<li><a href="#message-annotations">11.2.1. Message Annotations</a></li>
+<li><a href="#sourcetarget-capabilities">11.2.2. Source/Target Capabilities</a></li>
+<li><a href="#dynamic-node-properties">11.2.3. Dynamic-Node-Properties</a></li>
+<li><a href="#addresses-and-address-formats">11.2.4. Addresses and Address Formats</a></li>
+<li><a href="#implementation-of-the-amqp-management-specification">11.2.5. Implementation of the AMQP Management Specification</a></li>
</ul>
</li>
</ul>
</li>
-<li><a href="#cyrus_sasl">Appendix A: Using Cyrus SASL to Provide Authentication</a>
+<li><a href="#cyrus-sasl">Appendix A: Using Cyrus SASL to Provide Authentication</a>
<ul class="sectlevel2">
-<li><a href="#generating_sasl_database">A.1. Generating a SASL Database</a></li>
+<li><a href="#generating-sasl-database">A.1. Generating a SASL Database</a></li>
<li><a href="#viewing_users_in_a_sasl_database">A.2. Viewing Users in a SASL Database</a></li>
-<li><a href="#configuring_sasl_database">A.3. Configuring a SASL Database</a></li>
-</ul>
-</li>
-<li><a href="#router_configuration_reference">Appendix B: Configuration Reference</a>
-<ul class="sectlevel2">
-<li><a href="#configuration_file">B.1. Configuration File</a>
-<ul class="sectlevel3">
-<li><a href="#configuration_sections">B.1.1. Configuration Sections</a></li>
-</ul>
-</li>
+<li><a href="#configuring-sasl-database">A.3. Configuring a SASL Database</a></li>
</ul>
</li>
</ul>
@@ -756,32 +713,86 @@ used. Address semantics include the following considerations:</p>
<div class="sect3">
<h4 id="routing_patterns">2.4.1. Routing Patterns</h4>
<div class="paragraph">
-<p>Routing patterns define the paths that a message with a mobile address can take across a network. These routing patterns can be used for both direct routing, in which the router distributes messages between clients without a broker, and indirect routing, in which the router enables clients to exchange messages through a broker.</p>
+<p>Routing patterns define the paths that a message with a mobile address
+can take across a network. These routing patterns can be used for both
+direct routing, in which the router distributes messages between
+clients without a broker, and indirect routing, in which the router
+enables clients to exchange messages through a broker.</p>
+</div>
+<div class="paragraph">
+<p>Note that the routing patterns fall into two categories: Anycast
+(Balanced and Closest) and Multicast. There is no concept of
+"unicast" in which there is only one consumer for an address.</p>
+</div>
+<div class="paragraph">
+<p>Anycast distribution delivers each message to one consumer whereas
+multicast distribution delivers each message to all consumers.</p>
+</div>
+<div class="paragraph">
+<p>Anycast delivery is reliable when the message deliveries are
+unsettled. There is a reliability contract that the router network
+abides by when delivering unsettled messages to anycast addresses.
+For every such delivery sent by a producer, the router network
+guarantees that one of the following outcomes will occur:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>The delivery shall be settled with ACCEPTED or REJECTED disposition
+where the disposition is supplied by the consumer.</p>
+</li>
+<li>
+<p>The delivery shall be settled with RELEASED disposition, meaning
+that the message was not delivered to any consumer.</p>
+</li>
+<li>
+<p>The delivery shall be settled with MODIFIED disposition, meaning
+that the message may have been delivered to a consumer but should be
+considered in-doubt and re-sent.</p>
+</li>
+<li>
+<p>The connection to the producer shall be dropped, signifying that all
+unsettled deliveries should now be considered in-doubt by the
+producer and later re-sent.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Multicast delivery is not reliable. If a producer sends an unsettled
+delivery, the ingress router shall settle the delivery with ACCEPTED
+disposition regardless of whether the message was delivered to any
+consumers.</p>
+</div>
+<div class="sect4">
+<h5 id="balanced">Balanced</h5>
+<div class="paragraph">
+<p>An anycast method which allows multiple receivers to use the same
+address. In this case, messages (or links) are routed to exactly one
+of the receivers and the network attempts to balance the traffic load
+across the set of receivers using the same address. This routing
+delivers messages to receivers based on how quickly they settle the
+deliveries. Faster receivers get more messages.</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="closest">Closest</h5>
+<div class="paragraph">
+<p>An anycast method in which even if there are more receivers for the
+same address, every message is sent along the shortest path to reach
+the destination. This means that only one receiver will get the
+message. Each message is delivered to the closest receivers in terms
+of topology cost. If there are multiple receivers with the same lowest
+cost, deliveries will be spread evenly among those receivers.</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="multicast">Multicast</h5>
+<div class="paragraph">
+<p>Having multiple consumers on the same address at the same time,
+messages are routed such that each consumer receives one copy of the
+message.</p>
+</div>
</div>
-<table class="tableblock frame-all grid-all spread">
-<colgroup>
-<col style="width: 20%;">
-<col style="width: 80%;">
-</colgroup>
-<tbody>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Pattern</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Balanced</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">An anycast method which allows multiple receivers to use the same address. In this case, messages (or links) are routed to exactly one of the receivers and the network attempts to balance the traffic load across the set of receivers using the same address. This routing delivers messages to receivers based on how quickly they settle the deliveries. Faster receivers get more messages.</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Closest</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">An anycast method in which even if there are more receivers for the same address, every message is sent along the shortest path to reach the destination. This means that only one receiver will get the message. Each message is delivered to the closest receivers in terms of topology cost. If there are multiple receivers with the same lowest cost, deliveries will be spread evenly among those receivers.</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Multicast</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Having multiple consumers on the same address at the same time, messages are routed such that each consumer receives one copy of the message.</p></td>
-</tr>
-</tbody>
-</table>
</div>
<div class="sect3">
<h4 id="routing_mechanisms">2.4.2. Routing Mechanisms</h4>
@@ -917,13 +928,13 @@ control.</p>
</div>
</div>
<div class="sect1">
-<h2 id="getting_started">3. Getting Started</h2>
+<h2 id="getting-started">3. Getting Started</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Before configuring Dispatch Router, you should understand how to start the router, how it is configured by default, and how to use it in a simple peer-to-peer configuration.</p>
</div>
<div class="sect2">
-<h3 id="starting_the_router">3.1. Starting the Router</h3>
+<h3 id="starting-the-router">3.1. Starting the Router</h3>
<div class="olist arabic">
<div class="title">Procedure</div>
<ol class="arabic">
@@ -949,7 +960,7 @@ control.</p>
</td>
<td class="content">
<div class="paragraph">
-<p>You can specify a different configuration file with which to start the router. For more information, see <a href="#methods_for_changing_router_configuration"><em>Changing a Router’s Configuration</em></a>.</p>
+<p>You can specify a different configuration file with which to start the router. For more information, see <a href="#methods-for-changing-router-configuration"><em>Changing a Router’s Configuration</em></a>.</p>
</div>
</td>
</tr>
@@ -1039,15 +1050,15 @@ messages to that address.</p>
<div class="title">Procedure</div>
<ol class="arabic">
<li>
-<p><a href="#starting_the_receiver_client">Start the receiver client</a>.</p>
+<p><a href="#starting-the-receiver-client">Start the receiver client</a>.</p>
</li>
<li>
-<p><a href="#sending_messages">Send messages</a>.</p>
+<p><a href="#sending-messages">Send messages</a>.</p>
</li>
</ol>
</div>
<div class="sect3">
-<h4 id="starting_the_receiver_client">3.2.1. Starting the Receiver Client</h4>
+<h4 id="starting-the-receiver-client">3.2.1. Starting the Receiver Client</h4>
<div class="paragraph">
<p>In this example, the receiver client is started first. This means that the messages will be sent as soon as the sender client is started.</p>
</div>
@@ -1088,7 +1099,7 @@ $ python simple_recv.py -a 127.0.0.1:5672/examples -m 5</pre>
</div>
</div>
<div class="sect3">
-<h4 id="sending_messages">3.2.2. Sending Messages</h4>
+<h4 id="sending-messages">3.2.2. Sending Messages</h4>
<div class="paragraph">
<p>After starting the receiver client, you can send messages from the sender. These messages will travel through the router to the receiver.</p>
</div>
@@ -1135,7 +1146,7 @@ $ python simple_send.py -a 127.0.0.1:5672/examples -m 5</pre>
</div>
</div>
<div class="sect1">
-<h2 id="router_configuration">4. Configuration</h2>
+<h2 id="router-configuration">4. Configuration</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Before starting Dispatch Router, you should understand where the router’s configuration file is stored, how the file is structured, and the methods you can use to modify it.</p>
@@ -1156,7 +1167,7 @@ $ python simple_send.py -a 127.0.0.1:5672/examples -m 5</pre>
<p>When Dispatch Router is installed, <code>qdrouterd.conf</code> is installed in this directory by default. When the router is started, it runs with the settings defined in this file.</p>
</div>
<div class="paragraph">
-<p>For more information about the router configuration file (including available entities and attributes), see the <a href="https://qpid.apache.org/releases/qpid-dispatch-0.8.0/man/qdrouterd.html">qdrouterd man page</a>.</p>
+<p>For more information about the router configuration file (including available entities and attributes), see the <a href="https://qpid.apache.org/releases/qpid-dispatch-1.0.1/man/qdrouterd.html" target="_blank" rel="noopener">qdrouterd man page</a>.</p>
</div>
</div>
</div>
@@ -1183,7 +1194,7 @@ $ python simple_send.py -a 127.0.0.1:5672/examples -m 5</pre>
</div>
</div>
<div class="sect2">
-<h3 id="methods_for_changing_router_configuration">4.3. Changing a Router’s Configuration</h3>
+<h3 id="methods-for-changing-router-configuration">4.3. Changing a Router’s Configuration</h3>
<div class="paragraph">
<p>You can use different methods for changing a router’s configuration based on whether the router is currently running, and whether you want the change to take effect immediately.</p>
</div>
@@ -1191,15 +1202,15 @@ $ python simple_send.py -a 127.0.0.1:5672/examples -m 5</pre>
<div class="title">Choices</div>
<ul>
<li>
-<p><a href="#making_permanent_change_to_router_configuration">Make a permanent change to the router’s configuration</a>.</p>
+<p><a href="#making-permanent-change-to-router-configuration">Make a permanent change to the router’s configuration</a>.</p>
</li>
<li>
-<p><a href="#changing_configuration_for_running_router">Change the configuration for a running router.</a></p>
+<p><a href="#changing-configuration-for-running-router">Change the configuration for a running router.</a></p>
</li>
</ul>
</div>
<div class="sect3">
-<h4 id="making_permanent_change_to_router_configuration">4.3.1. Making a Permanent Change to the Router’s Configuration</h4>
+<h4 id="making-permanent-change-to-router-configuration">4.3.1. Making a Permanent Change to the Router’s Configuration</h4>
<div class="paragraph">
<p>You can make a permanent change to the router’s configuration by editing the router’s configuration file directly. You must restart the router for the changes to take effect, but the changes will be saved even if the router is stopped.</p>
</div>
@@ -1226,7 +1237,7 @@ $ python simple_send.py -a 127.0.0.1:5672/examples -m 5</pre>
</div>
<div class="listingblock">
<div class="content">
-<pre class="nowrap"># qdrouterd -d --conf /etc/qpid-dispatch/new-configuration-file.conf</pre>
+<pre class="nowrap">$ sudo qdrouterd -d --conf /etc/qpid-dispatch/new-configuration-file.conf</pre>
</div>
</div>
</li>
@@ -1234,7 +1245,7 @@ $ python simple_send.py -a 127.0.0.1:5672/examples -m 5</pre>
</div>
</div>
<div class="sect3">
-<h4 id="changing_configuration_for_running_router">4.3.2. Changing the Configuration for a Running Router</h4>
+<h4 id="changing-configuration-for-running-router">4.3.2. Changing the Configuration for a Running Router</h4>
<div class="paragraph">
<p>If the router is running, you can change its configuration on the fly. The changes you make take effect immediately, but are lost if the router is stopped.</p>
</div>
@@ -1244,7 +1255,7 @@ $ python simple_send.py -a 127.0.0.1:5672/examples -m 5</pre>
<li>
<p>Use <code>qdmanage</code> to change the configuration.</p>
<div class="paragraph">
-<p>For more information about using <code>qdmanage</code>, see <a href="#managing_router">Managing Dispatch Router Using <em>qdmanage</em></a>.</p>
+<p>For more information about using <code>qdmanage</code>, see <a href="#managing-router">Managing Dispatch Router Using <em>qdmanage</em></a>.</p>
</div>
</li>
</ul>
@@ -1388,7 +1399,7 @@ address {
</dl>
</div>
<div class="paragraph">
-<p>For information about additional attributes, see <a href="#router_configuration_file_router">Router</a> in the <em>Configuration Reference</em>.</p>
+<p>For information about additional attributes, see <a href="https://qpid.apache.org/releases/qpid-dispatch-1.0.1/man/qdrouterd.conf.html#_router">router</a> in the <code>qdrouterd.conf</code> man page.</p>
</div>
</div>
</div>
@@ -1400,10 +1411,10 @@ address {
<div class="ulist">
<ul>
<li>
-<p><a href="#setting_up_ssl_for_encryption_and_authentication">Set up SSL/TLS for encryption, authentication, or both</a></p>
+<p><a href="#setting-up-ssl-for-encryption-and-authentication">Set up SSL/TLS for encryption, authentication, or both</a></p>
</li>
<li>
-<p><a href="#setting_up_sasl_for_authentication_and_payload_encryption">Set up SASL for authentication and payload encryption</a></p>
+<p><a href="#setting-up-sasl-for-authentication-and-payload-encryption">Set up SASL for authentication and payload encryption</a></p>
</li>
</ul>
</div>
@@ -1417,10 +1428,10 @@ address {
<div class="ulist">
<ul>
<li>
-<p><a href="#adding_incoming_connections">Add incoming connections</a></p>
+<p><a href="#adding-incoming-connections">Add incoming connections</a></p>
</li>
<li>
-<p><a href="#adding_outgoing_connections">Add outgoing connections</a></p>
+<p><a href="#adding-outgoing-connections">Add outgoing connections</a></p>
</li>
</ul>
</div>
@@ -1434,13 +1445,13 @@ address {
<div class="ulist">
<ul>
<li>
-<p><a href="#routing_messages_between_clients">Configure the router to route messages between clients directly</a></p>
+<p><a href="#routing-messages-between-clients">Configure the router to route messages between clients directly</a></p>
</li>
<li>
-<p><a href="#routing_messages_through_broker">Configure the router to route messages through a broker queue</a></p>
+<p><a href="#routing-messages-through-broker">Configure the router to route messages through a broker queue</a></p>
</li>
<li>
-<p><a href="#creating_link_route">Create a link route to define a private messaging path between endpoints</a></p>
+<p><a href="#creating-link-route">Create a link route to define a private messaging path between endpoints</a></p>
</li>
</ul>
</div>
@@ -1456,13 +1467,13 @@ address {
</div>
</div>
<div class="sect1">
-<h2 id="router_network_connections">5. Network Connections</h2>
+<h2 id="router-network-connections">5. Network Connections</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Connections define how the router communicates with clients, other routers, and brokers. You can configure <em>incoming connections</em> to define how the router listens for data from clients and other routers, and you can configure <em>outgoing connections</em> to define how the router sends data to other routers and brokers.</p>
</div>
<div class="sect2">
-<h3 id="adding_incoming_connections">5.1. Listening for Incoming Connections</h3>
+<h3 id="adding-incoming-connections">5.1. Listening for Incoming Connections</h3>
<div class="paragraph">
<p>Listening for incoming connections involves setting the host and port on which the router should listen for traffic.</p>
</div>
@@ -1495,13 +1506,13 @@ address {
</dl>
</div>
<div class="paragraph">
-<p>For information about additional attributes, see <a href="#router_configuration_file_listener">Listener</a> in the <em>Configuration Reference</em>.</p>
+<p>For information about additional attributes, see <a href="https://qpid.apache.org/releases/qpid-dispatch-1.0.1/man/qdrouterd.conf.html#_listener">listener</a> in the <code>qdrouterd.conf</code> man page.</p>
</div>
</div>
</div>
</li>
<li>
-<p>If necessary, <a href="#securing_incoming_connections">secure the connection</a>.</p>
+<p>If necessary, <a href="#securing-incoming-connections">secure the connection</a>.</p>
<div class="paragraph">
<p>If you have set up SSL/TLS or SASL in your environment, you can configure the router to only accept encrypted or authenticated communication on this connection.</p>
</div>
@@ -1513,12 +1524,12 @@ address {
</div>
</div>
<div class="sect2">
-<h3 id="adding_outgoing_connections">5.2. Adding Outgoing Connections</h3>
+<h3 id="adding-outgoing-connections">5.2. Adding Outgoing Connections</h3>
<div class="paragraph">
<p>Configuring outgoing connections involves setting the host and port on which the router connects to other routers and brokers.</p>
</div>
<div class="paragraph">
-<p>When a router connects to a broker, the broker might provide backup connection data that the router can use if the primary connection fails. If the primary connection fails, the router attempts to reconnect by using a combination of the primary and — if provided — backup connections in round-robin fashion until the connection is successful. For more information about viewing the backup connection data provided by the broker, see <a href="#managing_connectors">Managing Connectors</a>.</p>
+<p>When a router connects to a broker, the broker might provide backup connection data that the router can use if the primary connection fails. If the primary connection fails, the router attempts to reconnect by using a combination of the primary and — if provided — backup connections in round-robin fashion until the connection is successful. For more information about viewing the backup connection data provided by the broker, see <a href="#managing-connectors">Managing Connectors</a>.</p>
</div>
<div class="olist arabic">
<div class="title">Procedure</div>
@@ -1554,13 +1565,13 @@ address {
</dl>
</div>
<div class="paragraph">
-<p>For information about additional attributes, see <a href="#router_configuration_file_connector">Connector</a> in the <em>Configuration Reference</em>.</p>
+<p>For information about additional attributes, see <a href="https://qpid.apache.org/releases/qpid-dispatch-1.0.1/man/qdrouterd.conf.html#_connector">connector</a> in the <code>qdrouterd.conf</code> man page.</p>
</div>
</div>
</div>
</li>
<li>
-<p>If necessary, <a href="#securing_outgoing_connections">secure the connection</a>.</p>
+<p>If necessary, <a href="#securing-outgoing-connections">secure the connection</a>.</p>
<div class="paragraph">
<p>If you have set up SSL/TLS or SASL in your environment, you can configure the router to only send encrypted or authenticated communication on this connection.</p>
</div>
@@ -1574,9 +1585,14 @@ address {
</div>
</div>
<div class="sect1">
-<h2 id="security_config">6. Security</h2>
+<h2 id="security-config">6. Security</h2>
<div class="sectionbody">
<div class="paragraph">
+<p>Securing your router network involves configuring authentication and authorization. You can authenticate and encrypt the router’s connections using SSL/TLS or SASL. Additionally, you can authorize access to messaging resources by setting user connection restrictions and defining AMQP resource access control.</p>
+</div>
+<div class="sect2">
+<h3 id="authenticating_remote_peers">6.1. Authenticating Remote Peers</h3>
+<div class="paragraph">
<p>You can configure Dispatch Router to communicate with clients, routers, and brokers in a secure way by authenticating and encrypting the router’s connections. Dispatch Router supports the following security protocols:</p>
</div>
<div class="ulist">
@@ -1589,8 +1605,8 @@ address {
</li>
</ul>
</div>
-<div class="sect2">
-<h3 id="setting_up_ssl_for_encryption_and_authentication">6.1. Setting Up SSL/TLS for Encryption and Authentication</h3>
+<div class="sect3">
+<h4 id="setting-up-ssl-for-encryption-and-authentication">6.1.1. Setting Up SSL/TLS for Encryption and Authentication</h4>
<div class="paragraph">
<p>Before you can secure incoming and outgoing connections using SSL/TLS encryption and authentication, you must first set up the SSL/TLS profile in the router’s configuration file.</p>
</div>
@@ -1623,9 +1639,9 @@ address {
<pre class="nowrap">sslProfile {
name: <em>NAME</em>
ciphers: <em>CIPHERS</em>
- certDb: <em>PATH</em>.pem
+ caCertFile: <em>PATH</em>.pem
certFile: <em>PATH</em>.pem
- keyFile: <em>PATH</em>.pem
+ privateKeyFile: <em>PATH</em>.pem
password: <em>PASSWORD/PATH_TO_PASSWORD_FILE</em>
...
}</pre>
@@ -1660,15 +1676,15 @@ address {
<p>To see the full list of available ciphers, use the <code>openssl ciphers</code> command. For more information about each cipher, see the <a href="https://www.openssl.org/docs/manmaster/man1/ciphers.html" target="_blank" rel="noopener">ciphers man page</a>.</p>
</div>
</dd>
-<dt class="hdlist1"><code>certDb</code></dt>
+<dt class="hdlist1"><code>caCertFile</code></dt>
<dd>
-<p>The absolute path to the database that contains the public certificates of trusted certificate authorities (CA).</p>
+<p>The absolute path to the file that contains the public certificates of trusted certificate authorities (CA).</p>
<div class="paragraph">
<p>For example:</p>
</div>
<div class="listingblock">
<div class="content">
-<pre class="nowrap">certDb: /qdrouterd/ssl_certs/ca-cert.pem</pre>
+<pre class="nowrap">caCertFile: /qdrouterd/ssl_certs/ca-cert.pem</pre>
</div>
</div>
</dd>
@@ -1684,7 +1700,7 @@ address {
</div>
</div>
</dd>
-<dt class="hdlist1"><code>keyFile</code></dt>
+<dt class="hdlist1"><code>privateKeyFile</code></dt>
<dd>
<p>The absolute path to the file containing the PEM-formatted private key for the above certificate.</p>
<div class="paragraph">
@@ -1692,7 +1708,7 @@ address {
</div>
<div class="listingblock">
<div class="content">
-<pre class="nowrap">keyFile: /qdrouterd/ssl_certs/router-key-pwd.pem</pre>
+<pre class="nowrap">privateKeyFile: /qdrouterd/ssl_certs/router-key-pwd.pem</pre>
</div>
</div>
</dd>
@@ -1711,7 +1727,7 @@ address {
</dl>
</div>
<div class="paragraph">
-<p>For information about additional <code>sslProfile</code> attributes, see <a href="#router_configuration_file_sslprofile"><em>sslProfile</em></a> in the <em>Configuration Reference</em>.</p>
+<p>For information about additional <code>sslProfile</code> attributes, see <a href="https://qpid.apache.org/releases/qpid-dispatch-1.0.1/man/qdrouterd.conf.html#_sslprofile">sslProfile</a> in the <code>qdrouterd.conf</code> man page.</p>
</div>
</div>
</div>
@@ -1719,8 +1735,8 @@ address {
</ul>
</div>
</div>
-<div class="sect2">
-<h3 id="setting_up_sasl_for_authentication_and_payload_encryption">6.2. Setting Up SASL for Authentication and Payload Encryption</h3>
+<div class="sect3">
+<h4 id="setting-up-sasl-for-authentication-and-payload-encryption">6.1.2. Setting Up SASL for Authentication and Payload Encryption</h4>
<div class="paragraph">
<p>If you plan to use SASL to authenticate connections, you must first add the SASL attributes to the <code>router</code> entity in the router’s configuration file. These attributes define a set of SASL parameters that can be used by the router’s incoming and outgoing connections.</p>
</div>
@@ -1731,10 +1747,23 @@ address {
<div class="ulist">
<ul>
<li>
-<p><a href="#generating_sasl_database">The SASL database is generated.</a></p>
+<p><a href="#generating-sasl-database">The SASL database is generated.</a></p>
</li>
<li>
-<p><a href="#configuring_sasl_database">The SASL configuration file is configured.</a></p>
+<p><a href="#configuring-sasl-database">The SASL configuration file is configured.</a></p>
+</li>
+<li>
+<p>The Cyrus SASL plugin is installed for each SASL mechanism you plan to use.</p>
+<div class="paragraph">
+<p>Cyrus SASL uses plugins to support specific SASL mechanisms. Before you can use a particular SASL mechanism, the relevant plugin must be installed. For example, you need the <code>cyrus-sasl-plain</code> plugin to use SASL PLAIN authentication.</p>
+</div>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>To see a list of Cyrus SASL plugins in a <code>dnf</code>-based Linux system, use the <code>dnf search cyrus-sasl</code> command. To install a Cyrus SASL plugin, use the <code>dnf install <em>PLUGIN</em></code> command.</p>
+</div>
+</div>
+</div>
</li>
</ul>
</div>
@@ -1749,14 +1778,14 @@ address {
<div class="content">
<pre class="nowrap">router {
...
- saslConfigPath: <em>PATH</em>
+ saslConfigDir: <em>PATH</em>
saslConfigName: <em>FILE_NAME</em>
}</pre>
</div>
</div>
<div class="dlist">
<dl>
-<dt class="hdlist1"><code>saslConfigPath</code></dt>
+<dt class="hdlist1"><code>saslConfigDir</code></dt>
<dd>
<p>The absolute path to the SASL configuration file.</p>
<div class="paragraph">
@@ -1764,7 +1793,7 @@ address {
</div>
<div class="listingblock">
<div class="content">
-<pre class="nowrap">saslConfigPath: /qdrouterd/security</pre>
+<pre class="nowrap">saslConfigDir: /qdrouterd/security</pre>
</div>
</div>
</dd>
@@ -1788,8 +1817,8 @@ address {
</ul>
</div>
</div>
-<div class="sect2">
-<h3 id="securing_incoming_connections">6.3. Securing Incoming Connections</h3>
+<div class="sect3">
+<h4 id="securing-incoming-connections">6.1.3. Securing Incoming Connections</h4>
<div class="paragraph">
<p>You can secure incoming connections by configuring each connection’s <code>listener</code> entity for encryption, authentication, or both.</p>
</div>
@@ -1801,21 +1830,21 @@ address {
<div class="title">Choices</div>
<ul>
<li>
-<p><a href="#adding_ssl_encryption_to_incoming_connection">Add SSL/TLS encryption</a></p>
+<p><a href="#adding-ssl-encryption-to-incoming-connection">Add SSL/TLS encryption</a></p>
</li>
<li>
-<p><a href="#adding_sasl_authentication_to_incoming_connection">Add SASL authentication</a></p>
+<p><a href="#adding-sasl-authentication-to-incoming-connection">Add SASL authentication</a></p>
</li>
<li>
-<p><a href="#adding_ssl_client_authentication_to_incoming_connection">Add SSL/TLS client authentication</a></p>
+<p><a href="#adding-ssl-client-authentication-to-incoming-connection">Add SSL/TLS client authentication</a></p>
</li>
<li>
-<p><a href="#adding_sasl_payload_encryption_to_incoming_connection">Add SASL payload encryption</a></p>
+<p><a href="#adding-sasl-payload-encryption-to-incoming-connection">Add SASL payload encryption</a></p>
</li>
</ul>
</div>
-<div class="sect3">
-<h4 id="adding_ssl_encryption_to_incoming_connection">6.3.1. Adding SSL/TLS Encryption to an Incoming Connection</h4>
+<div class="sect4">
+<h5 id="adding-ssl-encryption-to-incoming-connection">Adding SSL/TLS Encryption to an Incoming Connection</h5>
<div class="paragraph">
<p>You can configure an incoming connection to accept encrypted connections only. By adding SSL/TLS encryption, to connect to this router, a remote peer must first start an SSL/TLS handshake with the router and be able to validate the server certificate received by the router during the handshake.</p>
</div>
@@ -1853,8 +1882,8 @@ address {
</ul>
</div>
</div>
-<div class="sect3">
-<h4 id="adding_sasl_authentication_to_incoming_connection">6.3.2. Adding SASL Authentication to an Incoming Connection</h4>
+<div class="sect4">
+<h5 id="adding-sasl-authentication-to-incoming-connection">Adding SASL Authentication to an Incoming Connection</h5>
<div class="paragraph">
<p>You can configure an incoming connection to authenticate the client using SASL. You can use SASL authentication with or without SSL/TLS encryption.</p>
</div>
@@ -1895,8 +1924,8 @@ address {
</ul>
</div>
</div>
-<div class="sect3">
-<h4 id="adding_ssl_client_authentication_to_incoming_connection">6.3.3. Adding SSL/TLS Client Authentication to an Incoming Connection</h4>
+<div class="sect4">
+<h5 id="adding-ssl-client-authentication-to-incoming-connection">Adding SSL/TLS Client Authentication to an Incoming Connection</h5>
<div class="paragraph">
<p>You can configure an incoming connection to authenticate the client using SSL/TLS.</p>
</div>
@@ -1938,8 +1967,8 @@ address {
</ul>
</div>
</div>
-<div class="sect3">
-<h4 id="adding_sasl_payload_encryption_to_incoming_connection">6.3.4. Adding SASL Payload Encryption to an Incoming Connection</h4>
+<div class="sect4">
+<h5 id="adding-sasl-payload-encryption-to-incoming-connection">Adding SASL Payload Encryption to an Incoming Connection</h5>
<div class="paragraph">
<p>If you do not use SSL/TLS, you can still encrypt the incoming connection by using SASL payload encryption.</p>
</div>
@@ -1981,8 +2010,8 @@ address {
</div>
</div>
</div>
-<div class="sect2">
-<h3 id="securing_outgoing_connections">6.4. Securing Outgoing Connections</h3>
+<div class="sect3">
+<h4 id="securing-outgoing-connections">6.1.4. Securing Outgoing Connections</h4>
<div class="paragraph">
<p>You can secure outgoing connections by configuring each connection’s <code>connector</code> entity for encryption, authentication, or both.</p>
</div>
@@ -1994,15 +2023,15 @@ address {
<div class="title">Choices</div>
<ul>
<li>
-<p><a href="#adding_ssl_authentication_to_outgoing_connection">Add SSL/TLS authentication</a></p>
+<p><a href="#adding-ssl-authentication-to-outgoing-connection">Add SSL/TLS authentication</a></p>
</li>
<li>
-<p><a href="#adding_sasl_authentication_to_outgoing_connection">Add SASL authentication</a></p>
+<p><a href="#adding-sasl-authentication-to-outgoing-connection">Add SASL authentication</a></p>
</li>
</ul>
</div>
-<div class="sect3">
-<h4 id="adding_ssl_authentication_to_outgoing_connection">6.4.1. Adding SSL/TLS Client Authentication to an Outgoing Connection</h4>
+<div class="sect4">
+<h5 id="adding-ssl-authentication-to-outgoing-connection">Adding SSL/TLS Client Authentication to an Outgoing Connection</h5>
<div class="paragraph">
<p>If an outgoing connection connects to an external client configured with mutual authentication, you should ensure that the outgoing connection is configured to provide the external client with a valid security certificate during the SSL/TLS handshake.</p>
</div>
@@ -2038,8 +2067,8 @@ address {
</ul>
</div>
</div>
-<div class="sect3">
-<h4 id="adding_sasl_authentication_to_outgoing_connection">6.4.2. Adding SASL Authentication to an Outgoing Connection</h4>
+<div class="sect4">
+<h5 id="adding-sasl-authentication-to-outgoing-connection">Adding SASL Authentication to an Outgoing Connection</h5>
<div class="paragraph">
<p>You can configure an outgoing connection to provide authentication credentials to the external container. You can use SASL authentication with or without SSL/TLS encryption.</p>
</div>
@@ -2086,894 +2115,872 @@ address {
</div>
</div>
</div>
+<div class="sect3">
+<h4 id="integrating-with-kerberos">6.1.5. Integrating with Kerberos</h4>
+<div class="paragraph">
+<p>By using the <code>GSSAPI</code> SASL mechanism, you can configure Dispatch Router to authenticate incoming connections using Kerberos.</p>
</div>
-</div>
-<div class="sect1">
-<h2 id="routing">7. Routing</h2>
-<div class="sectionbody">
+<div class="ulist">
+<div class="title">Prerequisites</div>
+<ul>
+<li>
+<p>A Kerberos infrastructure must be deployed in your environment.</p>
+</li>
+<li>
+<p>In the Kerberos environment, a service principal of <code>amqp/<em>HOSTNAME</em>@<em>REALM</em></code> must be configured.</p>
<div class="paragraph">
-<p>Routing is the process by which messages are delivered to their destinations. To accomplish this, Dispatch Router provides two routing mechanisms: <em>message routing</em> and <em>link routing</em>.</p>
+<p>This is the service principal that Dispatch Router uses.</p>
</div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">Message routing</dt>
-<dd>
-<p>Routing is performed on messages as producers send them to a router. When a message arrives on a router, the router routes the message and its <em>settlement</em> based on the message’s <em>address</em> and <em>routing pattern</em>.</p>
+</li>
+<li>
+<p>The <code>cyrus-sasl-gssapi</code> package must be installed on each client and router host machine.</p>
+</li>
+<li>
+<p><a href="#setting-up-sasl-for-authentication-and-payload-encryption">SASL must be set up for Dispatch Router</a>.</p>
+</li>
+</ul>
+</div>
+<div class="olist arabic">
+<div class="title">Procedure</div>
+<ol class="arabic">
+<li>
+<p>On the router’s host machine, open the <code>/etc/sasl2/qdrouterd.conf</code> configuration file.</p>
<div class="openblock">
<div class="content">
-<div class="imageblock" style="text-align: center">
+<div class="exampleblock">
+<div class="title">Example 1. An <code>/etc/sasl2/qdrouterd.conf</code> Configuration File</div>
<div class="content">
-<img src="images/message-routing.png" alt="Message Routing">
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">pwcheck_method: auxprop
+auxprop_plugin: sasldb
+sasldb_path: qdrouterd.sasldb
+keytab: /etc/krb5.keytab
+mech_list: ANONYMOUS DIGEST-MD5 EXTERNAL PLAIN GSSAPI</pre>
</div>
-<div class="title">Figure 2. Message Routing</div>
</div>
-<div class="paragraph">
-<p>In this diagram, the message producer attaches a link to the router, and then sends a message over the link. When the router receives the message, it identifies the message’s destination based on the message’s address, and then uses its routing table to determine the best route to deliver the message either to its destination or to the next hop in the route. All dispositions (including settlement) are propagated along the same path that the original message transfer took. Flow control is handled between the sender and the router, and then between the router and the receiver.</p>
</div>
</div>
</div>
-</dd>
-<dt class="hdlist1">Link routing</dt>
-<dd>
-<p>Routing is performed on link-attach frames, which are chained together to form a virtual messaging path that directly connects a sender and receiver. Once a link route is established, the transfer of message deliveries, flow frames, and dispositions is performed across the link route.</p>
+</div>
+</li>
+<li>
+<p>Verify the following:</p>
+<div class="ulist">
+<ul>
+<li>
+<p>The <code>mech_list</code> attribute contains the <code>GSSAPI</code> mechanism.</p>
+</li>
+<li>
+<p>The <code>keytab</code> attribute points to the location of the keytab file.</p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>Open the router’s configuration file.</p>
+</li>
+<li>
+<p>For each incoming connection that should use Kerberos for authentication, set the router’s <code>listener</code> to use the <code>GSSAPI</code> mechanism.</p>
<div class="openblock">
<div class="content">
-<div class="imageblock" style="text-align: center">
+<div class="exampleblock">
+<div class="title">Example 2. A <code>listener</code> in the Router Configuration File</div>
<div class="content">
-<img src="images/link-routing.png" alt="Link Routing">
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">listener {
+ ...
+ authenticatePeer: yes
+ saslMechanisms: GSSAPI
+}</pre>
+</div>
+</div>
</div>
-<div class="title">Figure 3. Link Routing</div>
</div>
<div class="paragraph">
-<p>In this diagram, a router is connected to clients and to a broker, and it provides a link route to a queue on the broker (my_queue). The sender connects to the router, and the router propagates the link-attaches to the broker to form a direct link between the sender and the broker. The sender can begin sending messages to the queue, and the router passes the deliveries along the link route directly to the broker queue.</p>
+<p>For more information about these attributes, see <a href="#adding-sasl-authentication-to-incoming-connection">Adding SASL Authentication to an Incoming Connection</a>.</p>
</div>
</div>
</div>
-</dd>
-</dl>
+</li>
+</ol>
+</div>
+</div>
</div>
<div class="sect2">
-<h3 id="comparison_of_message_routing_and_link_routing">7.1. Comparison of Message Routing and Link Routing</h3>
+<h3 id="authorizing_access_to_messaging_resources">6.2. Authorizing Access to Messaging Resources</h3>
<div class="paragraph">
-<p>While you can use either message routing or link routing to deliver messages to a destination, they differ in several important ways. Understanding these differences will enable you to choose the proper routing approach for any particular use case.</p>
+<p>You can restrict the number of user connections, and control access to AMQP messaging resources by configuring <em>policies</em>.</p>
</div>
<div class="sect3">
-<h4 id="when_to_use_message_routing">7.1.1. When to Use Message Routing</h4>
+<h4 id="types_of_policies">6.2.1. Types of Policies</h4>
<div class="paragraph">
-<p>Message routing is the default routing mechanism. You can use it to route messages on a per-message basis between clients directly (direct-routed messaging), or to and from broker queues (brokered messaging).</p>
+<p>You can configure two different types of policies: <em>global policies</em> and <em>vhost policies</em>.</p>
</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Global policies</dt>
+<dd>
+<p>Settings for the router. A global policy defines the maximum number of incoming user connections for the router (across all vhost policies), and defines how the router should use vhost policies.</p>
+</dd>
+<dt class="hdlist1">Vhost policies</dt>
+<dd>
+<p>Connection and AMQP resource limits for a messaging endpoint (called an AMQP virtual host, or <em>vhost</em>). A vhost policy defines what a client can access on a messaging endpoint over a particular connection.</p>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
<div class="paragraph">
-<p>Message routing is best suited to the following requirements:</p>
+<p>A vhost is typically the name of the host to which the client connection is directed. For example, if a client application opens a connection to the <code>amqp://mybroker.example.com:5672/queue01</code> URL, the vhost would be <code>mybroker.example.com</code>.</p>
</div>
-<div class="ulist">
-<ul>
-<li>
-<p>Default, basic message routing.</p>
-<div class="paragraph">
-<p>Dispatch Router automatically routes messages by default, so manual configuration is only required if you want routing behavior that is different than the default.</p>
+</td>
+</tr>
+</table>
</div>
-</li>
-<li>
-<p>Message-based routing patterns.</p>
-<div class="paragraph">
-<p>Message routing supports both anycast and multicast routing patterns. You can load-balance individual messages across multiple consumers, and multicast (or fan-out) messages to multiple subscribers.</p>
+</dd>
+</dl>
</div>
-</li>
-<li>
-<p>Sharding messages across multiple broker instances when message delivery order is not important.</p>
<div class="paragraph">
-<p>Sharding messages from one producer might cause that producer’s messages to be received in a different order than the order in which they were sent.</p>
-</div>
-</li>
-</ul>
+<p>The resource limits defined in global and vhost policies are applied to user connections only. The limits do not affect inter-router connections or router connections that are outbound to waypoints.</p>
</div>
-<div class="paragraph">
-<p>Message routing is not suitable for any of the following requirements:</p>
</div>
-<div class="ulist">
-<ul>
-<li>
-<p>Dedicated path through the router network.</p>
+<div class="sect3">
+<h4 id="how_dispatch_router_applies_policies">6.2.2. How Dispatch Router Applies Policies</h4>
<div class="paragraph">
-<p>For inter-router transfers, all message deliveries are placed on the same inter-router link. This means that the traffic for one address might affect the delivery of the traffic for another address.</p>
+<p>Dispatch Router uses both global and vhost policies to determine whether to permit a connection, and if it is permitted, to apply the appropriate resource limits.</p>
</div>
-</li>
-<li>
-<p>Granular, end-to-end flow control.</p>
<div class="paragraph">
-<p>With message routing, end-to-end flow control is based on the settlement of deliveries and therefore might not be optimal in every case.</p>
+<p>When a client creates a connection to the router, the router first determines whether to allow or deny the connection. This decision is based on the following criteria:</p>
</div>
-</li>
+<div class="ulist">
+<ul>
<li>
-<p>Transaction support.</p>
+<p>Whether the connection will exceed the router’s global connection limit (defined in the global policy)</p>
</li>
<li>
-<p>Server-side selectors.</p>
+<p>Whether the connection will exceed the vhost’s connection limits (defined in the vhost policy that matches the host to which the connection is directed)</p>
</li>
</ul>
</div>
-</div>
-<div class="sect3">
-<h4 id="when_to_use_link_routing">7.1.2. When to Use Link Routing</h4>
<div class="paragraph">
-<p>Link routing requires more detailed configuration than message routing as well as an AMQP container that can accept incoming link-attaches (typically a broker). However, link routing enables you to satisfy more advanced use cases than message routing.</p>
+<p>If the connection is allowed, the router assigns the user (the authenticated user name from the connection) to a user group, and enforces the user group’s resource limits for the lifetime of the connection.</p>
+</div>
</div>
+<div class="sect3">
+<h4 id="configuring_global_policies">6.2.3. Configuring Global Policies</h4>
<div class="paragraph">
-<p>You can use link routing if you need to meet any of the following requirements:</p>
+<p>You can set the incoming connection limit for the router and define how it should use vhost policies by configuring a global policy.</p>
</div>
<div class="ulist">
+<div class="title">Procedure</div>
<ul>
<li>
-<p>Dedicated path through the router network.</p>
-<div class="paragraph">
-<p>With link routing, each link route has dedicated inter-router links through the network. Each link has its own dedicated message buffers, which means that the address will not have "head-of-line" blocking issues with other addresses.</p>
+<p>In the router configuration file, add a <code>policy</code> section.</p>
+<div class="openblock">
+<div class="content">
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">policy = {
+ maxConnections: 10000 <b class="conum">(1)</b>
+ enableVhostPolicy: true <b class="conum">(2)</b>
+ policyDir: /etc/qpid-dispatch/policies/ <b class="conum">(3)</b>
+ defaultVhost: $default <b class="conum">(4)</b>
+}</pre>
</div>
-</li>
-<li>
-<p>Sharding messages across multiple broker instances with guaranteed delivery order.</p>
-<div class="paragraph">
-<p>Link routing to a sharded queue preserves the delivery order of the producer’s messages by causing all messages on that link to go to the same broker instance.</p>
</div>
+<div class="colist arabic">
+<ol>
+<li>
+<p>The maximum number of concurrent client connections allowed for this router. This limit is always enforced, even if no other policy settings have been defined. The limit is applied to all incoming connections regardless of remote host, authenticated user, or targeted vhost. The default (and the maximum) value is <code>65535</code>.</p>
</li>
<li>
-<p>End-to-end flow control.</p>
+<p>Enables the router to enforce the connection denials and resource limits defined in the configured vhost policies. The default is <code>false</code>, which means that the router will not enforce any vhost policies.</p>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
<div class="paragraph">
-<p>Flow control is "real" in that credits flow across the link route from the receiver to the sender.</p>
+<p>Setting <code>enableVhostPolicy</code> to <code>false</code> improves the router’s performance.</p>
+</div>
+</td>
+</tr>
+</table>
</div>
</li>
<li>
-<p>Transaction support.</p>
-<div class="paragraph">
-<p>Link routing supports local transactions to a broker.</p>
-</div>
+<p>The absolute path to a directory that holds vhost policy definition files in JSON format (<code>*.json</code>). The router processes all of the vhost policies in each JSON file that is in this directory. For more information, see <a href="#configuring-vhost-policies-json">Configuring Vhost Policies as JSON Files</a>.</p>
</li>
<li>
-<p>Server-side selectors.</p>
-<div class="paragraph">
-<p>With a link route, consumers can provide server-side selectors for broker subscriptions.</p>
+<p>The name of the default vhost policy, which is applied to any connection for which a vhost policy has not been configured. The default is <code>$default</code>. If <code>defaultVhost</code> is not defined, then default vhost processing is disabled.</p>
+</li>
+</ol>
+</div>
+</div>
</div>
</li>
</ul>
</div>
</div>
-</div>
-<div class="sect2">
-<h3 id="configuring_message_routing">7.2. Configuring Message Routing</h3>
+<div class="sect3">
+<h4 id="configuring_vhost_policies">6.2.4. Configuring Vhost Policies</h4>
<div class="paragraph">
-<p>With message routing, routing is performed on messages as producers send them to a router. When a message arrives on a router, the router routes the message and its <em>settlement</em> based on the message’s <em>address</em> and <em>routing pattern</em>.</p>
+<p>You configure vhost policies to define the connection limits and AMQP resource limits for a messaging endpoint.</p>
</div>
<div class="paragraph">
-<p>With message routing, you can do the following:</p>
+<p>A vhost policy consists of the following:</p>
</div>
<div class="ulist">
<ul>
<li>
-<p>Route messages between clients (direct-routed, or brokerless messaging)</p>
+<p>Connection limits</p>
<div class="paragraph">
-<p>This involves configuring an address with a routing pattern. All messages sent to the address will be routed based on the routing pattern.</p>
+<p>These limits control the number of users that can be connected to the vhost simultaneously.</p>
</div>
</li>
<li>
-<p>Route messages through a broker queue (brokered messaging)</p>
+<p>User groups</p>
<div class="paragraph">
-<p>This involves configuring a waypoint address to identify the broker queue and then connecting the router to the broker. All messages sent to the waypoint address will be routed to the broker queue.</p>
+<p>A user group defines the messaging resources that the group members are permitted to access. Each user group defines the following:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>A set of users that can connect to the vhost (the group members)</p>
+</li>
+<li>
+<p>The remote hosts from which the group members may connect to the router network</p>
+</li>
+<li>
+<p>The AMQP resources that the group members are permitted to access on the vhost</p>
+</li>
+</ul>
</div>
</li>
</ul>
</div>
-<div class="sect3">
-<h4 id="addresses_2">7.2.1. Addresses</h4>
<div class="paragraph">
-<p>Addresses determine how messages flow through your router network. An address designates an endpoint in your messaging network, such as:</p>
+<p>You can use the following methods to configure vhost policies:</p>
</div>
<div class="ulist">
<ul>
<li>
-<p>Endpoint processes that consume data or offer a service</p>
+<p><a href="#configuring-vhost-policies-router">Configure vhost policies directly in the router configuration file</a></p>
</li>
<li>
-<p>Topics that match multiple consumers to multiple producers</p>
+<p><a href="#configuring-vhost-policies-json">Configure vhost policies as JSON files</a></p>
</li>
+</ul>
+</div>
+<div class="sect4">
+<h5 id="configuring-vhost-policies-router">Configuring Vhost Policies in the Router Configuration File</h5>
+<div class="paragraph">
+<p>You can configure vhost policies in the router configuration file by configuring <code>vhost</code> entities. However, if multiple routers in your router network should be configured with the same vhost configuration, you will need to add the <code>vhost</code> configuration to each router’s configuration file.</p>
+</div>
+<div class="olist arabic">
+<div class="title">Procedure</div>
+<ol class="arabic">
<li>
-<p>Entities within a messaging broker:</p>
-<div class="ulist">
-<ul>
+<p>In the router configuration file, add a <code>vhost</code> section and define the connection limits for it.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>The connection limits apply to all users that are connected to the vhost. These limits control the number of users that can be connected simultaneously to the vhost.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">vhost = {
+ hostname: example.com <b class="conum">(1)</b>
+ maxConnections: 10000 <b class="conum">(2)</b>
+ maxConnectionsPerUser: 1000 <b class="conum">(3)</b>
+ maxConnectionsPerHost: 1000 <b class="conum">(4)</b>
+ allowUnknownUser: false <b class="conum">(5)</b>
+ ...
+}</pre>
+</div>
+</div>
+<div class="colist arabic">
+<ol>
<li>
-<p>Queues</p>
+<p>The host name of the vhost. This vhost policy will be applied to any client connection that is directed to the hostname that you specify.</p>
</li>
<li>
-<p>Durable Topics</p>
+<p>The global maximum number of concurrent client connections allowed for this vhost. The default is <code>65535</code>.</p>
</li>
<li>
-<p>Exchanges</p>
+<p>The maximum number of concurrent client connections allowed for any user. The default is <code>65535</code>.</p>
</li>
-</ul>
-</div>
+<li>
+<p>The maximum number of concurrent client connections allowed for any remote host (the host from which the client is connecting). The default is <code>65535</code>.</p>
</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>When a router receives a message, it uses the message’s address to determine where to send the message (either its destination or one step closer to its destination).</p>
+<li>
+<p>Whether unknown users (users who are not members of a defined user group) are allowed to connect to the vhost. Unknown users are assigned to the <code>$default</code> user group and receive <code>$default</code> settings. The default is <code>false</code>, which means that unknown users are not allowed.</p>
+</li>
+</ol>
</div>
</div>
-<div class="sect3">
-<h4 id="routing_patterns_overview">7.2.2. Routing Patterns</h4>
-<div class="paragraph">
-<p>Each address has one of the following routing patterns, which define the path that a message with the address can take across the messaging network:</p>
</div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">Balanced</dt>
-<dd>
-<p>An anycast method that allows multiple consumers to use the same address. Each message is delivered to a single consumer only, and Dispatch Router attempts to balance the traffic load across the router network.</p>
+</li>
+<li>
+<p>In the <code>vhost</code> section, beneath the connection settings that you added, add the necessary user groups.</p>
<div class="openblock">
<div class="content">
<div class="paragraph">
-<p>If multiple consumers are attached to the same address, each router determines which outbound path should receive a message by considering each path’s current number of unsettled deliveries. This means that more messages will be delivered along paths where deliveries are settled at higher rates.</p>
+<p>A user group defines what messaging resources the members of the group are allowed to access.</p>
</div>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<div class="title">Note</div>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>Dispatch Router neither measures nor uses message settlement time to determine which outbound path to use.</p>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">vhost {
+ ...
+ groups: {
+ admin: { <b class="conum">(1)</b>
+ users: admin1, admin2 <b class="conum">(2)</b>
+ remoteHosts: 127.0.0.1, ::1 <b class="conum">(3)</b>
+ sources: * <b class="conum">(4)</b>
+ targets: * <b class="conum">(5)</b>
+ },
+ ...
+ }
+}</pre>
</div>
-</td>
-</tr>
-</table>
+</div>
+<div class="colist arabic">
+<ol>
+<li>
+<p>The name of the user group.</p>
+</li>
+<li>
+<p>A list of authenticated users for this user group. Use commas to separate multiple users. A user may belong to only one vhost user group.</p>
+</li>
+<li>
+<p>A list of remote hosts from which the users may connect. A host can be a hostname, IP address, or IP address range. Use commas to separate multiple hosts. To allow access from all remote hosts, specify a wildcard <code>*</code>. To deny access from all remote hosts, leave this attribute blank.</p>
+</li>
+<li>
+<p>A list of AMQP source addresses from which users in this group may receive messages. To specify multiple AMQP addresses, separate the addresses with either a comma or a space. If you do not specify any addresses, users in this group are not allowed to receive messages from any addresses.</p>
+<div class="paragraph">
+<p>You can use the substitution token <code>{user}</code> to specify an AMQP address that contains a user’s authenticated user name. This enables you to allow access to resources specific to each user in the user group without having to name each user individually. You can only specify the <code>{user}</code> token once in an AMQP address name. If there are multiple tokens in an address, only the leftmost token will be substituted.</p>
</div>
<div class="paragraph">
-<p>In this scenario, the messages are spread across both receivers regardless of path length:</p>
+<p>You can use an asterisk (<code>*</code>) wildcard to match one or more characters in an AMQP address. However, this wildcard is only recognized if it is the last character in the address name.</p>
</div>
-<div class="imageblock" style="text-align: center">
+<div class="exampleblock">
+<div class="title">Example 3. Allowing Access to All Addresses</div>
<div class="content">
-<img src="images/balanced-routing.png" alt="Balanced Message Routing">
-</div>
-<div class="title">Figure 4. Balanced Message Routing</div>
-</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">sources: *</pre>
</div>
</div>
-</dd>
-<dt class="hdlist1">Closest</dt>
-<dd>
-<p>An anycast method in which every message is sent along the shortest path to reach the destination, even if there are other consumers for the same address.</p>
-<div class="paragraph">
-<p>Dispatch Router determines the shortest path based on the topology cost to reach each of the consumers. If there are multiple consumers with the same lowest cost, messages will be spread evenly among those consumers.</p>
</div>
-<div class="paragraph">
-<p>In this scenario, all messages sent by <code>Sender</code> will be delivered to <code>Receiver 1</code>:</p>
</div>
-<div class="imageblock" style="text-align: center">
+<div class="exampleblock">
+<div class="title">Example 4. Restricting Access to All Addresses</div>
<div class="content">
-<img src="images/closest-routing.png" alt="Closest Message Routing">
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">sources:</pre>
</div>
-<div class="title">Figure 5. Closest Message Routing</div>
</div>
-</dd>
-<dt class="hdlist1">Multicast</dt>
-<dd>
-<p>Messages are sent to all consumers attached to the address. Each consumer will receive one copy of the message.</p>
-<div class="paragraph">
-<p>In this scenario, all messages are sent to all receivers:</p>
</div>
-<div class="imageblock" style="text-align: center">
+</div>
+<div class="exampleblock">
+<div class="title">Example 5. Allowing Access to Specific Addresses</div>
<div class="content">
-<img src="images/multicast-routing.png" alt="Multicast Message Routing">
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">sources: myaddress01, myaddress02, myaddress03</pre>
</div>
-<div class="title">Figure 6. Multicast Message Routing</div>
</div>
-</dd>
-</dl>
</div>
</div>
-<div class="sect3">
-<h4 id="message_settlement_2">7.2.3. Message Settlement</h4>
+<div class="exampleblock">
+<div class="title">Example 6. Allowing Access to User-Specific Addresses</div>
+<div class="content">
<div class="paragraph">
-<p>Message settlement is negotiated between the producer and the router when the producer establishes a link to the router. Depending on the settlement pattern, messages might be delivered with any of the following degrees of reliability:</p>
+<p>This definition allows access to any address that meets any of the following rules:</p>
</div>
<div class="ulist">
<ul>
<li>
-<p>At most once</p>
+<p>Starts with the prefix <code>tmp_</code> and ends with the user name</p>
</li>
<li>
-<p>At least once</p>
+<p>Starts with the prefix <code>temp</code> followed by any additional characters</p>
</li>
<li>
-<p>Exactly once</p>
+<p>Starts with the user name, is followed by <code>-home-</code>, and ends with any additional characters</p>
</li>
</ul>
</div>
-<div class="paragraph">
-<p>Dispatch Router treats all messages as either <em>pre-settled</em> or <em>unsettled</em>, and it is responsible for propagating the settlement of each message it routes.</p>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">sources: tmp_{user}, temp*, {user}-home-*</pre>
+</div>
</div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">Pre-settled</dt>
-<dd>
-<p>Sometimes called <em>fire and forget</em>, the router settles the incoming and outgoing deliveries and propagates the settlement to the message’s destination. However, it does not guarantee delivery.</p>
-</dd>
-<dt class="hdlist1">Unsettled</dt>
-<dd>
-<p>The router propagates the settlement between the sender and receiver, and guarantees one of the following outcomes:</p>
-<div class="ulist">
-<ul>
-<li>
-<p>The message is delivered and settled, with the consumer’s disposition indicated.</p>
-</li>
-<li>
-<p>The delivery is settled with a disposition of <code>RELEASED</code>.</p>
-<div class="paragraph">
-<p>This means that the message did not reach its destination.</p>
</div>
-</li>
-<li>
-<p>The delivery is settled with a disposition of <code>MODIFIED</code>.</p>
-<div class="paragraph">
-<p>This means that the message might or might not have reached its destination. The delivery is considered to be "in-doubt" and should be re-sent if "at least once" delivery is required.</p>
</div>
</li>
<li>
-<p>The link, session, or connection to Dispatch Router was dropped, and all deliveries are "in-doubt".</p>
+<p>A list of AMQP target addresses from which users in this group may send messages. You can specify multiple AMQP addresses and use user name substitution and wildcards the same way as with source addresses.</p>
</li>
-</ul>
+</ol>
</div>
-</dd>
-</dl>
</div>
</div>
-<div class="sect3">
-<h4 id="routing_messages_between_clients">7.2.4. Routing Messages Between Clients</h4>
+</li>
+<li>
+<p>If necessary, add any advanced user group settings to the vhost user group.</p>
<div class="paragraph">
-<p>You can route messages between clients without using a broker. In a brokerless scenario (sometimes called <em>direct-routed messaging</em>), Dispatch Router routes messages between clients directly.</p>
+<p>The advanced user group settings enable you to define resource limits based on the AMQP connection open, session begin, and link attach phases of the connection. For more information, see <a href="https://qpid.apache.org/releases/qpid-dispatch-1.0.1/man/qdrouterd.conf.html#_vhostUserGroupSettings" target="_blank" rel="noopener">Vhost User Group Settings</a>.</p>
+</div>
+</li>
+</ol>
+</div>
</div>
+<div class="sect4">
+<h5 id="configuring-vhost-policies-json">Configuring Vhost Policies as JSON Files</h5>
<div class="paragraph">
-<p>To route messages between clients, you configure an address with a routing distribution pattern. When a router receives a message with this address, the message is routed to its destination or destinations based on the address’s routing distribution pattern.</p>
+<p>As an alternative to using the router configuration file, you can configure vhost policies in JSON files. If you have multiple routers that need to share the same vhost configuration, you can put the vhost configuration JSON files in a location accessible to each router, and then configure the routers to apply the vhost policies defined in these JSON files.</p>
</div>
<div class="olist arabic">
<div class="title">Procedure</div>
<ol class="arabic">
<li>
-<p>In the router’s configuration file, add an <code>address</code> section:</p>
-<div class="openblock">
+<p>Determine where to store the vhost policy JSON files.</p>
+<div class="paragraph">
+<p>The directory should be accessible by each router that needs to apply these vhost policies.</p>
+</div>
+</li>
+<li>
+<p>In the directory you determined, create a JSON file for each vhost policy.</p>
+<div class="paragraph">
+<p>The vhost policy is configured the same way as a <code>vhost</code> entity in the router configuration file, only using JSON syntax. For more information about vhost policy attributes, see <a href="#configuring-vhost-policies-router">Configuring Vhost Policies in the Router Configuration File</a>.</p>
+</div>
+<div class="exampleblock">
+<div class="title">Example 7. Sample Vhost Policy JSON File</div>
<div class="content">
<div class="listingblock">
<div class="content">
-<pre class="nowrap">address {
- prefix: <em>ADDRESS_PREFIX</em>
- distribution: balanced|closest|multicast
- ...
-}</pre>
+<pre class="highlightjs highlight nowrap"><code class="language-json hljs" data-lang="json">{
+ "vhost": {
+ "name": "example.com",
+ "maxConnectionsPerUser": 100,
+ "allowUnknownUser": true,
+ "groups": {
+ "admin": {
+ "users": ["admin1", "admin2"],
+ "sources": "*",
+ "targets": "*"
+ },
+ "developers": {
+ "users": ["dev1", "dev2", "dev3"],
+ "remoteHosts": "*",
+ "sources": ["myqueue1", "myqueue2"],
+ "targets": ["myqueue1", "myqueue2"]
+ }
+ }
+ }
+}</code></pre>
</div>
</div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"><code>prefix</code> | <code>pattern</code></dt>
-<dd>
-<p>The address or group of addresses to which the address settings should be applied. You can specify a prefix to match an exact address or beginning segment of an address. Alternatively, you can specify a pattern to match an address using wildcards.</p>
-<div class="paragraph">
-<p>A <em>prefix</em> matches either an exact address or the beginning segment within an address that is delimited by either a <code>.</code> or <code>/</code> character. For example, the prefix <code>my_address</code> would match the address <code>my_address</code> as well as <code>my_address.1</code> and <code>my_address/1</code>. However, it would not match <code>my_address1</code>.</p>
</div>
-<div class="paragraph">
-<p>A <em>pattern</em> matches an address that corresponds to a pattern. A pattern is a sequence of words delimited by either a <code>.</code> or <code>/</code> character. You can use wildcard characters to represent a word. The <code>*</code> character matches exactly one word, and the <code>#</code> character matches any sequence of zero or more words.</p>
</div>
-<div class="paragraph">
-<p>The <code>*</code> and <code>#</code> characters are reserved as wildcards. Therefore, you should not use them in the message address.</p>
+</li>
+<li>
+<p>In the router configuration file, locate the <code>policy</code> entity and set the <code>policyDir</code> attribute to point to the directory where the vhost policy JSON files are stored.</p>
+<div class="exampleblock">
+<div class="title">Example 8. A <code>policy</code> Entity</div>
+<div class="content">
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">policy = {
+ maxConnections: 1000
+ enableVhostPolicy: true
+ policyDir: /etc/vhost-policies/ <b class="conum">(1)</b>
+ defaultVhost: $default
+}</pre>
</div>
-<div class="paragraph">
-<p>The following table shows some examples of address patterns:</p>
</div>
-<table class="tableblock frame-all grid-all spread">
-<colgroup>
-<col style="width: 25%;">
-<col style="width: 75%;">
-</colgroup>
-<tbody>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">This pattern…​</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Matches…​</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>news</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>news</code></p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>news/*/sports</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>news/europe/sports</code> and <code>news/usa/sports</code>, but not <code>news</code> or <code>news/europe/fr/sports</code></p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>news/#</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>news</code>, <code>news/europe</code>, <code>news/usa</code>, <code>news/usa/sports</code></p></td>
-</tr>
-</tbody>
-</table>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<div class="title">Note</div>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>You can convert a <code>prefix</code> value to a <code>pattern</code> by appending <code>/#</code> to it. For example, the prefix <code>a/b/c</code> is equivalent to the pattern <code>a/b/c/#</code>.</p>
+<div class="colist arabic">
+<ol>
+<li>
+<p>The absolute path to a directory that holds vhost policy definition files in JSON format (*.json). The router processes all of the vhost policies in each JSON file that is in this directory.</p>
+</li>
+</ol>
+</div>
</div>
-</td>
-</tr>
-</table>
</div>
-</dd>
-<dt class="hdlist1"><code>distribution</code></dt>
-<dd>
-<p>The message distribution pattern. The default is <code>balanced</code>, but you can specify any of the following options:</p>
-<div class="ulist">
-<ul>
-<li>
-<p><code>balanced</code> - Messages sent to the address will be routed to one of the receivers, and the routing network will attempt to balance the traffic load based on the rate of settlement.</p>
</li>
<li>
-<p><code>closest</code> - Messages sent to the address are sent on the shortest path to reach the destination. It means that if there are multiple receivers for the same address, only the closest one will receive the message.</p>
+<p>Repeat the previous step for each additional router that should use the vhost policies located in the vhost policy directory.</p>
</li>
-<li>
-<p><code>multicast</code> - Messages are sent to all receivers that are attached to the address in a <em>publish/subscribe</em> model.</p>
-<div class="paragraph">
-<p>For more information about message distribution patterns, see <a href="#routing_patterns_overview">Routing Patterns</a>.</p>
+</ol>
</div>
-</li>
-</ul>
</div>
-</dd>
-</dl>
</div>
+<div class="sect3">
+<h4 id="example_configuring_a_vhost_policy">6.2.5. Example: Configuring a Vhost Policy</h4>
<div class="paragraph">
-<p>For information about additional attributes, see <a href="#router_configuration_file_address">Address</a> in the <em>Configuration Reference</em>.</p>
+<p>In this example, a vhost policy defines resource limits for clients connecting to the <code>example.com</code> host.</p>
</div>
+<div class="exampleblock">
+<div class="title">Example 9. A Vhost Policy in the Router Configuration File</div>
+<div class="content">
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">vhost {
+ name: example.com <b class="conum">(1)</b>
+ maxConnectionsPerUser: 10 <b class="conum">(2)</b>
+ allowUnknownUser: true <b class="conum">(3)</b>
+ groups: {
+ admin: {
+ users: admin-01, admin-02 <b class="conum">(4)</b>
+ remoteHosts: 127.0.0.1, ::1 <b class="conum">(5)</b>
+ sources: * <b class="conum">(6)</b>
+ targets: * <b class="conum">(6)</b>
+ },
+ $default: {
+ remoteHosts: * <b class="conum">(7)</b>
+ sources: news*, sports*, chat* <b class="conum">(8)</b>
+ targets: chat* <b class="conum">(9)</b>
+ }
+ }
+}</pre>
</div>
</div>
+<div class="colist arabic">
+<ol>
+<li>
+<p>The rules defined in this vhost policy will be applied to any user connecting to <code>example.com</code>.</p>
</li>
<li>
-<p>Add the same <code>address</code> section to any other routers that need to use the address.</p>
-<div class="paragraph">
-<p>The <code>address</code> that you added to this router configuration file only controls how this router distributes messages sent to the address. If you have additional routers in your router network that should distribute messages for this address, then you must add the same <code>address</code> section to each of their configuration files.</p>
-</div>
+<p>Each user can open up to 10 connections to the vhost.</p>
+</li>
+<li>
+<p>Any user can connect to this vhost. Users that are not part of the <code>admin</code> group are assigned to the <code>$default</code> group.</p>
+</li>
+<li>
+<p>If the <code>admin-01</code> or <code>admin-02</code> user connects to the vhost, they are assigned to the <code>admin</code> user group.</p>
+</li>
+<li>
+<p>Users in the <code>admin</code> user group must connect from localhost. If the admin user attempts to connect from any other host, the connection will be denied.</p>
+</li>
+<li>
+<p>Users in the admin user group can send and receive from any address offered by the vhost.</p>
+</li>
+<li>
+<p>Any non-admin user is permitted to connect from any host.</p>
+</li>
+<li>
+<p>Non-admin users are permitted to receive messages from any addresses that start with the <code>news</code>, <code>sports</code>, or <code>chat</code> prefixes.</p>
+</li>
+<li>
+<p>Non-admin users are permitted to send messages to any address that start with the <code>chat</code> prefix.</p>
</li>
</ol>
</div>
</div>
+</div>
+</div>
<div class="sect3">
-<h4 id="routing_messages_through_broker">7.2.5. Routing Messages Through a Broker Queue</h4>
+<h4 id="example_using_a_vhost_policy_to_limit_memory_consumption_advanced">6.2.6. Example: Using a Vhost Policy to Limit Memory Consumption (Advanced)</h4>
<div class="paragraph">
-<p>You can route messages to and from a broker queue to provide clients with access to the queue through a router. In this scenario, clients connect to a router to send and receive messages, and the router routes the messages to or from the broker queue.</p>
+<p>By using the advanced vhost policy attributes, you can control how much system buffer memory a user connection can potentially consume.</p>
</div>
<div class="paragraph">
-<p>You
<TRUNCATED>
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org
[5/8] qpid-site git commit: QPID-8154: Add missing images to the
Dispatch user guide; regen the master doc snapshot
Posted by jr...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/input/releases/qpid-dispatch-master/index.md
----------------------------------------------------------------------
diff --git a/input/releases/qpid-dispatch-master/index.md b/input/releases/qpid-dispatch-master/index.md
index 321aa48..dfb61af 100644
--- a/input/releases/qpid-dispatch-master/index.md
+++ b/input/releases/qpid-dispatch-master/index.md
@@ -27,7 +27,7 @@ Documentation found here may be incorrect or incomplete. For a
smoother experience, see the [current stable
release]({{current_dispatch_release_url}}/index.html).
-This content was generated at 11:21 on Tuesday, 28 November 2017.
+This content was generated at 07:00 on Saturday, 28 April 2018.
</div>
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/input/releases/qpid-dispatch-master/man/qdrouterd.conf.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-dispatch-master/man/qdrouterd.conf.html.in b/input/releases/qpid-dispatch-master/man/qdrouterd.conf.html.in
index fd6853a..3582bdd 100644
--- a/input/releases/qpid-dispatch-master/man/qdrouterd.conf.html.in
+++ b/input/releases/qpid-dispatch-master/man/qdrouterd.conf.html.in
@@ -54,9 +54,9 @@ attribute of <em>sslProfile</em> sections.</p></div>
<div class="content">
<pre><code>sslProfile {
name: my-ssl
- certDb: ca-certificate-1.pem
+ caCertFile: ca-certificate-1.pem
certFile: server-certificate-1.pem
- keyFile: server-private-key.pem
+ privateKeyFile: server-private-key.pem
}
listener {
@@ -92,7 +92,7 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>helloInterval</em> (integer, default=<em>1</em>)
+<em>helloIntervalSeconds</em> (integer, default=<em>1</em>)
</dt>
<dd>
<p>
@@ -100,7 +100,7 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>helloMaxAge</em> (integer, default=<em>3</em>)
+<em>helloMaxAgeSeconds</em> (integer, default=<em>3</em>)
</dt>
<dd>
<p>
@@ -108,7 +108,7 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>raInterval</em> (integer, default=<em>30</em>)
+<em>raIntervalSeconds</em> (integer, default=<em>30</em>)
</dt>
<dd>
<p>
@@ -116,7 +116,7 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>raIntervalFlux</em> (integer, default=<em>4</em>)
+<em>raIntervalFluxSeconds</em> (integer, default=<em>4</em>)
</dt>
<dd>
<p>
@@ -124,7 +124,7 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>remoteLsMaxAge</em> (integer, default=<em>60</em>)
+<em>remoteLsMaxAgeSeconds</em> (integer, default=<em>60</em>)
</dt>
<dd>
<p>
@@ -140,15 +140,15 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>debugDump</em> (path)
+<em>debugDumpFile</em> (path)
</dt>
<dd>
<p>
- A file to dump debugging information that can’t be logged normally.
+ The absolute path to the location for the debug dump file. The router writes debug-level information to this file if the logger is not available.
</p>
</dd>
<dt class="hdlist1">
-<em>saslConfigPath</em> (path)
+<em>saslConfigDir</em> (path)
</dt>
<dd>
<p>
@@ -164,11 +164,19 @@ listener {
</p>
</dd>
<dt class="hdlist1">
+<em>allowResumableLinkRoute</em> (boolean, default=<em>True</em>)
+</dt>
+<dd>
+<p>
+ Whether links can be routed where timeout is non-zero or expiry-policy is not link-detach
+</p>
+</dd>
+<dt class="hdlist1">
<em>allowUnsettledMulticast</em> (boolean)
</dt>
<dd>
<p>
- If true, allow senders to send unsettled deliveries to multicast addresses. These deliveries shall be settled by the ingress router. If false, unsettled deliveries to multicast addresses shall be rejected.
+ (DEPRECATED) If true, allow senders to send unsettled deliveries to multicast addresses. These deliveries shall be settled by the ingress router. If false, unsettled deliveries to multicast addresses shall be rejected.
</p>
</dd>
<dt class="hdlist1">
@@ -179,6 +187,62 @@ listener {
Default forwarding treatment for any address without a specified treatment. multicast - one copy of each message delivered to all subscribers; closest - messages delivered to only the closest subscriber; balanced - messages delivered to one subscriber with load balanced across subscribers; unavailable - this address is unavailable, link attaches to an address of unavilable distribution will be rejected.
</p>
</dd>
+<dt class="hdlist1">
+<em>helloInterval</em> (integer, default=<em>1</em>)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) Interval in seconds between HELLO messages sent to neighbor routers. This attribute has been deprecated. Use helloIntervalSeconds instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>helloMaxAge</em> (integer, default=<em>3</em>)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) Time in seconds after which a neighbor is declared lost if no HELLO is received. This attribute has been deprecated. Use helloMaxAgeSeconds instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>raInterval</em> (integer, default=<em>30</em>)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) Interval in seconds between Router-Advertisements sent to all routers in a stable network. This attribute has been deprecated. Use raIntervalSeconds instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>raIntervalFlux</em> (integer, default=<em>4</em>)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) Interval in seconds between Router-Advertisements sent to all routers during topology fluctuations. This attribute has been deprecated. Use raIntervalFluxSeconds instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>remoteLsMaxAge</em> (integer, default=<em>60</em>)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) Time in seconds after which link state is declared stale if no RA is received. This attribute has been deprecated. Use remoteLsMaxAgeSeconds instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>debugDump</em> (path)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) The absolute path to the location for the debug dump file. The router writes debug-level information to this file if the logger is not available. This attribute has been deprecated. Use debugDumpFile instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>saslConfigPath</em> (path)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) Absolute path to the SASL configuration file. This attribute has been deprecated. Use saslConfigDir instead.
+</p>
+</dd>
</dl></div>
</div>
<div class="sect2">
@@ -194,7 +258,15 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>certDb</em> (path)
+<em>protocols</em> (string)
+</dt>
+<dd>
+<p>
+ The TLS protocols that this sslProfile can use. You can specify a list of one or more of TLSv1, TLSv1.1, or TLSv1.2. To specify multiple protocols, separate the protocols with a space. For example, to permit the sslProfile to use TLS v1.1 and TLS v1.2 only, you would set the value to TLSv1.1 TLSv1.2. If you do not specify a value, the sslProfile uses the TLS protocol specified by the system-wide configuration.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>caCertFile</em> (path)
</dt>
<dd>
<p>
@@ -210,7 +282,7 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>keyFile</em> (path)
+<em>privateKeyFile</em> (path)
</dt>
<dd>
<p>
@@ -222,7 +294,7 @@ listener {
</dt>
<dd>
<p>
- If the above private key is password protected, this is the absolute path to a file containing the password that unlocks the certificate key.
+ If the above private key is password protected, this is the absolute path to a file containing the password that unlocks the certificate key. This file should be permission protected to limit access
</p>
</dd>
<dt class="hdlist1">
@@ -230,7 +302,7 @@ listener {
</dt>
<dd>
<p>
- An alternative to storing the password in a file referenced by passwordFile is to supply the password right here in the configuration file. This takes precedence over the passwordFile if both are specified.
+ (DEPRECATED) An alternative to storing the password in a file referenced by passwordFile is to supply the password right here in the configuration file. This takes precedence over the passwordFile if both are specified. This attribute has been deprecated because it is unsafe to store plain text passwords in config files. Use the passwordFile instead
</p>
</dd>
<dt class="hdlist1">
@@ -242,13 +314,37 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>displayNameFile</em> (string)
+<em>uidNameMappingFile</em> (string)
</dt>
<dd>
<p>
The absolute path to the file containing the unique id to display name mapping
</p>
</dd>
+<dt class="hdlist1">
+<em>certDb</em> (path)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) The absolute path to the database that contains the public certificates of trusted certificate authorities (CA). This attribute has been deprecated. Use caCertFile instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>keyFile</em> (path)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) The absolute path to the file containing the PEM-formatted private key for the above certificate. This attribute has been deprecated. Use privateKeyFile instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>displayNameFile</em> (string)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) The absolute path to the file containing the unique id to display name mapping This attribute has been deprecated. Use uidNameMappingFile instead.
+</p>
+</dd>
</dl></div>
</div>
<div class="sect2">
@@ -256,15 +352,31 @@ listener {
<div class="paragraph"><p>EXPERIMENTAL. Attributes for setting SASL plugin.</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
-<em>authService</em> (string, required)
+<em>authService</em> (string)
</dt>
<dd>
<p>
- Address of a service to delegate authentication to.
+ (DEPRECATED) Address of a service to delegate authentication to. This attribute has been deprecated. Use the host and port attributes instead.
</p>
</dd>
<dt class="hdlist1">
-<em>saslInitHostname</em> (string)
+<em>host</em> (string)
+</dt>
+<dd>
+<p>
+ A host name, IPV4 or IPV6 literal, of the service to delegate to.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>port</em> (string, default=<em>amqp</em>)
+</dt>
+<dd>
+<p>
+ Port number of the service delegated host.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>realm</em> (string)
</dt>
<dd>
<p>
@@ -272,13 +384,29 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>authSslProfile</em> (string)
+<em>sslProfile</em> (string)
</dt>
<dd>
<p>
Name of the sslProfile to use for the authentication service.
</p>
</dd>
+<dt class="hdlist1">
+<em>saslInitHostname</em> (string)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) Value to set for hostname field on sasl-init This attribute has been deprecated. Use realm instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>authSslProfile</em> (string)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) Name of the sslProfile to use for the authentication service. This attribute has been deprecated. Use sslProfile instead.
+</p>
+</dd>
</dl></div>
</div>
<div class="sect2">
@@ -298,11 +426,11 @@ listener {
</dt>
<dd>
<p>
- Port number or symbolic service name.
+ Port number or symbolic service name. If <em>0</em>, the router shall assign an ephemeral port to the listener and log the port number with a log of the form <em>SERVER (notice) Listening on <host>:<assigned-port> (<listener-name>)</em>
</p>
</dd>
<dt class="hdlist1">
-<em>protocolFamily</em> (One of [<em>IPv4</em>, <em>IPv6</em>])
+<em>socketAddressFamily</em> (One of [<em>IPv4</em>, <em>IPv6</em>])
</dt>
<dd>
<p>
@@ -374,7 +502,7 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>trustedCerts</em> (path)
+<em>trustedCertsFile</em> (path)
</dt>
<dd>
<p>
@@ -446,7 +574,7 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>failoverList</em> (string)
+<em>failoverUrls</em> (string)
</dt>
<dd>
<p>
@@ -462,7 +590,7 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>httpRoot</em> (path)
+<em>httpRootDir</em> (path)
</dt>
<dd>
<p>
@@ -470,13 +598,53 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>logMessage</em> (string, default=<em>none</em>)
+<em>messageLoggingComponents</em> (string, default=<em>none</em>)
</dt>
<dd>
<p>
A comma separated list that indicates which components of the message should be logged. Defaults to <em>none</em> (log nothing). If you want all properties and application properties of the message logged use <em>all</em>. Specific components of the message can be logged by indicating the components via a comma separated list. The components are message-id, user-id, to, subject, reply-to, correlation-id, content-type, content-encoding, absolute-expiry-time, creation-time, group-id, group-sequence, reply-to-group-id, app-properties. The application-data part of the bare message will not be logged. No spaces are allowed
</p>
</dd>
+<dt class="hdlist1">
+<em>protocolFamily</em> (One of [<em>IPv4</em>, <em>IPv6</em>])
+</dt>
+<dd>
+<p>
+ (DEPRECATED) [<em>IPv4</em>, <em>IPv6</em>] IPv4: Internet Protocol version 4; IPv6: Internet Protocol version 6. If not specified, the protocol family will be automatically determined from the address. This attribute has been deprecated. Use socketAddressFamily instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>trustedCerts</em> (path)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) This optional setting can be used to reduce the set of available CAs for client authentication. If used, this setting must provide the absolute path to a PEM file that contains the trusted certificates. This attribute has been deprecated. Use trustedCertsFile instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>failoverList</em> (string)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) A comma-separated list of failover urls to be supplied to connected clients. Form: [(amqp|amqps|ws|wss)://]host_or_ip[:port] This attribute has been deprecated. Use failoverUrls instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>httpRoot</em> (path)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) Serve HTTP files from this directory, defaults to the installed stand-alone console directory This attribute has been deprecated. Use httpRootDir instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>logMessage</em> (string, default=<em>none</em>)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) A comma separated list that indicates which components of the message should be logged. Defaults to <em>none</em> (log nothing). If you want all properties and application properties of the message logged use <em>all</em>. Specific components of the message can be logged by indicating the components via a comma separated list. The components are message-id, user-id, to, subject, reply-to, correlation-id, content-type, content-encoding, absolute-expiry-time, creation-time, group-id, group-sequence, reply-to-group-id, app-properties. The application-data part of the bare message will not be logged. No spaces are allowed This attribute has been deprecated. Use messageLoggingComponents instead.
+</p>
+</dd>
</dl></div>
</div>
<div class="sect2">
@@ -596,7 +764,7 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>verifyHostName</em> (boolean, default=<em>True</em>)
+<em>verifyHostname</em> (boolean, default=<em>True</em>)
</dt>
<dd>
<p>
@@ -620,13 +788,29 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>logMessage</em> (string, default=<em>none</em>)
+<em>messageLoggingComponents</em> (string, default=<em>none</em>)
</dt>
<dd>
<p>
A comma separated list that indicates which components of the message should be logged (no spaces allowed between list components). Defaults to <em>none</em> (log nothing). If you want all properties and application properties of the message logged use <em>all</em>. Specific components of the message can be logged by indicating the components via a comma separated list. The components are message-id, user-id, to, subject, reply-to, correlation-id, content-type, content-encoding, absolute-expiry-time, creation-time, group-id, group-sequence, reply-to-group-id, app-properties. The application-data part of the bare message will not be logged. This log message is written to the MESSAGE logging module. In the <em>log</em> entity, set <em>module</em> property to MESSAGE or DEFAULT and <em>enable</em> to trace+ to see this log message
</p>
</dd>
+<dt class="hdlist1">
+<em>verifyHostName</em> (boolean, default=<em>True</em>)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) yes: Ensures that when initiating a connection (as a client) the host name in the URL to which this connector connects to matches the host name in the digital certificate that the peer sends back as part of the SSL connection; no: Does not perform host name verification This attribute has been deprecated. Use verifyHostname instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>logMessage</em> (string, default=<em>none</em>)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) A comma separated list that indicates which components of the message should be logged (no spaces allowed between list components). Defaults to <em>none</em> (log nothing). If you want all properties and application properties of the message logged use <em>all</em>. Specific components of the message can be logged by indicating the components via a comma separated list. The components are message-id, user-id, to, subject, reply-to, correlation-id, content-type, content-encoding, absolute-expiry-time, creation-time, group-id, group-sequence, reply-to-group-id, app-properties. The application-data part of the bare message will not be logged. This log message is written to the MESSAGE logging module. In the <em>log</em> entity, set <em>module</em> property to MESSAGE or DEFAULT and <em>enable</em> to trace+ to see this log message This attribute has been deprecated. Use messageLoggingComponents instead.
+</p>
+</dd>
</dl></div>
</div>
<div class="sect2">
@@ -650,7 +834,7 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>timestamp</em> (boolean)
+<em>includeTimestamp</em> (boolean)
</dt>
<dd>
<p>
@@ -658,7 +842,7 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>source</em> (boolean)
+<em>includeSource</em> (boolean)
</dt>
<dd>
<p>
@@ -666,13 +850,37 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>output</em> (string)
+<em>outputFile</em> (string)
</dt>
<dd>
<p>
Where to send log messages. Can be <em>stderr</em>, <em>stdout</em>, <em>syslog</em> or a file name.
</p>
</dd>
+<dt class="hdlist1">
+<em>timestamp</em> (boolean)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) Include timestamp in log messages. This attribute has been deprecated. Use includeTimestamp instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>source</em> (boolean)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) Include source file and line number in log messages. This attribute has been deprecated. Use includeSource instead.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>output</em> (string)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) Where to send log messages. Can be <em>stderr</em>, <em>stdout</em>, <em>syslog</em> or a file name. This attribute has been deprecated. Use outputFile instead.
+</p>
+</dd>
</dl></div>
</div>
<div class="sect2">
@@ -774,13 +982,21 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>dir</em> (One of [<em>in</em>, <em>out</em>], required)
+<em>direction</em> (One of [<em>in</em>, <em>out</em>], required)
</dt>
<dd>
<p>
The permitted direction of links: <em>in</em> means client senders; <em>out</em> means client receivers
</p>
</dd>
+<dt class="hdlist1">
+<em>dir</em> (One of [<em>in</em>, <em>out</em>], required)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) The permitted direction of links: <em>in</em> means client senders; <em>out</em> means client receivers This attribute has been deprecated. Use direction instead.
+</p>
+</dd>
</dl></div>
</div>
<div class="sect2">
@@ -796,7 +1012,7 @@ listener {
</p>
</dd>
<dt class="hdlist1">
-<em>dir</em> (One of [<em>in</em>, <em>out</em>], required)
+<em>direction</em> (One of [<em>in</em>, <em>out</em>], required)
</dt>
<dd>
<p>
@@ -835,6 +1051,98 @@ listener {
If present, an alternate address of the node on the remote container. This is used if the node has a different address than the address used internally by the router to route deliveries.
</p>
</dd>
+<dt class="hdlist1">
+<em>dir</em> (One of [<em>in</em>, <em>out</em>], required)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) The direction of the link to be created. In means into the router, out means out of the router. This attribute has been deprecated. Use direction instead.
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_exchange">exchange</h3>
+<div class="paragraph"><p>[EXPERIMENTAL] Defines a topic exchange.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+<em>address</em> (string, required)
+</dt>
+<dd>
+<p>
+ The address of the exchange. Used by the message publisher as the target for sending messages.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>phase</em> (integer)
+</dt>
+<dd>
+<p>
+ The address phase for the exchange. Defaults to <em>0</em>.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>alternateAddress</em> (string)
+</dt>
+<dd>
+<p>
+ The address to forward the message to if no bindings are matched.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>alternatePhase</em> (integer)
+</dt>
+<dd>
+<p>
+ The address phase for the alternateAddress. Defaults to <em>0</em>.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>matchMethod</em> (One of [<em>amqp</em>, <em>mqtt</em>], default=<em>amqp</em>)
+</dt>
+<dd>
+<p>
+ Key matching algorithm used. <em>amqp</em> uses the legacy AMQP topic exchange wildcard match method as described in the pre-1.0 drafts. <em>mqtt</em> uses the MQTT topic filter wildcard match method.
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_binding">binding</h3>
+<div class="paragraph"><p>[EXPERIMENTAL] Defines a keyed next hop binding for a topic exchange. The subject field of the messages arriving at the exchange is compared against the binding’s key value using the exchange’s matchMethod. If the subject matches the key the message is forwarded to the nextHopAddress. The nextHopAddress overrides the message’s original destination.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+<em>exchangeName</em> (string, required)
+</dt>
+<dd>
+<p>
+ The name of the exchange to bind.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>bindingKey</em> (string)
+</dt>
+<dd>
+<p>
+ Pattern to compare against incoming message’s subject. The key is a string of zero or more tokens and wildcards. The format depends on the matchMethod configured for the exchange. For AMQP each token is delimited by the <em>.</em> character and wild-card tokens <em>*</em> matches a single token and <em></em> matches zero or more tokens. For MQTT each token is delimited by the <em>/</em> character and wildcard tokens <em>+</em> matches a single token and <em></em> matches zero or more tokens at the end of the topic. If a key is not provided the binding will match all messages arriving at the exchange (fanout behavior).
+</p>
+</dd>
+<dt class="hdlist1">
+<em>nextHopAddress</em> (string, required)
+</dt>
+<dd>
+<p>
+ The address to forward the message to when the message’s topic string matches the binding key pattern. This address is used by message consumers as the source of incoming messages.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>nextHopPhase</em> (integer)
+</dt>
+<dd>
+<p>
+ The address phase used when forwarding messages that match this binding.
+</p>
+</dd>
</dl></div>
</div>
<div class="sect2">
@@ -892,7 +1200,7 @@ listener {
</dt>
<dd>
<p>
- Global maximum number of concurrent client connections allowed. This limit is always enforced even if no other policy settings have been defined.
+ The maximum number of concurrent client connections allowed for this router. This limit is always enforced, even if no other policy settings have been defined. The limit is applied to all incoming connections regardless of remote host, authenticated user, or targeted vhost.
</p>
</dd>
<dt class="hdlist1">
@@ -900,7 +1208,7 @@ listener {
</dt>
<dd>
<p>
- Enable vhost policy user groups, connection denial, and resource limit enforcement
+ Enables the router to enforce the connection denials and resource limits defined in the configured vhost policies.
</p>
</dd>
<dt class="hdlist1">
@@ -908,7 +1216,7 @@ listener {
</dt>
<dd>
<p>
- Absolute path to a directory that holds vhost definition .json files. All vhost definitions in all .json files in this directory are processed.
+ The absolute path to a directory that holds vhost policy definition files in JSON format (*.json). The router processes all of the vhost policies in each JSON file that is in this directory.
</p>
</dd>
<dt class="hdlist1">
@@ -916,7 +1224,7 @@ listener {
</dt>
<dd>
<p>
- Vhost rule set name to use for connections with a vhost that is otherwise not defined. Default vhost processing may be disabled either by erasing the definition of defaultVhost or by not defining a vhost object named <em>$default</em>.
+ The name of the default vhost policy, which is applied to any connection for which a vhost policy has not been configured. If <em>defaultVhost</em> is not defined, then default vhost processing is disabled.
</p>
</dd>
</dl></div>
@@ -926,11 +1234,11 @@ listener {
<div class="paragraph"><p>AMQP virtual host policy definition of users, user groups, allowed remote hosts, and AMQP restrictions.</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
-<em>id</em> (string, required)
+<em>hostname</em> (string, required)
</dt>
<dd>
<p>
- The vhost name.
+ The hostname of the vhost. This vhost policy will be applied to any client connection that is directed to this hostname.
</p>
</dd>
<dt class="hdlist1">
@@ -938,7 +1246,7 @@ listener {
</dt>
<dd>
<p>
- Maximum number of concurrent client connections allowed.
+ The global maximum number of concurrent client connections allowed for this vhost.
</p>
</dd>
<dt class="hdlist1">
@@ -946,7 +1254,7 @@ listener {
</dt>
<dd>
<p>
- Maximum number of concurrent client connections allowed for any single user.
+ The maximum number of concurrent client connections allowed for any user.
</p>
</dd>
<dt class="hdlist1">
@@ -954,7 +1262,7 @@ listener {
</dt>
<dd>
<p>
- Maximum number of concurrent client connections allowed for any remote host.
+ The maximum number of concurrent client connections allowed for any remote host (the host from which the client is connecting).
</p>
</dd>
<dt class="hdlist1">
@@ -962,7 +1270,7 @@ listener {
</dt>
<dd>
<p>
- Unrestricted users, those who are not members of a defined user group, are allowed to connect to this application. Unrestricted users are assigned to the <em>default</em> user group and receive <em>default</em> settings.
+ Whether unknown users (users who are not members of a defined user group) are allowed to connect to the vhost. Unknown users are assigned to the <em>$default</em> user group and receive <em>$default</em> settings.
</p>
</dd>
<dt class="hdlist1">
@@ -970,7 +1278,99 @@ listener {
</dt>
<dd>
<p>
- A map where each key is a user group name and the value is a map of the corresponding settings for that group.
+ A map where each key is a vhost name and each value is a map of the settings for users of that vhost.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>id</em> (string, required)
+</dt>
+<dd>
+<p>
+ (DEPRECATED) The hostname of the vhost. This vhost policy will be applied to any client connection that is directed to this hostname. This attribute has been deprecated. Use hostname instead.
+</p>
+</dd>
+</dl></div>
+</div>
+<div class="sect2">
+<h3 id="_vhostusergroupsettings">vhostUserGroupSettings</h3>
+<div class="paragraph"><p>Policy settings for users connecting to a vhost. Configuration files including this section must use .json format.</p></div>
+<div class="dlist"><dl>
+<dt class="hdlist1">
+<em>maxFrameSize</em> (integer, default=<em>16384</em>)
+</dt>
+<dd>
+<p>
+ The largest frame, in bytes, that may be sent on this connection. Non-zero policy values overwrite values specified for a listener object (AMQP Open, max-frame-size).
+</p>
+</dd>
+<dt class="hdlist1">
+<em>maxSessionWindow</em> (integer, default=<em>1638400</em>)
+</dt>
+<dd>
+<p>
+ The incoming capacity for new AMQP sessions, measured in octets. Non-zero policy values overwrite values specified for a listener object (AMQP Begin, incoming-window).
+</p>
+</dd>
+<dt class="hdlist1">
+<em>maxSessions</em> (integer, default=<em>32768</em>)
+</dt>
+<dd>
+<p>
+ The maximum number of sessions that may be created on this connection. Non-zero policy values overwrite values specified for a listener object (AMQP Open, channel-max).
+</p>
+</dd>
+<dt class="hdlist1">
+<em>maxSenders</em> (integer, default=<em>2147483647</em>)
+</dt>
+<dd>
+<p>
+ The maximum number of sending links that may be created on this connection. A value of <em>0</em> disables all sender links.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>maxReceivers</em> (integer, default=<em>2147483647</em>)
+</dt>
+<dd>
+<p>
+ The maximum number of receiving links that may be created on this connection. A value of <em>0</em> disables all receiver links.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>allowDynamicSource</em> (boolean)
+</dt>
+<dd>
+<p>
+ Whether this connection is allowed to create dynamic receiving links (links to resources that do not exist on the peer). A value of <em>true</em> means that users are able to automatically create resources on the peer system.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>allowAnonymousSender</em> (boolean)
+</dt>
+<dd>
+<p>
+ Whether this connection is allowed to create sending links if the sender does not provide a target address. By prohibiting anonymous senders, the router only needs to verify once, when the link is created, that the sender is permitted to send messages to the target address. The router does not need to verify each message that is sent on the link. A value of <em>true</em> means that users may send messages to any address. Allowing anonymous senders can also decrease performance: if the sender does not specify a target address, then the router must parse each message to determine how to route it.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>allowUserIdProxy</em> (boolean)
+</dt>
+<dd>
+<p>
+ Whether this connection is allowed to send messages with a user ID that is different than the connection’s authenticated user name.
+</p>
+</dd>
+<dt class="hdlist1">
+<em>sources</em> (string)
+</dt>
+<dd>
+<p>
+</p>
+</dd>
+<dt class="hdlist1">
+<em>targets</em> (string)
+</dt>
+<dd>
+<p>
</p>
</dd>
</dl></div>
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/input/releases/qpid-dispatch-master/man/qdstat.html.in
----------------------------------------------------------------------
diff --git a/input/releases/qpid-dispatch-master/man/qdstat.html.in b/input/releases/qpid-dispatch-master/man/qdstat.html.in
index 2d15ae9..aae0dcd 100644
--- a/input/releases/qpid-dispatch-master/man/qdstat.html.in
+++ b/input/releases/qpid-dispatch-master/man/qdstat.html.in
@@ -334,6 +334,14 @@ The number of pre-settled deliveries that transited this link.
</p>
</dd>
<dt class="hdlist1">
+psdrop
+</dt>
+<dd>
+<p>
+The number of pre-settled deliveries that were dropped due to congestion.
+</p>
+</dd>
+<dt class="hdlist1">
acc
</dt>
<dd>
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/input/releases/qpid-dispatch-master/user-guide/images/01-peer-to-peer.png
----------------------------------------------------------------------
diff --git a/input/releases/qpid-dispatch-master/user-guide/images/01-peer-to-peer.png b/input/releases/qpid-dispatch-master/user-guide/images/01-peer-to-peer.png
new file mode 100644
index 0000000..5c834aa
Binary files /dev/null and b/input/releases/qpid-dispatch-master/user-guide/images/01-peer-to-peer.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/input/releases/qpid-dispatch-master/user-guide/images/balanced-routing.png
----------------------------------------------------------------------
diff --git a/input/releases/qpid-dispatch-master/user-guide/images/balanced-routing.png b/input/releases/qpid-dispatch-master/user-guide/images/balanced-routing.png
new file mode 100644
index 0000000..fedcdbf
Binary files /dev/null and b/input/releases/qpid-dispatch-master/user-guide/images/balanced-routing.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/input/releases/qpid-dispatch-master/user-guide/images/brokered-messaging.png
----------------------------------------------------------------------
diff --git a/input/releases/qpid-dispatch-master/user-guide/images/brokered-messaging.png b/input/releases/qpid-dispatch-master/user-guide/images/brokered-messaging.png
new file mode 100644
index 0000000..ae129d4
Binary files /dev/null and b/input/releases/qpid-dispatch-master/user-guide/images/brokered-messaging.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/input/releases/qpid-dispatch-master/user-guide/images/closest-routing.png
----------------------------------------------------------------------
diff --git a/input/releases/qpid-dispatch-master/user-guide/images/closest-routing.png b/input/releases/qpid-dispatch-master/user-guide/images/closest-routing.png
new file mode 100644
index 0000000..ba3f0a5
Binary files /dev/null and b/input/releases/qpid-dispatch-master/user-guide/images/closest-routing.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/input/releases/qpid-dispatch-master/user-guide/images/console1.png
----------------------------------------------------------------------
diff --git a/input/releases/qpid-dispatch-master/user-guide/images/console1.png b/input/releases/qpid-dispatch-master/user-guide/images/console1.png
new file mode 100644
index 0000000..f131884
Binary files /dev/null and b/input/releases/qpid-dispatch-master/user-guide/images/console1.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/input/releases/qpid-dispatch-master/user-guide/images/console_charts.png
----------------------------------------------------------------------
diff --git a/input/releases/qpid-dispatch-master/user-guide/images/console_charts.png b/input/releases/qpid-dispatch-master/user-guide/images/console_charts.png
new file mode 100644
index 0000000..169c2ca
Binary files /dev/null and b/input/releases/qpid-dispatch-master/user-guide/images/console_charts.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/input/releases/qpid-dispatch-master/user-guide/images/console_entity.png
----------------------------------------------------------------------
diff --git a/input/releases/qpid-dispatch-master/user-guide/images/console_entity.png b/input/releases/qpid-dispatch-master/user-guide/images/console_entity.png
new file mode 100644
index 0000000..130c7e7
Binary files /dev/null and b/input/releases/qpid-dispatch-master/user-guide/images/console_entity.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/input/releases/qpid-dispatch-master/user-guide/images/console_login.png
----------------------------------------------------------------------
diff --git a/input/releases/qpid-dispatch-master/user-guide/images/console_login.png b/input/releases/qpid-dispatch-master/user-guide/images/console_login.png
new file mode 100644
index 0000000..63e22c6
Binary files /dev/null and b/input/releases/qpid-dispatch-master/user-guide/images/console_login.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/input/releases/qpid-dispatch-master/user-guide/images/console_overview.png
----------------------------------------------------------------------
diff --git a/input/releases/qpid-dispatch-master/user-guide/images/console_overview.png b/input/releases/qpid-dispatch-master/user-guide/images/console_overview.png
new file mode 100644
index 0000000..af25f36
Binary files /dev/null and b/input/releases/qpid-dispatch-master/user-guide/images/console_overview.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/input/releases/qpid-dispatch-master/user-guide/images/console_schema.png
----------------------------------------------------------------------
diff --git a/input/releases/qpid-dispatch-master/user-guide/images/console_schema.png b/input/releases/qpid-dispatch-master/user-guide/images/console_schema.png
new file mode 100644
index 0000000..ba56c7b
Binary files /dev/null and b/input/releases/qpid-dispatch-master/user-guide/images/console_schema.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/input/releases/qpid-dispatch-master/user-guide/images/console_topology.png
----------------------------------------------------------------------
diff --git a/input/releases/qpid-dispatch-master/user-guide/images/console_topology.png b/input/releases/qpid-dispatch-master/user-guide/images/console_topology.png
new file mode 100644
index 0000000..ae4b22a
Binary files /dev/null and b/input/releases/qpid-dispatch-master/user-guide/images/console_topology.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/input/releases/qpid-dispatch-master/user-guide/images/link-routing.png
----------------------------------------------------------------------
diff --git a/input/releases/qpid-dispatch-master/user-guide/images/link-routing.png b/input/releases/qpid-dispatch-master/user-guide/images/link-routing.png
new file mode 100644
index 0000000..0c1b9e4
Binary files /dev/null and b/input/releases/qpid-dispatch-master/user-guide/images/link-routing.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/input/releases/qpid-dispatch-master/user-guide/images/message-routing.png
----------------------------------------------------------------------
diff --git a/input/releases/qpid-dispatch-master/user-guide/images/message-routing.png b/input/releases/qpid-dispatch-master/user-guide/images/message-routing.png
new file mode 100644
index 0000000..42f4638
Binary files /dev/null and b/input/releases/qpid-dispatch-master/user-guide/images/message-routing.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/input/releases/qpid-dispatch-master/user-guide/images/multicast-routing.png
----------------------------------------------------------------------
diff --git a/input/releases/qpid-dispatch-master/user-guide/images/multicast-routing.png b/input/releases/qpid-dispatch-master/user-guide/images/multicast-routing.png
new file mode 100644
index 0000000..d4548a6
Binary files /dev/null and b/input/releases/qpid-dispatch-master/user-guide/images/multicast-routing.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/input/releases/qpid-dispatch-master/user-guide/images/path-redundancy-01.png
----------------------------------------------------------------------
diff --git a/input/releases/qpid-dispatch-master/user-guide/images/path-redundancy-01.png b/input/releases/qpid-dispatch-master/user-guide/images/path-redundancy-01.png
new file mode 100644
index 0000000..ba8f10d
Binary files /dev/null and b/input/releases/qpid-dispatch-master/user-guide/images/path-redundancy-01.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/input/releases/qpid-dispatch-master/user-guide/images/path-redundancy-02.png
----------------------------------------------------------------------
diff --git a/input/releases/qpid-dispatch-master/user-guide/images/path-redundancy-02.png b/input/releases/qpid-dispatch-master/user-guide/images/path-redundancy-02.png
new file mode 100644
index 0000000..6d4a1f5
Binary files /dev/null and b/input/releases/qpid-dispatch-master/user-guide/images/path-redundancy-02.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/input/releases/qpid-dispatch-master/user-guide/images/path-redundancy-temp-decoupling-01.png
----------------------------------------------------------------------
diff --git a/input/releases/qpid-dispatch-master/user-guide/images/path-redundancy-temp-decoupling-01.png b/input/releases/qpid-dispatch-master/user-guide/images/path-redundancy-temp-decoupling-01.png
new file mode 100644
index 0000000..c3c6631
Binary files /dev/null and b/input/releases/qpid-dispatch-master/user-guide/images/path-redundancy-temp-decoupling-01.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/input/releases/qpid-dispatch-master/user-guide/images/path-redundancy-temp-decoupling-02.png
----------------------------------------------------------------------
diff --git a/input/releases/qpid-dispatch-master/user-guide/images/path-redundancy-temp-decoupling-02.png b/input/releases/qpid-dispatch-master/user-guide/images/path-redundancy-temp-decoupling-02.png
new file mode 100644
index 0000000..ecab8b1
Binary files /dev/null and b/input/releases/qpid-dispatch-master/user-guide/images/path-redundancy-temp-decoupling-02.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/input/releases/qpid-dispatch-master/user-guide/images/sharded-queue-01.png
----------------------------------------------------------------------
diff --git a/input/releases/qpid-dispatch-master/user-guide/images/sharded-queue-01.png b/input/releases/qpid-dispatch-master/user-guide/images/sharded-queue-01.png
new file mode 100644
index 0000000..ab25be0
Binary files /dev/null and b/input/releases/qpid-dispatch-master/user-guide/images/sharded-queue-01.png differ
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/input/releases/qpid-dispatch-master/user-guide/images/sharded-queue-02.png
----------------------------------------------------------------------
diff --git a/input/releases/qpid-dispatch-master/user-guide/images/sharded-queue-02.png b/input/releases/qpid-dispatch-master/user-guide/images/sharded-queue-02.png
new file mode 100644
index 0000000..7e73e6d
Binary files /dev/null and b/input/releases/qpid-dispatch-master/user-guide/images/sharded-queue-02.png differ
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org
[6/8] qpid-site git commit: QPID-8154: Add missing images to the
Dispatch user guide; regen the master doc snapshot
Posted by jr...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/content/releases/qpid-dispatch-master/user-guide/index.html
----------------------------------------------------------------------
diff --git a/content/releases/qpid-dispatch-master/user-guide/index.html b/content/releases/qpid-dispatch-master/user-guide/index.html
index 5c0ef36..abe07b8 100644
--- a/content/releases/qpid-dispatch-master/user-guide/index.html
+++ b/content/releases/qpid-dispatch-master/user-guide/index.html
@@ -150,53 +150,56 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
<li><a href="#security">2.5. Security</a></li>
</ul>
</li>
-<li><a href="#getting_started">3. Getting Started</a>
+<li><a href="#getting-started">3. Getting Started</a>
<ul class="sectlevel2">
-<li><a href="#starting_the_router">3.1. Starting the Router</a></li>
+<li><a href="#starting-the-router">3.1. Starting the Router</a></li>
<li><a href="#routing_messages_in_a_peer_to_peer_configuration">3.2. Routing Messages in a Peer-to-Peer Configuration</a>
<ul class="sectlevel3">
-<li><a href="#starting_the_receiver_client">3.2.1. Starting the Receiver Client</a></li>
-<li><a href="#sending_messages">3.2.2. Sending Messages</a></li>
+<li><a href="#starting-the-receiver-client">3.2.1. Starting the Receiver Client</a></li>
+<li><a href="#sending-messages">3.2.2. Sending Messages</a></li>
</ul>
</li>
</ul>
</li>
-<li><a href="#router_configuration">4. Configuration</a>
+<li><a href="#router-configuration">4. Configuration</a>
<ul class="sectlevel2">
<li><a href="#accessing_the_router_configuration_file">4.1. Accessing the Router Configuration File</a></li>
<li><a href="#how_the_router_configuration_file_is_structured">4.2. How the Router Configuration File is Structured</a></li>
-<li><a href="#methods_for_changing_router_configuration">4.3. Changing a Router’s Configuration</a>
+<li><a href="#methods-for-changing-router-configuration">4.3. Changing a Router’s Configuration</a>
<ul class="sectlevel3">
-<li><a href="#making_permanent_change_to_router_configuration">4.3.1. Making a Permanent Change to the Router’s Configuration</a></li>
-<li><a href="#changing_configuration_for_running_router">4.3.2. Changing the Configuration for a Running Router</a></li>
+<li><a href="#making-permanent-change-to-router-configuration">4.3.1. Making a Permanent Change to the Router’s Configuration</a></li>
+<li><a href="#changing-configuration-for-running-router">4.3.2. Changing the Configuration for a Running Router</a></li>
</ul>
</li>
<li><a href="#default_configuration_settings">4.4. Default Configuration Settings</a></li>
<li><a href="#setting_essential_configuration_properties">4.5. Setting Essential Configuration Properties</a></li>
</ul>
</li>
-<li><a href="#router_network_connections">5. Network Connections</a>
+<li><a href="#router-network-connections">5. Network Connections</a>
<ul class="sectlevel2">
-<li><a href="#adding_incoming_connections">5.1. Listening for Incoming Connections</a></li>
-<li><a href="#adding_outgoing_connections">5.2. Adding Outgoing Connections</a></li>
+<li><a href="#adding-incoming-connections">5.1. Listening for Incoming Connections</a></li>
+<li><a href="#adding-outgoing-connections">5.2. Adding Outgoing Connections</a></li>
</ul>
</li>
-<li><a href="#security_config">6. Security</a>
+<li><a href="#security-config">6. Security</a>
<ul class="sectlevel2">
-<li><a href="#setting_up_ssl_for_encryption_and_authentication">6.1. Setting Up SSL/TLS for Encryption and Authentication</a></li>
-<li><a href="#setting_up_sasl_for_authentication_and_payload_encryption">6.2. Setting Up SASL for Authentication and Payload Encryption</a></li>
-<li><a href="#securing_incoming_connections">6.3. Securing Incoming Connections</a>
+<li><a href="#authenticating_remote_peers">6.1. Authenticating Remote Peers</a>
<ul class="sectlevel3">
-<li><a href="#adding_ssl_encryption_to_incoming_connection">6.3.1. Adding SSL/TLS Encryption to an Incoming Connection</a></li>
-<li><a href="#adding_sasl_authentication_to_incoming_connection">6.3.2. Adding SASL Authentication to an Incoming Connection</a></li>
-<li><a href="#adding_ssl_client_authentication_to_incoming_connection">6.3.3. Adding SSL/TLS Client Authentication to an Incoming Connection</a></li>
-<li><a href="#adding_sasl_payload_encryption_to_incoming_connection">6.3.4. Adding SASL Payload Encryption to an Incoming Connection</a></li>
+<li><a href="#setting-up-ssl-for-encryption-and-authentication">6.1.1. Setting Up SSL/TLS for Encryption and Authentication</a></li>
+<li><a href="#setting-up-sasl-for-authentication-and-payload-encryption">6.1.2. Setting Up SASL for Authentication and Payload Encryption</a></li>
+<li><a href="#securing-incoming-connections">6.1.3. Securing Incoming Connections</a></li>
+<li><a href="#securing-outgoing-connections">6.1.4. Securing Outgoing Connections</a></li>
+<li><a href="#integrating-with-kerberos">6.1.5. Integrating with Kerberos</a></li>
</ul>
</li>
-<li><a href="#securing_outgoing_connections">6.4. Securing Outgoing Connections</a>
+<li><a href="#authorizing_access_to_messaging_resources">6.2. Authorizing Access to Messaging Resources</a>
<ul class="sectlevel3">
-<li><a href="#adding_ssl_authentication_to_outgoing_connection">6.4.1. Adding SSL/TLS Client Authentication to an Outgoing Connection</a></li>
-<li><a href="#adding_sasl_authentication_to_outgoing_connection">6.4.2. Adding SASL Authentication to an Outgoing Connection</a></li>
+<li><a href="#types_of_policies">6.2.1. Types of Policies</a></li>
+<li><a href="#how_dispatch_router_applies_policies">6.2.2. How Dispatch Router Applies Policies</a></li>
+<li><a href="#configuring_global_policies">6.2.3. Configuring Global Policies</a></li>
+<li><a href="#configuring_vhost_policies">6.2.4. Configuring Vhost Policies</a></li>
+<li><a href="#example_configuring_a_vhost_policy">6.2.5. Example: Configuring a Vhost Policy</a></li>
+<li><a href="#example_using_a_vhost_policy_to_limit_memory_consumption_advanced">6.2.6. Example: Using a Vhost Policy to Limit Memory Consumption (Advanced)</a></li>
</ul>
</li>
</ul>
@@ -212,10 +215,10 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
<li><a href="#configuring_message_routing">7.2. Configuring Message Routing</a>
<ul class="sectlevel3">
<li><a href="#addresses_2">7.2.1. Addresses</a></li>
-<li><a href="#routing_patterns_overview">7.2.2. Routing Patterns</a></li>
+<li><a href="#routing-patterns-overview">7.2.2. Routing Patterns</a></li>
<li><a href="#message_settlement_2">7.2.3. Message Settlement</a></li>
-<li><a href="#routing_messages_between_clients">7.2.4. Routing Messages Between Clients</a></li>
-<li><a href="#routing_messages_through_broker">7.2.5. Routing Messages Through a Broker Queue</a></li>
+<li><a href="#routing-messages-between-clients">7.2.4. Routing Messages Between Clients</a></li>
+<li><a href="#routing-messages-through-broker">7.2.5. Routing Messages Through a Broker Queue</a></li>
<li><a href="#example_routing_messages_through_broker_queues">7.2.6. Example: Routing Messages Through Broker Queues</a></li>
</ul>
</li>
@@ -224,7 +227,7 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
<li><a href="#link_route_addresses_2">7.3.1. Link Route Addresses</a></li>
<li><a href="#link_route_routing_patterns">7.3.2. Link Route Routing Patterns</a></li>
<li><a href="#link_route_flow_control">7.3.3. Link Route Flow Control</a></li>
-<li><a href="#creating_link_route">7.3.4. Creating a Link Route</a></li>
+<li><a href="#creating-link-route">7.3.4. Creating a Link Route</a></li>
<li><a href="#example_using_a_link_route_to_provide_client_isolation">7.3.5. Example: Using a Link Route to Provide Client Isolation</a></li>
</ul>
</li>
@@ -232,7 +235,7 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
</li>
<li><a href="#logging">8. Logging</a>
<ul class="sectlevel2">
-<li><a href="#logging_modules_you_can_configure">8.1. Logging Modules</a>
+<li><a href="#logging-modules-you-can-configure">8.1. Logging Modules</a>
<ul class="sectlevel3">
<li><a href="#the_code_default_code_logging_module">8.1.1. The <code>DEFAULT</code> Logging Module</a></li>
<li><a href="#the_code_router_code_logging_module">8.1.2. The <code>ROUTER</code> Logging Module</a></li>
@@ -248,7 +251,7 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
<li><a href="#the_code_policy_code_logging_module">8.1.12. The <code>POLICY</code> Logging Module</a></li>
</ul>
</li>
-<li><a href="#configure_default_logging">8.2. Configuring Logging</a></li>
+<li><a href="#configure-default-logging">8.2. Configuring Logging</a></li>
<li><a href="#viewing_log_entries">8.3. Viewing Log Entries</a>
<ul class="sectlevel3">
<li><a href="#viewing_log_entries_on_the_console">8.3.1. Viewing Log Entries on the Console</a></li>
@@ -257,112 +260,66 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
</li>
</ul>
</li>
-<li><a href="#policy">9. Policy</a>
+<li><a href="#management">9. Management</a>
<ul class="sectlevel2">
-<li><a href="#definitions">9.1. Definitions</a>
+<li><a href="#using_apache_qpid_dispatch_router_console">9.1. Using Apache Qpid Dispatch Router Console</a>
<ul class="sectlevel3">
-<li><a href="#vhost">9.1.1. vhost</a></li>
+<li><a href="#console-overview">9.1.1. Console Overview</a></li>
+<li><a href="#console-installation">9.1.2. Console Installation</a></li>
+<li><a href="#console-operation">9.1.3. Console Operation</a></li>
</ul>
</li>
-<li><a href="#policy_features">9.2. Policy Features</a>
+<li><a href="#monitoring-using-qdstat">9.2. Monitoring Dispatch Router Using <code>qdstat</code></a>
<ul class="sectlevel3">
-<li><a href="#total_connection_limit">9.2.1. Total Connection Limit</a></li>
-<li><a href="#vhost_policy">9.2.2. Vhost Policy</a></li>
-<li><a href="#default_vhost">9.2.3. Default Vhost</a></li>
+<li><a href="#syntax_for_using_code_qdstat_code">9.2.1. Syntax for Using <code>qdstat</code></a></li>
+<li><a href="#viewing_general_statistics_for_a_router">9.2.2. Viewing General Statistics for a Router</a></li>
+<li><a href="#viewing_a_list_of_connections_to_a_router">9.2.3. Viewing a List of Connections to a Router</a></li>
+<li><a href="#viewing_amqp_links_attached_to_a_router">9.2.4. Viewing AMQP Links Attached to a Router</a></li>
+<li><a href="#viewing_known_routers_on_a_network">9.2.5. Viewing Known Routers on a Network</a></li>
+<li><a href="#viewing_addresses_known_to_a_router">9.2.6. Viewing Addresses Known to a Router</a></li>
+<li><a href="#viewing_a_router_s_autolinks">9.2.7. Viewing a Router’s Autolinks</a></li>
+<li><a href="#viewing_the_status_of_a_router_s_link_routes">9.2.8. Viewing the Status of a Router’s Link Routes</a></li>
+<li><a href="#viewing_memory_consumption_information">9.2.9. Viewing Memory Consumption Information</a></li>
</ul>
</li>
-<li><a href="#policy_schema">9.3. Policy Schema</a>
+<li><a href="#managing-router">9.3. Managing Dispatch Router Using <code>qdmanage</code></a>
<ul class="sectlevel3">
-<li><a href="#global_policy">9.3.1. Global Policy</a></li>
-<li><a href="#vhost_policy_2">9.3.2. Vhost Policy</a></li>
-<li><a href="#vhost_user_group_settings_map">9.3.3. Vhost User Group Settings Map</a></li>
+<li><a href="#syntax_for_using_code_qdmanage_code">9.3.1. Syntax for Using <code>qdmanage</code></a></li>
+<li><a href="#managing_network_connections">9.3.2. Managing Network Connections</a></li>
+<li><a href="#managing_security">9.3.3. Managing Security</a></li>
+<li><a href="#managing_routing">9.3.4. Managing Routing</a></li>
+<li><a href="#managing_logging">9.3.5. Managing Logging</a></li>
</ul>
</li>
-<li><a href="#policy_wildcard_and_user_name_substitution">9.4. Policy Wildcard and User Name Substitution</a>
-<ul class="sectlevel3">
-<li><a href="#remote_host_wildcard">9.4.1. Remote Host Wildcard</a></li>
-<li><a href="#amqp_source_and_target_wildcard_and_name_substitution">9.4.2. AMQP Source and Target Wildcard and Name Substitution</a></li>
-</ul>
-</li>
-<li><a href="#composing_policies">9.5. Composing Policies</a>
-<ul class="sectlevel3">
-<li><a href="#example_1_user_policy_disabled">9.5.1. Example 1. User Policy Disabled</a></li>
-<li><a href="#example2">9.5.2. Example 2. All Users Have Simple Connection Limits</a></li>
-<li><a href="#example_3_admins_must_connect_from_localhost">9.5.3. Example 3. Admins Must Connect From Localhost</a></li>
-<li><a href="#example_4_limiting_possible_memory_consumption">9.5.4. Example 4. Limiting Possible Memory Consumption</a></li>
-</ul>
-</li>
-</ul>
-</li>
-<li><a href="#management">10. Management</a>
-<ul class="sectlevel2">
-<li><a href="#using_apache_qpid_dispatch_router_console">10.1. Using Apache Qpid Dispatch Router Console</a>
-<ul class="sectlevel3">
-<li><a href="#console-overview">10.1.1. Console Overview</a></li>
-<li><a href="#console-installation">10.1.2. Console Installation</a></li>
-<li><a href="#console-operation">10.1.3. Console Operation</a></li>
-</ul>
-</li>
-<li><a href="#monitoring_using_qdstat">10.2. Monitoring Dispatch Router Using <code>qdstat</code></a>
-<ul class="sectlevel3">
-<li><a href="#syntax_for_using_code_qdstat_code">10.2.1. Syntax for Using <code>qdstat</code></a></li>
-<li><a href="#viewing_general_statistics_for_a_router">10.2.2. Viewing General Statistics for a Router</a></li>
-<li><a href="#viewing_a_list_of_connections_to_a_router">10.2.3. Viewing a List of Connections to a Router</a></li>
-<li><a href="#viewing_amqp_links_attached_to_a_router">10.2.4. Viewing AMQP Links Attached to a Router</a></li>
-<li><a href="#viewing_known_routers_on_a_network">10.2.5. Viewing Known Routers on a Network</a></li>
-<li><a href="#viewing_addresses_known_to_a_router">10.2.6. Viewing Addresses Known to a Router</a></li>
-<li><a href="#viewing_a_router_s_autolinks">10.2.7. Viewing a Router’s Autolinks</a></li>
-<li><a href="#viewing_the_status_of_a_router_s_link_routes">10.2.8. Viewing the Status of a Router’s Link Routes</a></li>
-<li><a href="#viewing_memory_consumption_information">10.2.9. Viewing Memory Consumption Information</a></li>
-</ul>
-</li>
-<li><a href="#managing_router">10.3. Managing Dispatch Router Using <code>qdmanage</code></a>
-<ul class="sectlevel3">
-<li><a href="#syntax_for_using_code_qdmanage_code">10.3.1. Syntax for Using <code>qdmanage</code></a></li>
-<li><a href="#managing_network_connections">10.3.2. Managing Network Connections</a></li>
-<li><a href="#managing_security">10.3.3. Managing Security</a></li>
-<li><a href="#managing_routing">10.3.4. Managing Routing</a></li>
-<li><a href="#managing_logging">10.3.5. Managing Logging</a></li>
+<li><a href="#management_entities">9.4. Management Entities</a></li>
</ul>
</li>
-<li><a href="#management_entities">10.4. Management Entities</a></li>
-</ul>
-</li>
-<li><a href="#reliability">11. Reliability</a>
+<li><a href="#reliability">10. Reliability</a>
<ul class="sectlevel2">
-<li><a href="#path_redundancy">11.1. Path Redundancy</a></li>
-<li><a href="#path_redundancy_and_temporal_decoupling">11.2. Path Redundancy and Temporal Decoupling</a></li>
-<li><a href="#sharded_queue">11.3. Sharded Queue</a></li>
+<li><a href="#path_redundancy">10.1. Path Redundancy</a></li>
+<li><a href="#path_redundancy_and_temporal_decoupling">10.2. Path Redundancy and Temporal Decoupling</a></li>
+<li><a href="#sharded_queue">10.3. Sharded Queue</a></li>
</ul>
</li>
-<li><a href="#technical_details_specifications">12. Technical Details and Specifications</a>
+<li><a href="#technical-details-specifications">11. Technical Details and Specifications</a>
<ul class="sectlevel2">
-<li><a href="#client_compatibility">12.1. Client Compatibility</a></li>
-<li><a href="#amqp_mapping">12.2. AMQP Mapping</a>
+<li><a href="#client-compatibility">11.1. Client Compatibility</a></li>
+<li><a href="#amqp-mapping">11.2. AMQP Mapping</a>
<ul class="sectlevel3">
-<li><a href="#message_annotations">12.2.1. Message Annotations</a></li>
-<li><a href="#sourcetarget_capabilities">12.2.2. Source/Target Capabilities</a></li>
-<li><a href="#dynamic_node_properties">12.2.3. Dynamic-Node-Properties</a></li>
-<li><a href="#addresses_and_address_formats">12.2.4. Addresses and Address Formats</a></li>
-<li><a href="#implementation_of_the_amqp_management_specification">12.2.5. Implementation of the AMQP Management Specification</a></li>
+<li><a href="#message-annotations">11.2.1. Message Annotations</a></li>
+<li><a href="#sourcetarget-capabilities">11.2.2. Source/Target Capabilities</a></li>
+<li><a href="#dynamic-node-properties">11.2.3. Dynamic-Node-Properties</a></li>
+<li><a href="#addresses-and-address-formats">11.2.4. Addresses and Address Formats</a></li>
+<li><a href="#implementation-of-the-amqp-management-specification">11.2.5. Implementation of the AMQP Management Specification</a></li>
</ul>
</li>
</ul>
</li>
-<li><a href="#cyrus_sasl">Appendix A: Using Cyrus SASL to Provide Authentication</a>
+<li><a href="#cyrus-sasl">Appendix A: Using Cyrus SASL to Provide Authentication</a>
<ul class="sectlevel2">
-<li><a href="#generating_sasl_database">A.1. Generating a SASL Database</a></li>
+<li><a href="#generating-sasl-database">A.1. Generating a SASL Database</a></li>
<li><a href="#viewing_users_in_a_sasl_database">A.2. Viewing Users in a SASL Database</a></li>
-<li><a href="#configuring_sasl_database">A.3. Configuring a SASL Database</a></li>
-</ul>
-</li>
-<li><a href="#router_configuration_reference">Appendix B: Configuration Reference</a>
-<ul class="sectlevel2">
-<li><a href="#configuration_file">B.1. Configuration File</a>
-<ul class="sectlevel3">
-<li><a href="#configuration_sections">B.1.1. Configuration Sections</a></li>
-</ul>
-</li>
+<li><a href="#configuring-sasl-database">A.3. Configuring a SASL Database</a></li>
</ul>
</li>
</ul>
@@ -872,32 +829,86 @@ used. Address semantics include the following considerations:</p>
<div class="sect3">
<h4 id="routing_patterns">2.4.1. Routing Patterns</h4>
<div class="paragraph">
-<p>Routing patterns define the paths that a message with a mobile address can take across a network. These routing patterns can be used for both direct routing, in which the router distributes messages between clients without a broker, and indirect routing, in which the router enables clients to exchange messages through a broker.</p>
+<p>Routing patterns define the paths that a message with a mobile address
+can take across a network. These routing patterns can be used for both
+direct routing, in which the router distributes messages between
+clients without a broker, and indirect routing, in which the router
+enables clients to exchange messages through a broker.</p>
+</div>
+<div class="paragraph">
+<p>Note that the routing patterns fall into two categories: Anycast
+(Balanced and Closest) and Multicast. There is no concept of
+"unicast" in which there is only one consumer for an address.</p>
+</div>
+<div class="paragraph">
+<p>Anycast distribution delivers each message to one consumer whereas
+multicast distribution delivers each message to all consumers.</p>
+</div>
+<div class="paragraph">
+<p>Anycast delivery is reliable when the message deliveries are
+unsettled. There is a reliability contract that the router network
+abides by when delivering unsettled messages to anycast addresses.
+For every such delivery sent by a producer, the router network
+guarantees that one of the following outcomes will occur:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>The delivery shall be settled with ACCEPTED or REJECTED disposition
+where the disposition is supplied by the consumer.</p>
+</li>
+<li>
+<p>The delivery shall be settled with RELEASED disposition, meaning
+that the message was not delivered to any consumer.</p>
+</li>
+<li>
+<p>The delivery shall be settled with MODIFIED disposition, meaning
+that the message may have been delivered to a consumer but should be
+considered in-doubt and re-sent.</p>
+</li>
+<li>
+<p>The connection to the producer shall be dropped, signifying that all
+unsettled deliveries should now be considered in-doubt by the
+producer and later re-sent.</p>
+</li>
+</ul>
+</div>
+<div class="paragraph">
+<p>Multicast delivery is not reliable. If a producer sends an unsettled
+delivery, the ingress router shall settle the delivery with ACCEPTED
+disposition regardless of whether the message was delivered to any
+consumers.</p>
+</div>
+<div class="sect4">
+<h5 id="balanced">Balanced</h5>
+<div class="paragraph">
+<p>An anycast method which allows multiple receivers to use the same
+address. In this case, messages (or links) are routed to exactly one
+of the receivers and the network attempts to balance the traffic load
+across the set of receivers using the same address. This routing
+delivers messages to receivers based on how quickly they settle the
+deliveries. Faster receivers get more messages.</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="closest">Closest</h5>
+<div class="paragraph">
+<p>An anycast method in which even if there are more receivers for the
+same address, every message is sent along the shortest path to reach
+the destination. This means that only one receiver will get the
+message. Each message is delivered to the closest receivers in terms
+of topology cost. If there are multiple receivers with the same lowest
+cost, deliveries will be spread evenly among those receivers.</p>
+</div>
+</div>
+<div class="sect4">
+<h5 id="multicast">Multicast</h5>
+<div class="paragraph">
+<p>Having multiple consumers on the same address at the same time,
+messages are routed such that each consumer receives one copy of the
+message.</p>
+</div>
</div>
-<table class="tableblock frame-all grid-all spread">
-<colgroup>
-<col style="width: 20%;">
-<col style="width: 80%;">
-</colgroup>
-<tbody>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Pattern</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Description</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Balanced</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">An anycast method which allows multiple receivers to use the same address. In this case, messages (or links) are routed to exactly one of the receivers and the network attempts to balance the traffic load across the set of receivers using the same address. This routing delivers messages to receivers based on how quickly they settle the deliveries. Faster receivers get more messages.</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Closest</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">An anycast method in which even if there are more receivers for the same address, every message is sent along the shortest path to reach the destination. This means that only one receiver will get the message. Each message is delivered to the closest receivers in terms of topology cost. If there are multiple receivers with the same lowest cost, deliveries will be spread evenly among those receivers.</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Multicast</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Having multiple consumers on the same address at the same time, messages are routed such that each consumer receives one copy of the message.</p></td>
-</tr>
-</tbody>
-</table>
</div>
<div class="sect3">
<h4 id="routing_mechanisms">2.4.2. Routing Mechanisms</h4>
@@ -1033,13 +1044,13 @@ control.</p>
</div>
</div>
<div class="sect1">
-<h2 id="getting_started">3. Getting Started</h2>
+<h2 id="getting-started">3. Getting Started</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Before configuring Dispatch Router, you should understand how to start the router, how it is configured by default, and how to use it in a simple peer-to-peer configuration.</p>
</div>
<div class="sect2">
-<h3 id="starting_the_router">3.1. Starting the Router</h3>
+<h3 id="starting-the-router">3.1. Starting the Router</h3>
<div class="olist arabic">
<div class="title">Procedure</div>
<ol class="arabic">
@@ -1065,7 +1076,7 @@ control.</p>
</td>
<td class="content">
<div class="paragraph">
-<p>You can specify a different configuration file with which to start the router. For more information, see <a href="#methods_for_changing_router_configuration"><em>Changing a Router’s Configuration</em></a>.</p>
+<p>You can specify a different configuration file with which to start the router. For more information, see <a href="#methods-for-changing-router-configuration"><em>Changing a Router’s Configuration</em></a>.</p>
</div>
</td>
</tr>
@@ -1155,15 +1166,15 @@ messages to that address.</p>
<div class="title">Procedure</div>
<ol class="arabic">
<li>
-<p><a href="#starting_the_receiver_client">Start the receiver client</a>.</p>
+<p><a href="#starting-the-receiver-client">Start the receiver client</a>.</p>
</li>
<li>
-<p><a href="#sending_messages">Send messages</a>.</p>
+<p><a href="#sending-messages">Send messages</a>.</p>
</li>
</ol>
</div>
<div class="sect3">
-<h4 id="starting_the_receiver_client">3.2.1. Starting the Receiver Client</h4>
+<h4 id="starting-the-receiver-client">3.2.1. Starting the Receiver Client</h4>
<div class="paragraph">
<p>In this example, the receiver client is started first. This means that the messages will be sent as soon as the sender client is started.</p>
</div>
@@ -1204,7 +1215,7 @@ $ python simple_recv.py -a 127.0.0.1:5672/examples -m 5</pre>
</div>
</div>
<div class="sect3">
-<h4 id="sending_messages">3.2.2. Sending Messages</h4>
+<h4 id="sending-messages">3.2.2. Sending Messages</h4>
<div class="paragraph">
<p>After starting the receiver client, you can send messages from the sender. These messages will travel through the router to the receiver.</p>
</div>
@@ -1251,7 +1262,7 @@ $ python simple_send.py -a 127.0.0.1:5672/examples -m 5</pre>
</div>
</div>
<div class="sect1">
-<h2 id="router_configuration">4. Configuration</h2>
+<h2 id="router-configuration">4. Configuration</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Before starting Dispatch Router, you should understand where the router’s configuration file is stored, how the file is structured, and the methods you can use to modify it.</p>
@@ -1272,7 +1283,7 @@ $ python simple_send.py -a 127.0.0.1:5672/examples -m 5</pre>
<p>When Dispatch Router is installed, <code>qdrouterd.conf</code> is installed in this directory by default. When the router is started, it runs with the settings defined in this file.</p>
</div>
<div class="paragraph">
-<p>For more information about the router configuration file (including available entities and attributes), see the <a href="https://qpid.apache.org/releases/qpid-dispatch-0.8.0/man/qdrouterd.html">qdrouterd man page</a>.</p>
+<p>For more information about the router configuration file (including available entities and attributes), see the <a href="https://qpid.apache.org/releases/qpid-dispatch-1.0.1/man/qdrouterd.html" target="_blank" rel="noopener">qdrouterd man page</a>.</p>
</div>
</div>
</div>
@@ -1299,7 +1310,7 @@ $ python simple_send.py -a 127.0.0.1:5672/examples -m 5</pre>
</div>
</div>
<div class="sect2">
-<h3 id="methods_for_changing_router_configuration">4.3. Changing a Router’s Configuration</h3>
+<h3 id="methods-for-changing-router-configuration">4.3. Changing a Router’s Configuration</h3>
<div class="paragraph">
<p>You can use different methods for changing a router’s configuration based on whether the router is currently running, and whether you want the change to take effect immediately.</p>
</div>
@@ -1307,15 +1318,15 @@ $ python simple_send.py -a 127.0.0.1:5672/examples -m 5</pre>
<div class="title">Choices</div>
<ul>
<li>
-<p><a href="#making_permanent_change_to_router_configuration">Make a permanent change to the router’s configuration</a>.</p>
+<p><a href="#making-permanent-change-to-router-configuration">Make a permanent change to the router’s configuration</a>.</p>
</li>
<li>
-<p><a href="#changing_configuration_for_running_router">Change the configuration for a running router.</a></p>
+<p><a href="#changing-configuration-for-running-router">Change the configuration for a running router.</a></p>
</li>
</ul>
</div>
<div class="sect3">
-<h4 id="making_permanent_change_to_router_configuration">4.3.1. Making a Permanent Change to the Router’s Configuration</h4>
+<h4 id="making-permanent-change-to-router-configuration">4.3.1. Making a Permanent Change to the Router’s Configuration</h4>
<div class="paragraph">
<p>You can make a permanent change to the router’s configuration by editing the router’s configuration file directly. You must restart the router for the changes to take effect, but the changes will be saved even if the router is stopped.</p>
</div>
@@ -1342,7 +1353,7 @@ $ python simple_send.py -a 127.0.0.1:5672/examples -m 5</pre>
</div>
<div class="listingblock">
<div class="content">
-<pre class="nowrap"># qdrouterd -d --conf /etc/qpid-dispatch/new-configuration-file.conf</pre>
+<pre class="nowrap">$ sudo qdrouterd -d --conf /etc/qpid-dispatch/new-configuration-file.conf</pre>
</div>
</div>
</li>
@@ -1350,7 +1361,7 @@ $ python simple_send.py -a 127.0.0.1:5672/examples -m 5</pre>
</div>
</div>
<div class="sect3">
-<h4 id="changing_configuration_for_running_router">4.3.2. Changing the Configuration for a Running Router</h4>
+<h4 id="changing-configuration-for-running-router">4.3.2. Changing the Configuration for a Running Router</h4>
<div class="paragraph">
<p>If the router is running, you can change its configuration on the fly. The changes you make take effect immediately, but are lost if the router is stopped.</p>
</div>
@@ -1360,7 +1371,7 @@ $ python simple_send.py -a 127.0.0.1:5672/examples -m 5</pre>
<li>
<p>Use <code>qdmanage</code> to change the configuration.</p>
<div class="paragraph">
-<p>For more information about using <code>qdmanage</code>, see <a href="#managing_router">Managing Dispatch Router Using <em>qdmanage</em></a>.</p>
+<p>For more information about using <code>qdmanage</code>, see <a href="#managing-router">Managing Dispatch Router Using <em>qdmanage</em></a>.</p>
</div>
</li>
</ul>
@@ -1504,7 +1515,7 @@ address {
</dl>
</div>
<div class="paragraph">
-<p>For information about additional attributes, see <a href="#router_configuration_file_router">Router</a> in the <em>Configuration Reference</em>.</p>
+<p>For information about additional attributes, see <a href="https://qpid.apache.org/releases/qpid-dispatch-1.0.1/man/qdrouterd.conf.html#_router">router</a> in the <code>qdrouterd.conf</code> man page.</p>
</div>
</div>
</div>
@@ -1516,10 +1527,10 @@ address {
<div class="ulist">
<ul>
<li>
-<p><a href="#setting_up_ssl_for_encryption_and_authentication">Set up SSL/TLS for encryption, authentication, or both</a></p>
+<p><a href="#setting-up-ssl-for-encryption-and-authentication">Set up SSL/TLS for encryption, authentication, or both</a></p>
</li>
<li>
-<p><a href="#setting_up_sasl_for_authentication_and_payload_encryption">Set up SASL for authentication and payload encryption</a></p>
+<p><a href="#setting-up-sasl-for-authentication-and-payload-encryption">Set up SASL for authentication and payload encryption</a></p>
</li>
</ul>
</div>
@@ -1533,10 +1544,10 @@ address {
<div class="ulist">
<ul>
<li>
-<p><a href="#adding_incoming_connections">Add incoming connections</a></p>
+<p><a href="#adding-incoming-connections">Add incoming connections</a></p>
</li>
<li>
-<p><a href="#adding_outgoing_connections">Add outgoing connections</a></p>
+<p><a href="#adding-outgoing-connections">Add outgoing connections</a></p>
</li>
</ul>
</div>
@@ -1550,13 +1561,13 @@ address {
<div class="ulist">
<ul>
<li>
-<p><a href="#routing_messages_between_clients">Configure the router to route messages between clients directly</a></p>
+<p><a href="#routing-messages-between-clients">Configure the router to route messages between clients directly</a></p>
</li>
<li>
-<p><a href="#routing_messages_through_broker">Configure the router to route messages through a broker queue</a></p>
+<p><a href="#routing-messages-through-broker">Configure the router to route messages through a broker queue</a></p>
</li>
<li>
-<p><a href="#creating_link_route">Create a link route to define a private messaging path between endpoints</a></p>
+<p><a href="#creating-link-route">Create a link route to define a private messaging path between endpoints</a></p>
</li>
</ul>
</div>
@@ -1572,13 +1583,13 @@ address {
</div>
</div>
<div class="sect1">
-<h2 id="router_network_connections">5. Network Connections</h2>
+<h2 id="router-network-connections">5. Network Connections</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Connections define how the router communicates with clients, other routers, and brokers. You can configure <em>incoming connections</em> to define how the router listens for data from clients and other routers, and you can configure <em>outgoing connections</em> to define how the router sends data to other routers and brokers.</p>
</div>
<div class="sect2">
-<h3 id="adding_incoming_connections">5.1. Listening for Incoming Connections</h3>
+<h3 id="adding-incoming-connections">5.1. Listening for Incoming Connections</h3>
<div class="paragraph">
<p>Listening for incoming connections involves setting the host and port on which the router should listen for traffic.</p>
</div>
@@ -1611,13 +1622,13 @@ address {
</dl>
</div>
<div class="paragraph">
-<p>For information about additional attributes, see <a href="#router_configuration_file_listener">Listener</a> in the <em>Configuration Reference</em>.</p>
+<p>For information about additional attributes, see <a href="https://qpid.apache.org/releases/qpid-dispatch-1.0.1/man/qdrouterd.conf.html#_listener">listener</a> in the <code>qdrouterd.conf</code> man page.</p>
</div>
</div>
</div>
</li>
<li>
-<p>If necessary, <a href="#securing_incoming_connections">secure the connection</a>.</p>
+<p>If necessary, <a href="#securing-incoming-connections">secure the connection</a>.</p>
<div class="paragraph">
<p>If you have set up SSL/TLS or SASL in your environment, you can configure the router to only accept encrypted or authenticated communication on this connection.</p>
</div>
@@ -1629,12 +1640,12 @@ address {
</div>
</div>
<div class="sect2">
-<h3 id="adding_outgoing_connections">5.2. Adding Outgoing Connections</h3>
+<h3 id="adding-outgoing-connections">5.2. Adding Outgoing Connections</h3>
<div class="paragraph">
<p>Configuring outgoing connections involves setting the host and port on which the router connects to other routers and brokers.</p>
</div>
<div class="paragraph">
-<p>When a router connects to a broker, the broker might provide backup connection data that the router can use if the primary connection fails. If the primary connection fails, the router attempts to reconnect by using a combination of the primary and — if provided — backup connections in round-robin fashion until the connection is successful. For more information about viewing the backup connection data provided by the broker, see <a href="#managing_connectors">Managing Connectors</a>.</p>
+<p>When a router connects to a broker, the broker might provide backup connection data that the router can use if the primary connection fails. If the primary connection fails, the router attempts to reconnect by using a combination of the primary and — if provided — backup connections in round-robin fashion until the connection is successful. For more information about viewing the backup connection data provided by the broker, see <a href="#managing-connectors">Managing Connectors</a>.</p>
</div>
<div class="olist arabic">
<div class="title">Procedure</div>
@@ -1670,13 +1681,13 @@ address {
</dl>
</div>
<div class="paragraph">
-<p>For information about additional attributes, see <a href="#router_configuration_file_connector">Connector</a> in the <em>Configuration Reference</em>.</p>
+<p>For information about additional attributes, see <a href="https://qpid.apache.org/releases/qpid-dispatch-1.0.1/man/qdrouterd.conf.html#_connector">connector</a> in the <code>qdrouterd.conf</code> man page.</p>
</div>
</div>
</div>
</li>
<li>
-<p>If necessary, <a href="#securing_outgoing_connections">secure the connection</a>.</p>
+<p>If necessary, <a href="#securing-outgoing-connections">secure the connection</a>.</p>
<div class="paragraph">
<p>If you have set up SSL/TLS or SASL in your environment, you can configure the router to only send encrypted or authenticated communication on this connection.</p>
</div>
@@ -1690,9 +1701,14 @@ address {
</div>
</div>
<div class="sect1">
-<h2 id="security_config">6. Security</h2>
+<h2 id="security-config">6. Security</h2>
<div class="sectionbody">
<div class="paragraph">
+<p>Securing your router network involves configuring authentication and authorization. You can authenticate and encrypt the router’s connections using SSL/TLS or SASL. Additionally, you can authorize access to messaging resources by setting user connection restrictions and defining AMQP resource access control.</p>
+</div>
+<div class="sect2">
+<h3 id="authenticating_remote_peers">6.1. Authenticating Remote Peers</h3>
+<div class="paragraph">
<p>You can configure Dispatch Router to communicate with clients, routers, and brokers in a secure way by authenticating and encrypting the router’s connections. Dispatch Router supports the following security protocols:</p>
</div>
<div class="ulist">
@@ -1705,8 +1721,8 @@ address {
</li>
</ul>
</div>
-<div class="sect2">
-<h3 id="setting_up_ssl_for_encryption_and_authentication">6.1. Setting Up SSL/TLS for Encryption and Authentication</h3>
+<div class="sect3">
+<h4 id="setting-up-ssl-for-encryption-and-authentication">6.1.1. Setting Up SSL/TLS for Encryption and Authentication</h4>
<div class="paragraph">
<p>Before you can secure incoming and outgoing connections using SSL/TLS encryption and authentication, you must first set up the SSL/TLS profile in the router’s configuration file.</p>
</div>
@@ -1739,9 +1755,9 @@ address {
<pre class="nowrap">sslProfile {
name: <em>NAME</em>
ciphers: <em>CIPHERS</em>
- certDb: <em>PATH</em>.pem
+ caCertFile: <em>PATH</em>.pem
certFile: <em>PATH</em>.pem
- keyFile: <em>PATH</em>.pem
+ privateKeyFile: <em>PATH</em>.pem
password: <em>PASSWORD/PATH_TO_PASSWORD_FILE</em>
...
}</pre>
@@ -1776,15 +1792,15 @@ address {
<p>To see the full list of available ciphers, use the <code>openssl ciphers</code> command. For more information about each cipher, see the <a href="https://www.openssl.org/docs/manmaster/man1/ciphers.html" target="_blank" rel="noopener">ciphers man page</a>.</p>
</div>
</dd>
-<dt class="hdlist1"><code>certDb</code></dt>
+<dt class="hdlist1"><code>caCertFile</code></dt>
<dd>
-<p>The absolute path to the database that contains the public certificates of trusted certificate authorities (CA).</p>
+<p>The absolute path to the file that contains the public certificates of trusted certificate authorities (CA).</p>
<div class="paragraph">
<p>For example:</p>
</div>
<div class="listingblock">
<div class="content">
-<pre class="nowrap">certDb: /qdrouterd/ssl_certs/ca-cert.pem</pre>
+<pre class="nowrap">caCertFile: /qdrouterd/ssl_certs/ca-cert.pem</pre>
</div>
</div>
</dd>
@@ -1800,7 +1816,7 @@ address {
</div>
</div>
</dd>
-<dt class="hdlist1"><code>keyFile</code></dt>
+<dt class="hdlist1"><code>privateKeyFile</code></dt>
<dd>
<p>The absolute path to the file containing the PEM-formatted private key for the above certificate.</p>
<div class="paragraph">
@@ -1808,7 +1824,7 @@ address {
</div>
<div class="listingblock">
<div class="content">
-<pre class="nowrap">keyFile: /qdrouterd/ssl_certs/router-key-pwd.pem</pre>
+<pre class="nowrap">privateKeyFile: /qdrouterd/ssl_certs/router-key-pwd.pem</pre>
</div>
</div>
</dd>
@@ -1827,7 +1843,7 @@ address {
</dl>
</div>
<div class="paragraph">
-<p>For information about additional <code>sslProfile</code> attributes, see <a href="#router_configuration_file_sslprofile"><em>sslProfile</em></a> in the <em>Configuration Reference</em>.</p>
+<p>For information about additional <code>sslProfile</code> attributes, see <a href="https://qpid.apache.org/releases/qpid-dispatch-1.0.1/man/qdrouterd.conf.html#_sslprofile">sslProfile</a> in the <code>qdrouterd.conf</code> man page.</p>
</div>
</div>
</div>
@@ -1835,8 +1851,8 @@ address {
</ul>
</div>
</div>
-<div class="sect2">
-<h3 id="setting_up_sasl_for_authentication_and_payload_encryption">6.2. Setting Up SASL for Authentication and Payload Encryption</h3>
+<div class="sect3">
+<h4 id="setting-up-sasl-for-authentication-and-payload-encryption">6.1.2. Setting Up SASL for Authentication and Payload Encryption</h4>
<div class="paragraph">
<p>If you plan to use SASL to authenticate connections, you must first add the SASL attributes to the <code>router</code> entity in the router’s configuration file. These attributes define a set of SASL parameters that can be used by the router’s incoming and outgoing connections.</p>
</div>
@@ -1847,10 +1863,23 @@ address {
<div class="ulist">
<ul>
<li>
-<p><a href="#generating_sasl_database">The SASL database is generated.</a></p>
+<p><a href="#generating-sasl-database">The SASL database is generated.</a></p>
</li>
<li>
-<p><a href="#configuring_sasl_database">The SASL configuration file is configured.</a></p>
+<p><a href="#configuring-sasl-database">The SASL configuration file is configured.</a></p>
+</li>
+<li>
+<p>The Cyrus SASL plugin is installed for each SASL mechanism you plan to use.</p>
+<div class="paragraph">
+<p>Cyrus SASL uses plugins to support specific SASL mechanisms. Before you can use a particular SASL mechanism, the relevant plugin must be installed. For example, you need the <code>cyrus-sasl-plain</code> plugin to use SASL PLAIN authentication.</p>
+</div>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>To see a list of Cyrus SASL plugins in a <code>dnf</code>-based Linux system, use the <code>dnf search cyrus-sasl</code> command. To install a Cyrus SASL plugin, use the <code>dnf install <em>PLUGIN</em></code> command.</p>
+</div>
+</div>
+</div>
</li>
</ul>
</div>
@@ -1865,14 +1894,14 @@ address {
<div class="content">
<pre class="nowrap">router {
...
- saslConfigPath: <em>PATH</em>
+ saslConfigDir: <em>PATH</em>
saslConfigName: <em>FILE_NAME</em>
}</pre>
</div>
</div>
<div class="dlist">
<dl>
-<dt class="hdlist1"><code>saslConfigPath</code></dt>
+<dt class="hdlist1"><code>saslConfigDir</code></dt>
<dd>
<p>The absolute path to the SASL configuration file.</p>
<div class="paragraph">
@@ -1880,7 +1909,7 @@ address {
</div>
<div class="listingblock">
<div class="content">
-<pre class="nowrap">saslConfigPath: /qdrouterd/security</pre>
+<pre class="nowrap">saslConfigDir: /qdrouterd/security</pre>
</div>
</div>
</dd>
@@ -1904,8 +1933,8 @@ address {
</ul>
</div>
</div>
-<div class="sect2">
-<h3 id="securing_incoming_connections">6.3. Securing Incoming Connections</h3>
+<div class="sect3">
+<h4 id="securing-incoming-connections">6.1.3. Securing Incoming Connections</h4>
<div class="paragraph">
<p>You can secure incoming connections by configuring each connection’s <code>listener</code> entity for encryption, authentication, or both.</p>
</div>
@@ -1917,21 +1946,21 @@ address {
<div class="title">Choices</div>
<ul>
<li>
-<p><a href="#adding_ssl_encryption_to_incoming_connection">Add SSL/TLS encryption</a></p>
+<p><a href="#adding-ssl-encryption-to-incoming-connection">Add SSL/TLS encryption</a></p>
</li>
<li>
-<p><a href="#adding_sasl_authentication_to_incoming_connection">Add SASL authentication</a></p>
+<p><a href="#adding-sasl-authentication-to-incoming-connection">Add SASL authentication</a></p>
</li>
<li>
-<p><a href="#adding_ssl_client_authentication_to_incoming_connection">Add SSL/TLS client authentication</a></p>
+<p><a href="#adding-ssl-client-authentication-to-incoming-connection">Add SSL/TLS client authentication</a></p>
</li>
<li>
-<p><a href="#adding_sasl_payload_encryption_to_incoming_connection">Add SASL payload encryption</a></p>
+<p><a href="#adding-sasl-payload-encryption-to-incoming-connection">Add SASL payload encryption</a></p>
</li>
</ul>
</div>
-<div class="sect3">
-<h4 id="adding_ssl_encryption_to_incoming_connection">6.3.1. Adding SSL/TLS Encryption to an Incoming Connection</h4>
+<div class="sect4">
+<h5 id="adding-ssl-encryption-to-incoming-connection">Adding SSL/TLS Encryption to an Incoming Connection</h5>
<div class="paragraph">
<p>You can configure an incoming connection to accept encrypted connections only. By adding SSL/TLS encryption, to connect to this router, a remote peer must first start an SSL/TLS handshake with the router and be able to validate the server certificate received by the router during the handshake.</p>
</div>
@@ -1969,8 +1998,8 @@ address {
</ul>
</div>
</div>
-<div class="sect3">
-<h4 id="adding_sasl_authentication_to_incoming_connection">6.3.2. Adding SASL Authentication to an Incoming Connection</h4>
+<div class="sect4">
+<h5 id="adding-sasl-authentication-to-incoming-connection">Adding SASL Authentication to an Incoming Connection</h5>
<div class="paragraph">
<p>You can configure an incoming connection to authenticate the client using SASL. You can use SASL authentication with or without SSL/TLS encryption.</p>
</div>
@@ -2011,8 +2040,8 @@ address {
</ul>
</div>
</div>
-<div class="sect3">
-<h4 id="adding_ssl_client_authentication_to_incoming_connection">6.3.3. Adding SSL/TLS Client Authentication to an Incoming Connection</h4>
+<div class="sect4">
+<h5 id="adding-ssl-client-authentication-to-incoming-connection">Adding SSL/TLS Client Authentication to an Incoming Connection</h5>
<div class="paragraph">
<p>You can configure an incoming connection to authenticate the client using SSL/TLS.</p>
</div>
@@ -2054,8 +2083,8 @@ address {
</ul>
</div>
</div>
-<div class="sect3">
-<h4 id="adding_sasl_payload_encryption_to_incoming_connection">6.3.4. Adding SASL Payload Encryption to an Incoming Connection</h4>
+<div class="sect4">
+<h5 id="adding-sasl-payload-encryption-to-incoming-connection">Adding SASL Payload Encryption to an Incoming Connection</h5>
<div class="paragraph">
<p>If you do not use SSL/TLS, you can still encrypt the incoming connection by using SASL payload encryption.</p>
</div>
@@ -2097,8 +2126,8 @@ address {
</div>
</div>
</div>
-<div class="sect2">
-<h3 id="securing_outgoing_connections">6.4. Securing Outgoing Connections</h3>
+<div class="sect3">
+<h4 id="securing-outgoing-connections">6.1.4. Securing Outgoing Connections</h4>
<div class="paragraph">
<p>You can secure outgoing connections by configuring each connection’s <code>connector</code> entity for encryption, authentication, or both.</p>
</div>
@@ -2110,15 +2139,15 @@ address {
<div class="title">Choices</div>
<ul>
<li>
-<p><a href="#adding_ssl_authentication_to_outgoing_connection">Add SSL/TLS authentication</a></p>
+<p><a href="#adding-ssl-authentication-to-outgoing-connection">Add SSL/TLS authentication</a></p>
</li>
<li>
-<p><a href="#adding_sasl_authentication_to_outgoing_connection">Add SASL authentication</a></p>
+<p><a href="#adding-sasl-authentication-to-outgoing-connection">Add SASL authentication</a></p>
</li>
</ul>
</div>
-<div class="sect3">
-<h4 id="adding_ssl_authentication_to_outgoing_connection">6.4.1. Adding SSL/TLS Client Authentication to an Outgoing Connection</h4>
+<div class="sect4">
+<h5 id="adding-ssl-authentication-to-outgoing-connection">Adding SSL/TLS Client Authentication to an Outgoing Connection</h5>
<div class="paragraph">
<p>If an outgoing connection connects to an external client configured with mutual authentication, you should ensure that the outgoing connection is configured to provide the external client with a valid security certificate during the SSL/TLS handshake.</p>
</div>
@@ -2154,8 +2183,8 @@ address {
</ul>
</div>
</div>
-<div class="sect3">
-<h4 id="adding_sasl_authentication_to_outgoing_connection">6.4.2. Adding SASL Authentication to an Outgoing Connection</h4>
+<div class="sect4">
+<h5 id="adding-sasl-authentication-to-outgoing-connection">Adding SASL Authentication to an Outgoing Connection</h5>
<div class="paragraph">
<p>You can configure an outgoing connection to provide authentication credentials to the external container. You can use SASL authentication with or without SSL/TLS encryption.</p>
</div>
@@ -2202,894 +2231,872 @@ address {
</div>
</div>
</div>
+<div class="sect3">
+<h4 id="integrating-with-kerberos">6.1.5. Integrating with Kerberos</h4>
+<div class="paragraph">
+<p>By using the <code>GSSAPI</code> SASL mechanism, you can configure Dispatch Router to authenticate incoming connections using Kerberos.</p>
</div>
-</div>
-<div class="sect1">
-<h2 id="routing">7. Routing</h2>
-<div class="sectionbody">
+<div class="ulist">
+<div class="title">Prerequisites</div>
+<ul>
+<li>
+<p>A Kerberos infrastructure must be deployed in your environment.</p>
+</li>
+<li>
+<p>In the Kerberos environment, a service principal of <code>amqp/<em>HOSTNAME</em>@<em>REALM</em></code> must be configured.</p>
<div class="paragraph">
-<p>Routing is the process by which messages are delivered to their destinations. To accomplish this, Dispatch Router provides two routing mechanisms: <em>message routing</em> and <em>link routing</em>.</p>
+<p>This is the service principal that Dispatch Router uses.</p>
</div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">Message routing</dt>
-<dd>
-<p>Routing is performed on messages as producers send them to a router. When a message arrives on a router, the router routes the message and its <em>settlement</em> based on the message’s <em>address</em> and <em>routing pattern</em>.</p>
+</li>
+<li>
+<p>The <code>cyrus-sasl-gssapi</code> package must be installed on each client and router host machine.</p>
+</li>
+<li>
+<p><a href="#setting-up-sasl-for-authentication-and-payload-encryption">SASL must be set up for Dispatch Router</a>.</p>
+</li>
+</ul>
+</div>
+<div class="olist arabic">
+<div class="title">Procedure</div>
+<ol class="arabic">
+<li>
+<p>On the router’s host machine, open the <code>/etc/sasl2/qdrouterd.conf</code> configuration file.</p>
<div class="openblock">
<div class="content">
-<div class="imageblock" style="text-align: center">
+<div class="exampleblock">
+<div class="title">Example 1. An <code>/etc/sasl2/qdrouterd.conf</code> Configuration File</div>
<div class="content">
-<img src="images/message-routing.png" alt="Message Routing">
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">pwcheck_method: auxprop
+auxprop_plugin: sasldb
+sasldb_path: qdrouterd.sasldb
+keytab: /etc/krb5.keytab
+mech_list: ANONYMOUS DIGEST-MD5 EXTERNAL PLAIN GSSAPI</pre>
</div>
-<div class="title">Figure 2. Message Routing</div>
</div>
-<div class="paragraph">
-<p>In this diagram, the message producer attaches a link to the router, and then sends a message over the link. When the router receives the message, it identifies the message’s destination based on the message’s address, and then uses its routing table to determine the best route to deliver the message either to its destination or to the next hop in the route. All dispositions (including settlement) are propagated along the same path that the original message transfer took. Flow control is handled between the sender and the router, and then between the router and the receiver.</p>
</div>
</div>
</div>
-</dd>
-<dt class="hdlist1">Link routing</dt>
-<dd>
-<p>Routing is performed on link-attach frames, which are chained together to form a virtual messaging path that directly connects a sender and receiver. Once a link route is established, the transfer of message deliveries, flow frames, and dispositions is performed across the link route.</p>
+</div>
+</li>
+<li>
+<p>Verify the following:</p>
+<div class="ulist">
+<ul>
+<li>
+<p>The <code>mech_list</code> attribute contains the <code>GSSAPI</code> mechanism.</p>
+</li>
+<li>
+<p>The <code>keytab</code> attribute points to the location of the keytab file.</p>
+</li>
+</ul>
+</div>
+</li>
+<li>
+<p>Open the router’s configuration file.</p>
+</li>
+<li>
+<p>For each incoming connection that should use Kerberos for authentication, set the router’s <code>listener</code> to use the <code>GSSAPI</code> mechanism.</p>
<div class="openblock">
<div class="content">
-<div class="imageblock" style="text-align: center">
+<div class="exampleblock">
+<div class="title">Example 2. A <code>listener</code> in the Router Configuration File</div>
<div class="content">
-<img src="images/link-routing.png" alt="Link Routing">
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">listener {
+ ...
+ authenticatePeer: yes
+ saslMechanisms: GSSAPI
+}</pre>
+</div>
+</div>
</div>
-<div class="title">Figure 3. Link Routing</div>
</div>
<div class="paragraph">
-<p>In this diagram, a router is connected to clients and to a broker, and it provides a link route to a queue on the broker (my_queue). The sender connects to the router, and the router propagates the link-attaches to the broker to form a direct link between the sender and the broker. The sender can begin sending messages to the queue, and the router passes the deliveries along the link route directly to the broker queue.</p>
+<p>For more information about these attributes, see <a href="#adding-sasl-authentication-to-incoming-connection">Adding SASL Authentication to an Incoming Connection</a>.</p>
</div>
</div>
</div>
-</dd>
-</dl>
+</li>
+</ol>
+</div>
+</div>
</div>
<div class="sect2">
-<h3 id="comparison_of_message_routing_and_link_routing">7.1. Comparison of Message Routing and Link Routing</h3>
+<h3 id="authorizing_access_to_messaging_resources">6.2. Authorizing Access to Messaging Resources</h3>
<div class="paragraph">
-<p>While you can use either message routing or link routing to deliver messages to a destination, they differ in several important ways. Understanding these differences will enable you to choose the proper routing approach for any particular use case.</p>
+<p>You can restrict the number of user connections, and control access to AMQP messaging resources by configuring <em>policies</em>.</p>
</div>
<div class="sect3">
-<h4 id="when_to_use_message_routing">7.1.1. When to Use Message Routing</h4>
+<h4 id="types_of_policies">6.2.1. Types of Policies</h4>
<div class="paragraph">
-<p>Message routing is the default routing mechanism. You can use it to route messages on a per-message basis between clients directly (direct-routed messaging), or to and from broker queues (brokered messaging).</p>
+<p>You can configure two different types of policies: <em>global policies</em> and <em>vhost policies</em>.</p>
</div>
+<div class="dlist">
+<dl>
+<dt class="hdlist1">Global policies</dt>
+<dd>
+<p>Settings for the router. A global policy defines the maximum number of incoming user connections for the router (across all vhost policies), and defines how the router should use vhost policies.</p>
+</dd>
+<dt class="hdlist1">Vhost policies</dt>
+<dd>
+<p>Connection and AMQP resource limits for a messaging endpoint (called an AMQP virtual host, or <em>vhost</em>). A vhost policy defines what a client can access on a messaging endpoint over a particular connection.</p>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
<div class="paragraph">
-<p>Message routing is best suited to the following requirements:</p>
+<p>A vhost is typically the name of the host to which the client connection is directed. For example, if a client application opens a connection to the <code>amqp://mybroker.example.com:5672/queue01</code> URL, the vhost would be <code>mybroker.example.com</code>.</p>
</div>
-<div class="ulist">
-<ul>
-<li>
-<p>Default, basic message routing.</p>
-<div class="paragraph">
-<p>Dispatch Router automatically routes messages by default, so manual configuration is only required if you want routing behavior that is different than the default.</p>
+</td>
+</tr>
+</table>
</div>
-</li>
-<li>
-<p>Message-based routing patterns.</p>
-<div class="paragraph">
-<p>Message routing supports both anycast and multicast routing patterns. You can load-balance individual messages across multiple consumers, and multicast (or fan-out) messages to multiple subscribers.</p>
+</dd>
+</dl>
</div>
-</li>
-<li>
-<p>Sharding messages across multiple broker instances when message delivery order is not important.</p>
<div class="paragraph">
-<p>Sharding messages from one producer might cause that producer’s messages to be received in a different order than the order in which they were sent.</p>
-</div>
-</li>
-</ul>
+<p>The resource limits defined in global and vhost policies are applied to user connections only. The limits do not affect inter-router connections or router connections that are outbound to waypoints.</p>
</div>
-<div class="paragraph">
-<p>Message routing is not suitable for any of the following requirements:</p>
</div>
-<div class="ulist">
-<ul>
-<li>
-<p>Dedicated path through the router network.</p>
+<div class="sect3">
+<h4 id="how_dispatch_router_applies_policies">6.2.2. How Dispatch Router Applies Policies</h4>
<div class="paragraph">
-<p>For inter-router transfers, all message deliveries are placed on the same inter-router link. This means that the traffic for one address might affect the delivery of the traffic for another address.</p>
+<p>Dispatch Router uses both global and vhost policies to determine whether to permit a connection, and if it is permitted, to apply the appropriate resource limits.</p>
</div>
-</li>
-<li>
-<p>Granular, end-to-end flow control.</p>
<div class="paragraph">
-<p>With message routing, end-to-end flow control is based on the settlement of deliveries and therefore might not be optimal in every case.</p>
+<p>When a client creates a connection to the router, the router first determines whether to allow or deny the connection. This decision is based on the following criteria:</p>
</div>
-</li>
+<div class="ulist">
+<ul>
<li>
-<p>Transaction support.</p>
+<p>Whether the connection will exceed the router’s global connection limit (defined in the global policy)</p>
</li>
<li>
-<p>Server-side selectors.</p>
+<p>Whether the connection will exceed the vhost’s connection limits (defined in the vhost policy that matches the host to which the connection is directed)</p>
</li>
</ul>
</div>
-</div>
-<div class="sect3">
-<h4 id="when_to_use_link_routing">7.1.2. When to Use Link Routing</h4>
<div class="paragraph">
-<p>Link routing requires more detailed configuration than message routing as well as an AMQP container that can accept incoming link-attaches (typically a broker). However, link routing enables you to satisfy more advanced use cases than message routing.</p>
+<p>If the connection is allowed, the router assigns the user (the authenticated user name from the connection) to a user group, and enforces the user group’s resource limits for the lifetime of the connection.</p>
+</div>
</div>
+<div class="sect3">
+<h4 id="configuring_global_policies">6.2.3. Configuring Global Policies</h4>
<div class="paragraph">
-<p>You can use link routing if you need to meet any of the following requirements:</p>
+<p>You can set the incoming connection limit for the router and define how it should use vhost policies by configuring a global policy.</p>
</div>
<div class="ulist">
+<div class="title">Procedure</div>
<ul>
<li>
-<p>Dedicated path through the router network.</p>
-<div class="paragraph">
-<p>With link routing, each link route has dedicated inter-router links through the network. Each link has its own dedicated message buffers, which means that the address will not have "head-of-line" blocking issues with other addresses.</p>
+<p>In the router configuration file, add a <code>policy</code> section.</p>
+<div class="openblock">
+<div class="content">
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">policy = {
+ maxConnections: 10000 <b class="conum">(1)</b>
+ enableVhostPolicy: true <b class="conum">(2)</b>
+ policyDir: /etc/qpid-dispatch/policies/ <b class="conum">(3)</b>
+ defaultVhost: $default <b class="conum">(4)</b>
+}</pre>
</div>
-</li>
-<li>
-<p>Sharding messages across multiple broker instances with guaranteed delivery order.</p>
-<div class="paragraph">
-<p>Link routing to a sharded queue preserves the delivery order of the producer’s messages by causing all messages on that link to go to the same broker instance.</p>
</div>
+<div class="colist arabic">
+<ol>
+<li>
+<p>The maximum number of concurrent client connections allowed for this router. This limit is always enforced, even if no other policy settings have been defined. The limit is applied to all incoming connections regardless of remote host, authenticated user, or targeted vhost. The default (and the maximum) value is <code>65535</code>.</p>
</li>
<li>
-<p>End-to-end flow control.</p>
+<p>Enables the router to enforce the connection denials and resource limits defined in the configured vhost policies. The default is <code>false</code>, which means that the router will not enforce any vhost policies.</p>
+<div class="admonitionblock note">
+<table>
+<tr>
+<td class="icon">
+<div class="title">Note</div>
+</td>
+<td class="content">
<div class="paragraph">
-<p>Flow control is "real" in that credits flow across the link route from the receiver to the sender.</p>
+<p>Setting <code>enableVhostPolicy</code> to <code>false</code> improves the router’s performance.</p>
+</div>
+</td>
+</tr>
+</table>
</div>
</li>
<li>
-<p>Transaction support.</p>
-<div class="paragraph">
-<p>Link routing supports local transactions to a broker.</p>
-</div>
+<p>The absolute path to a directory that holds vhost policy definition files in JSON format (<code>*.json</code>). The router processes all of the vhost policies in each JSON file that is in this directory. For more information, see <a href="#configuring-vhost-policies-json">Configuring Vhost Policies as JSON Files</a>.</p>
</li>
<li>
-<p>Server-side selectors.</p>
-<div class="paragraph">
-<p>With a link route, consumers can provide server-side selectors for broker subscriptions.</p>
+<p>The name of the default vhost policy, which is applied to any connection for which a vhost policy has not been configured. The default is <code>$default</code>. If <code>defaultVhost</code> is not defined, then default vhost processing is disabled.</p>
+</li>
+</ol>
+</div>
+</div>
</div>
</li>
</ul>
</div>
</div>
-</div>
-<div class="sect2">
-<h3 id="configuring_message_routing">7.2. Configuring Message Routing</h3>
+<div class="sect3">
+<h4 id="configuring_vhost_policies">6.2.4. Configuring Vhost Policies</h4>
<div class="paragraph">
-<p>With message routing, routing is performed on messages as producers send them to a router. When a message arrives on a router, the router routes the message and its <em>settlement</em> based on the message’s <em>address</em> and <em>routing pattern</em>.</p>
+<p>You configure vhost policies to define the connection limits and AMQP resource limits for a messaging endpoint.</p>
</div>
<div class="paragraph">
-<p>With message routing, you can do the following:</p>
+<p>A vhost policy consists of the following:</p>
</div>
<div class="ulist">
<ul>
<li>
-<p>Route messages between clients (direct-routed, or brokerless messaging)</p>
+<p>Connection limits</p>
<div class="paragraph">
-<p>This involves configuring an address with a routing pattern. All messages sent to the address will be routed based on the routing pattern.</p>
+<p>These limits control the number of users that can be connected to the vhost simultaneously.</p>
</div>
</li>
<li>
-<p>Route messages through a broker queue (brokered messaging)</p>
+<p>User groups</p>
<div class="paragraph">
-<p>This involves configuring a waypoint address to identify the broker queue and then connecting the router to the broker. All messages sent to the waypoint address will be routed to the broker queue.</p>
+<p>A user group defines the messaging resources that the group members are permitted to access. Each user group defines the following:</p>
+</div>
+<div class="ulist">
+<ul>
+<li>
+<p>A set of users that can connect to the vhost (the group members)</p>
+</li>
+<li>
+<p>The remote hosts from which the group members may connect to the router network</p>
+</li>
+<li>
+<p>The AMQP resources that the group members are permitted to access on the vhost</p>
+</li>
+</ul>
</div>
</li>
</ul>
</div>
-<div class="sect3">
-<h4 id="addresses_2">7.2.1. Addresses</h4>
<div class="paragraph">
-<p>Addresses determine how messages flow through your router network. An address designates an endpoint in your messaging network, such as:</p>
+<p>You can use the following methods to configure vhost policies:</p>
</div>
<div class="ulist">
<ul>
<li>
-<p>Endpoint processes that consume data or offer a service</p>
+<p><a href="#configuring-vhost-policies-router">Configure vhost policies directly in the router configuration file</a></p>
</li>
<li>
-<p>Topics that match multiple consumers to multiple producers</p>
+<p><a href="#configuring-vhost-policies-json">Configure vhost policies as JSON files</a></p>
</li>
+</ul>
+</div>
+<div class="sect4">
+<h5 id="configuring-vhost-policies-router">Configuring Vhost Policies in the Router Configuration File</h5>
+<div class="paragraph">
+<p>You can configure vhost policies in the router configuration file by configuring <code>vhost</code> entities. However, if multiple routers in your router network should be configured with the same vhost configuration, you will need to add the <code>vhost</code> configuration to each router’s configuration file.</p>
+</div>
+<div class="olist arabic">
+<div class="title">Procedure</div>
+<ol class="arabic">
<li>
-<p>Entities within a messaging broker:</p>
-<div class="ulist">
-<ul>
+<p>In the router configuration file, add a <code>vhost</code> section and define the connection limits for it.</p>
+<div class="openblock">
+<div class="content">
+<div class="paragraph">
+<p>The connection limits apply to all users that are connected to the vhost. These limits control the number of users that can be connected simultaneously to the vhost.</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">vhost = {
+ hostname: example.com <b class="conum">(1)</b>
+ maxConnections: 10000 <b class="conum">(2)</b>
+ maxConnectionsPerUser: 1000 <b class="conum">(3)</b>
+ maxConnectionsPerHost: 1000 <b class="conum">(4)</b>
+ allowUnknownUser: false <b class="conum">(5)</b>
+ ...
+}</pre>
+</div>
+</div>
+<div class="colist arabic">
+<ol>
<li>
-<p>Queues</p>
+<p>The host name of the vhost. This vhost policy will be applied to any client connection that is directed to the hostname that you specify.</p>
</li>
<li>
-<p>Durable Topics</p>
+<p>The global maximum number of concurrent client connections allowed for this vhost. The default is <code>65535</code>.</p>
</li>
<li>
-<p>Exchanges</p>
+<p>The maximum number of concurrent client connections allowed for any user. The default is <code>65535</code>.</p>
</li>
-</ul>
-</div>
+<li>
+<p>The maximum number of concurrent client connections allowed for any remote host (the host from which the client is connecting). The default is <code>65535</code>.</p>
</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>When a router receives a message, it uses the message’s address to determine where to send the message (either its destination or one step closer to its destination).</p>
+<li>
+<p>Whether unknown users (users who are not members of a defined user group) are allowed to connect to the vhost. Unknown users are assigned to the <code>$default</code> user group and receive <code>$default</code> settings. The default is <code>false</code>, which means that unknown users are not allowed.</p>
+</li>
+</ol>
</div>
</div>
-<div class="sect3">
-<h4 id="routing_patterns_overview">7.2.2. Routing Patterns</h4>
-<div class="paragraph">
-<p>Each address has one of the following routing patterns, which define the path that a message with the address can take across the messaging network:</p>
</div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">Balanced</dt>
-<dd>
-<p>An anycast method that allows multiple consumers to use the same address. Each message is delivered to a single consumer only, and Dispatch Router attempts to balance the traffic load across the router network.</p>
+</li>
+<li>
+<p>In the <code>vhost</code> section, beneath the connection settings that you added, add the necessary user groups.</p>
<div class="openblock">
<div class="content">
<div class="paragraph">
-<p>If multiple consumers are attached to the same address, each router determines which outbound path should receive a message by considering each path’s current number of unsettled deliveries. This means that more messages will be delivered along paths where deliveries are settled at higher rates.</p>
+<p>A user group defines what messaging resources the members of the group are allowed to access.</p>
</div>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<div class="title">Note</div>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>Dispatch Router neither measures nor uses message settlement time to determine which outbound path to use.</p>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">vhost {
+ ...
+ groups: {
+ admin: { <b class="conum">(1)</b>
+ users: admin1, admin2 <b class="conum">(2)</b>
+ remoteHosts: 127.0.0.1, ::1 <b class="conum">(3)</b>
+ sources: * <b class="conum">(4)</b>
+ targets: * <b class="conum">(5)</b>
+ },
+ ...
+ }
+}</pre>
</div>
-</td>
-</tr>
-</table>
+</div>
+<div class="colist arabic">
+<ol>
+<li>
+<p>The name of the user group.</p>
+</li>
+<li>
+<p>A list of authenticated users for this user group. Use commas to separate multiple users. A user may belong to only one vhost user group.</p>
+</li>
+<li>
+<p>A list of remote hosts from which the users may connect. A host can be a hostname, IP address, or IP address range. Use commas to separate multiple hosts. To allow access from all remote hosts, specify a wildcard <code>*</code>. To deny access from all remote hosts, leave this attribute blank.</p>
+</li>
+<li>
+<p>A list of AMQP source addresses from which users in this group may receive messages. To specify multiple AMQP addresses, separate the addresses with either a comma or a space. If you do not specify any addresses, users in this group are not allowed to receive messages from any addresses.</p>
+<div class="paragraph">
+<p>You can use the substitution token <code>{user}</code> to specify an AMQP address that contains a user’s authenticated user name. This enables you to allow access to resources specific to each user in the user group without having to name each user individually. You can only specify the <code>{user}</code> token once in an AMQP address name. If there are multiple tokens in an address, only the leftmost token will be substituted.</p>
</div>
<div class="paragraph">
-<p>In this scenario, the messages are spread across both receivers regardless of path length:</p>
+<p>You can use an asterisk (<code>*</code>) wildcard to match one or more characters in an AMQP address. However, this wildcard is only recognized if it is the last character in the address name.</p>
</div>
-<div class="imageblock" style="text-align: center">
+<div class="exampleblock">
+<div class="title">Example 3. Allowing Access to All Addresses</div>
<div class="content">
-<img src="images/balanced-routing.png" alt="Balanced Message Routing">
-</div>
-<div class="title">Figure 4. Balanced Message Routing</div>
-</div>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">sources: *</pre>
</div>
</div>
-</dd>
-<dt class="hdlist1">Closest</dt>
-<dd>
-<p>An anycast method in which every message is sent along the shortest path to reach the destination, even if there are other consumers for the same address.</p>
-<div class="paragraph">
-<p>Dispatch Router determines the shortest path based on the topology cost to reach each of the consumers. If there are multiple consumers with the same lowest cost, messages will be spread evenly among those consumers.</p>
</div>
-<div class="paragraph">
-<p>In this scenario, all messages sent by <code>Sender</code> will be delivered to <code>Receiver 1</code>:</p>
</div>
-<div class="imageblock" style="text-align: center">
+<div class="exampleblock">
+<div class="title">Example 4. Restricting Access to All Addresses</div>
<div class="content">
-<img src="images/closest-routing.png" alt="Closest Message Routing">
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">sources:</pre>
</div>
-<div class="title">Figure 5. Closest Message Routing</div>
</div>
-</dd>
-<dt class="hdlist1">Multicast</dt>
-<dd>
-<p>Messages are sent to all consumers attached to the address. Each consumer will receive one copy of the message.</p>
-<div class="paragraph">
-<p>In this scenario, all messages are sent to all receivers:</p>
</div>
-<div class="imageblock" style="text-align: center">
+</div>
+<div class="exampleblock">
+<div class="title">Example 5. Allowing Access to Specific Addresses</div>
<div class="content">
-<img src="images/multicast-routing.png" alt="Multicast Message Routing">
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">sources: myaddress01, myaddress02, myaddress03</pre>
</div>
-<div class="title">Figure 6. Multicast Message Routing</div>
</div>
-</dd>
-</dl>
</div>
</div>
-<div class="sect3">
-<h4 id="message_settlement_2">7.2.3. Message Settlement</h4>
+<div class="exampleblock">
+<div class="title">Example 6. Allowing Access to User-Specific Addresses</div>
+<div class="content">
<div class="paragraph">
-<p>Message settlement is negotiated between the producer and the router when the producer establishes a link to the router. Depending on the settlement pattern, messages might be delivered with any of the following degrees of reliability:</p>
+<p>This definition allows access to any address that meets any of the following rules:</p>
</div>
<div class="ulist">
<ul>
<li>
-<p>At most once</p>
+<p>Starts with the prefix <code>tmp_</code> and ends with the user name</p>
</li>
<li>
-<p>At least once</p>
+<p>Starts with the prefix <code>temp</code> followed by any additional characters</p>
</li>
<li>
-<p>Exactly once</p>
+<p>Starts with the user name, is followed by <code>-home-</code>, and ends with any additional characters</p>
</li>
</ul>
</div>
-<div class="paragraph">
-<p>Dispatch Router treats all messages as either <em>pre-settled</em> or <em>unsettled</em>, and it is responsible for propagating the settlement of each message it routes.</p>
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">sources: tmp_{user}, temp*, {user}-home-*</pre>
+</div>
</div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1">Pre-settled</dt>
-<dd>
-<p>Sometimes called <em>fire and forget</em>, the router settles the incoming and outgoing deliveries and propagates the settlement to the message’s destination. However, it does not guarantee delivery.</p>
-</dd>
-<dt class="hdlist1">Unsettled</dt>
-<dd>
-<p>The router propagates the settlement between the sender and receiver, and guarantees one of the following outcomes:</p>
-<div class="ulist">
-<ul>
-<li>
-<p>The message is delivered and settled, with the consumer’s disposition indicated.</p>
-</li>
-<li>
-<p>The delivery is settled with a disposition of <code>RELEASED</code>.</p>
-<div class="paragraph">
-<p>This means that the message did not reach its destination.</p>
</div>
-</li>
-<li>
-<p>The delivery is settled with a disposition of <code>MODIFIED</code>.</p>
-<div class="paragraph">
-<p>This means that the message might or might not have reached its destination. The delivery is considered to be "in-doubt" and should be re-sent if "at least once" delivery is required.</p>
</div>
</li>
<li>
-<p>The link, session, or connection to Dispatch Router was dropped, and all deliveries are "in-doubt".</p>
+<p>A list of AMQP target addresses from which users in this group may send messages. You can specify multiple AMQP addresses and use user name substitution and wildcards the same way as with source addresses.</p>
</li>
-</ul>
+</ol>
</div>
-</dd>
-</dl>
</div>
</div>
-<div class="sect3">
-<h4 id="routing_messages_between_clients">7.2.4. Routing Messages Between Clients</h4>
+</li>
+<li>
+<p>If necessary, add any advanced user group settings to the vhost user group.</p>
<div class="paragraph">
-<p>You can route messages between clients without using a broker. In a brokerless scenario (sometimes called <em>direct-routed messaging</em>), Dispatch Router routes messages between clients directly.</p>
+<p>The advanced user group settings enable you to define resource limits based on the AMQP connection open, session begin, and link attach phases of the connection. For more information, see <a href="https://qpid.apache.org/releases/qpid-dispatch-1.0.1/man/qdrouterd.conf.html#_vhostUserGroupSettings" target="_blank" rel="noopener">Vhost User Group Settings</a>.</p>
+</div>
+</li>
+</ol>
+</div>
</div>
+<div class="sect4">
+<h5 id="configuring-vhost-policies-json">Configuring Vhost Policies as JSON Files</h5>
<div class="paragraph">
-<p>To route messages between clients, you configure an address with a routing distribution pattern. When a router receives a message with this address, the message is routed to its destination or destinations based on the address’s routing distribution pattern.</p>
+<p>As an alternative to using the router configuration file, you can configure vhost policies in JSON files. If you have multiple routers that need to share the same vhost configuration, you can put the vhost configuration JSON files in a location accessible to each router, and then configure the routers to apply the vhost policies defined in these JSON files.</p>
</div>
<div class="olist arabic">
<div class="title">Procedure</div>
<ol class="arabic">
<li>
-<p>In the router’s configuration file, add an <code>address</code> section:</p>
-<div class="openblock">
+<p>Determine where to store the vhost policy JSON files.</p>
+<div class="paragraph">
+<p>The directory should be accessible by each router that needs to apply these vhost policies.</p>
+</div>
+</li>
+<li>
+<p>In the directory you determined, create a JSON file for each vhost policy.</p>
+<div class="paragraph">
+<p>The vhost policy is configured the same way as a <code>vhost</code> entity in the router configuration file, only using JSON syntax. For more information about vhost policy attributes, see <a href="#configuring-vhost-policies-router">Configuring Vhost Policies in the Router Configuration File</a>.</p>
+</div>
+<div class="exampleblock">
+<div class="title">Example 7. Sample Vhost Policy JSON File</div>
<div class="content">
<div class="listingblock">
<div class="content">
-<pre class="nowrap">address {
- prefix: <em>ADDRESS_PREFIX</em>
- distribution: balanced|closest|multicast
- ...
-}</pre>
+<pre class="highlightjs highlight nowrap"><code class="language-json hljs" data-lang="json">{
+ "vhost": {
+ "name": "example.com",
+ "maxConnectionsPerUser": 100,
+ "allowUnknownUser": true,
+ "groups": {
+ "admin": {
+ "users": ["admin1", "admin2"],
+ "sources": "*",
+ "targets": "*"
+ },
+ "developers": {
+ "users": ["dev1", "dev2", "dev3"],
+ "remoteHosts": "*",
+ "sources": ["myqueue1", "myqueue2"],
+ "targets": ["myqueue1", "myqueue2"]
+ }
+ }
+ }
+}</code></pre>
</div>
</div>
-<div class="dlist">
-<dl>
-<dt class="hdlist1"><code>prefix</code> | <code>pattern</code></dt>
-<dd>
-<p>The address or group of addresses to which the address settings should be applied. You can specify a prefix to match an exact address or beginning segment of an address. Alternatively, you can specify a pattern to match an address using wildcards.</p>
-<div class="paragraph">
-<p>A <em>prefix</em> matches either an exact address or the beginning segment within an address that is delimited by either a <code>.</code> or <code>/</code> character. For example, the prefix <code>my_address</code> would match the address <code>my_address</code> as well as <code>my_address.1</code> and <code>my_address/1</code>. However, it would not match <code>my_address1</code>.</p>
</div>
-<div class="paragraph">
-<p>A <em>pattern</em> matches an address that corresponds to a pattern. A pattern is a sequence of words delimited by either a <code>.</code> or <code>/</code> character. You can use wildcard characters to represent a word. The <code>*</code> character matches exactly one word, and the <code>#</code> character matches any sequence of zero or more words.</p>
</div>
-<div class="paragraph">
-<p>The <code>*</code> and <code>#</code> characters are reserved as wildcards. Therefore, you should not use them in the message address.</p>
+</li>
+<li>
+<p>In the router configuration file, locate the <code>policy</code> entity and set the <code>policyDir</code> attribute to point to the directory where the vhost policy JSON files are stored.</p>
+<div class="exampleblock">
+<div class="title">Example 8. A <code>policy</code> Entity</div>
+<div class="content">
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">policy = {
+ maxConnections: 1000
+ enableVhostPolicy: true
+ policyDir: /etc/vhost-policies/ <b class="conum">(1)</b>
+ defaultVhost: $default
+}</pre>
</div>
-<div class="paragraph">
-<p>The following table shows some examples of address patterns:</p>
</div>
-<table class="tableblock frame-all grid-all spread">
-<colgroup>
-<col style="width: 25%;">
-<col style="width: 75%;">
-</colgroup>
-<tbody>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock">This pattern…​</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">Matches…​</p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>news</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>news</code></p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>news/*/sports</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>news/europe/sports</code> and <code>news/usa/sports</code>, but not <code>news</code> or <code>news/europe/fr/sports</code></p></td>
-</tr>
-<tr>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>news/#</code></p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock"><code>news</code>, <code>news/europe</code>, <code>news/usa</code>, <code>news/usa/sports</code></p></td>
-</tr>
-</tbody>
-</table>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<div class="title">Note</div>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>You can convert a <code>prefix</code> value to a <code>pattern</code> by appending <code>/#</code> to it. For example, the prefix <code>a/b/c</code> is equivalent to the pattern <code>a/b/c/#</code>.</p>
+<div class="colist arabic">
+<ol>
+<li>
+<p>The absolute path to a directory that holds vhost policy definition files in JSON format (*.json). The router processes all of the vhost policies in each JSON file that is in this directory.</p>
+</li>
+</ol>
+</div>
</div>
-</td>
-</tr>
-</table>
</div>
-</dd>
-<dt class="hdlist1"><code>distribution</code></dt>
-<dd>
-<p>The message distribution pattern. The default is <code>balanced</code>, but you can specify any of the following options:</p>
-<div class="ulist">
-<ul>
-<li>
-<p><code>balanced</code> - Messages sent to the address will be routed to one of the receivers, and the routing network will attempt to balance the traffic load based on the rate of settlement.</p>
</li>
<li>
-<p><code>closest</code> - Messages sent to the address are sent on the shortest path to reach the destination. It means that if there are multiple receivers for the same address, only the closest one will receive the message.</p>
+<p>Repeat the previous step for each additional router that should use the vhost policies located in the vhost policy directory.</p>
</li>
-<li>
-<p><code>multicast</code> - Messages are sent to all receivers that are attached to the address in a <em>publish/subscribe</em> model.</p>
-<div class="paragraph">
-<p>For more information about message distribution patterns, see <a href="#routing_patterns_overview">Routing Patterns</a>.</p>
+</ol>
</div>
-</li>
-</ul>
</div>
-</dd>
-</dl>
</div>
+<div class="sect3">
+<h4 id="example_configuring_a_vhost_policy">6.2.5. Example: Configuring a Vhost Policy</h4>
<div class="paragraph">
-<p>For information about additional attributes, see <a href="#router_configuration_file_address">Address</a> in the <em>Configuration Reference</em>.</p>
+<p>In this example, a vhost policy defines resource limits for clients connecting to the <code>example.com</code> host.</p>
</div>
+<div class="exampleblock">
+<div class="title">Example 9. A Vhost Policy in the Router Configuration File</div>
+<div class="content">
+<div class="listingblock">
+<div class="content">
+<pre class="nowrap">vhost {
+ name: example.com <b class="conum">(1)</b>
+ maxConnectionsPerUser: 10 <b class="conum">(2)</b>
+ allowUnknownUser: true <b class="conum">(3)</b>
+ groups: {
+ admin: {
+ users: admin-01, admin-02 <b class="conum">(4)</b>
+ remoteHosts: 127.0.0.1, ::1 <b class="conum">(5)</b>
+ sources: * <b class="conum">(6)</b>
+ targets: * <b class="conum">(6)</b>
+ },
+ $default: {
+ remoteHosts: * <b class="conum">(7)</b>
+ sources: news*, sports*, chat* <b class="conum">(8)</b>
+ targets: chat* <b class="conum">(9)</b>
+ }
+ }
+}</pre>
</div>
</div>
+<div class="colist arabic">
+<ol>
+<li>
+<p>The rules defined in this vhost policy will be applied to any user connecting to <code>example.com</code>.</p>
</li>
<li>
-<p>Add the same <code>address</code> section to any other routers that need to use the address.</p>
-<div class="paragraph">
-<p>The <code>address</code> that you added to this router configuration file only controls how this router distributes messages sent to the address. If you have additional routers in your router network that should distribute messages for this address, then you must add the same <code>address</code> section to each of their configuration files.</p>
-</div>
+<p>Each user can open up to 10 connections to the vhost.</p>
+</li>
+<li>
+<p>Any user can connect to this vhost. Users that are not part of the <code>admin</code> group are assigned to the <code>$default</code> group.</p>
+</li>
+<li>
+<p>If the <code>admin-01</code> or <code>admin-02</code> user connects to the vhost, they are assigned to the <code>admin</code> user group.</p>
+</li>
+<li>
+<p>Users in the <code>admin</code> user group must connect from localhost. If the admin user attempts to connect from any other host, the connection will be denied.</p>
+</li>
+<li>
+<p>Users in the admin user group can send and receive from any address offered by the vhost.</p>
+</li>
+<li>
+<p>Any non-admin user is permitted to connect from any host.</p>
+</li>
+<li>
+<p>Non-admin users are permitted to receive messages from any addresses that start with the <code>news</code>, <code>sports</code>, or <code>chat</code> prefixes.</p>
+</li>
+<li>
+<p>Non-admin users are permitted to send messages to any address that start with the <code>chat</code> prefix.</p>
</li>
</ol>
</div>
</div>
+</div>
+</div>
<div class="sect3">
-<h4 id="routing_messages_through_broker">7.2.5. Routing Messages Through a Broker Queue</h4>
+<h4 id="example_using_a_vhost_policy_to_limit_memory_consumption_advanced">6.2.6. Example: Using a Vhost Policy to Limit Memory Consumption (Advanced)</h4>
<div class="paragraph">
-<p>You can rout
<TRUNCATED>
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org
[8/8] qpid-site git commit: QPID-8154: Make more-resources the last
thing in the resource nav
Posted by jr...@apache.org.
QPID-8154: Make more-resources the last thing in the resource nav
Project: http://git-wip-us.apache.org/repos/asf/qpid-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-site/commit/f9417e2b
Tree: http://git-wip-us.apache.org/repos/asf/qpid-site/tree/f9417e2b
Diff: http://git-wip-us.apache.org/repos/asf/qpid-site/diff/f9417e2b
Branch: refs/heads/asf-site
Commit: f9417e2b983ad513cabc5458dc26bc23069dbd4e
Parents: b64809e
Author: Justin Ross <jr...@apache.org>
Authored: Sat Apr 28 07:08:36 2018 -0700
Committer: Justin Ross <jr...@apache.org>
Committed: Sat Apr 28 07:12:18 2018 -0700
----------------------------------------------------------------------
content/index.html | 6 +++---
input/index.html.in | 6 +++---
2 files changed, 6 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/f9417e2b/content/index.html
----------------------------------------------------------------------
diff --git a/content/index.html b/content/index.html
index ecf181d..614fce9 100644
--- a/content/index.html
+++ b/content/index.html
@@ -140,7 +140,7 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
</ul>
<h2>Deploy AMQP networks</h2>
-
+
<ul>
<li><a href="/components/broker-j/index.html">Broker-J</a> - A pure-Java AMQP message broker</li>
<li><a href="/components/cpp-broker/index.html">C++ broker</a> - A native-code AMQP message broker</li>
@@ -186,13 +186,13 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
<li><a href="/components/index.html">Components</a></li>
<li><a href="/releases/index.html">Releases</a></li>
<li><a href="/security.html">Security</a></li>
- <li><a href="/resources.html">More resources</a></li>
<li><a href="/dashboard.html">Dashboard</a></li>
+ <li><a href="/resources.html">More resources</a></li>
</ul>
</section>
<section>
- <a href="https://www.apache.org/events/current-event.html">
+ <a href="https://www.apache.org/events/current-event.html">
<img src="https://www.apache.org/events/current-event-234x60.png"/>
</a>
</section>
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/f9417e2b/input/index.html.in
----------------------------------------------------------------------
diff --git a/input/index.html.in b/input/index.html.in
index f609536..89b6242 100644
--- a/input/index.html.in
+++ b/input/index.html.in
@@ -24,7 +24,7 @@
</ul>
<h2>Deploy AMQP networks</h2>
-
+
<ul>
<li><a href="{{site_url}}/components/broker-j/index.html">Broker-J</a> - A pure-Java AMQP message broker</li>
<li><a href="{{site_url}}/components/cpp-broker/index.html">C++ broker</a> - A native-code AMQP message broker</li>
@@ -70,13 +70,13 @@
<li><a href="{{site_url}}/components/index.html">Components</a></li>
<li><a href="{{site_url}}/releases/index.html">Releases</a></li>
<li><a href="{{site_url}}/security.html">Security</a></li>
- <li><a href="{{site_url}}/resources.html">More resources</a></li>
<li><a href="{{site_url}}/dashboard.html">Dashboard</a></li>
+ <li><a href="{{site_url}}/resources.html">More resources</a></li>
</ul>
</section>
<section>
- <a href="https://www.apache.org/events/current-event.html">
+ <a href="https://www.apache.org/events/current-event.html">
<img src="https://www.apache.org/events/current-event-234x60.png"/>
</a>
</section>
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org
[3/8] qpid-site git commit: QPID-8154: Add missing images to the
Dispatch user guide; regen the master doc snapshot
Posted by jr...@apache.org.
http://git-wip-us.apache.org/repos/asf/qpid-site/blob/b64809eb/scripts/gen-dispatch-release-docs
----------------------------------------------------------------------
diff --git a/scripts/gen-dispatch-release-docs b/scripts/gen-dispatch-release-docs
index 14bd6ba..0ff7d94 100755
--- a/scripts/gen-dispatch-release-docs
+++ b/scripts/gen-dispatch-release-docs
@@ -19,6 +19,7 @@
#
import os
+
from generate import *
def gen_dispatch_docs(release, source_dir, output_dir):
@@ -37,13 +38,15 @@ def gen_dispatch_docs(release, source_dir, output_dir):
copy(input_file, output_file)
- book_input_file = join(source_dir, "doc", "new-book", "book.adoc")
+ book_input_dir = join(source_dir, "doc", "new-book")
+ book_input_file = join(book_input_dir, "book.adoc")
book_output_dir = join(output_dir, "user-guide")
book_output_file = join(book_output_dir, "index.html.in")
make_dir(book_output_dir)
call("asciidoctor --no-header-footer -o {} {}", book_output_file, book_input_file)
+ copy(join(book_input_dir, "images"), join(book_output_dir, "images"))
# Asciidoctor strips the title - add it back
prepend(book_output_file, "<h1>Using Qpid Dispatch</h1>\n")
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org