You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by va...@apache.org on 2022/11/24 12:50:55 UTC
[qpid-site] branch asf-site updated: Update site for Qpid Broker-J release 9.0.0
This is an automated email from the ASF dual-hosted git repository.
vavrtom pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/qpid-site.git
The following commit(s) were added to refs/heads/asf-site by this push:
new f7b278d27 Update site for Qpid Broker-J release 9.0.0
f7b278d27 is described below
commit f7b278d272a02d306472e328359608afd7bbf741
Author: Tomas Vavricka <va...@apache.org>
AuthorDate: Thu Nov 24 13:49:28 2022 +0100
Update site for Qpid Broker-J release 9.0.0
---
content/components/broker-j/index.html | 14 +-
content/dashboard.html | 2 +-
content/documentation.html | 2 +-
content/download.html | 6 +-
content/releases/index.html | 7 +-
content/releases/qpid-broker-j-7.1.10/index.html | 2 +-
content/releases/qpid-broker-j-7.1.11/index.html | 2 +-
content/releases/qpid-broker-j-7.1.12/index.html | 2 +-
content/releases/qpid-broker-j-7.1.9/index.html | 2 +-
content/releases/qpid-broker-j-8.0.0/index.html | 2 +-
content/releases/qpid-broker-j-8.0.1/index.html | 2 +-
content/releases/qpid-broker-j-8.0.2/index.html | 2 +-
content/releases/qpid-broker-j-8.0.3/index.html | 2 +-
content/releases/qpid-broker-j-8.0.4/index.html | 2 +-
content/releases/qpid-broker-j-8.0.5/index.html | 2 +-
content/releases/qpid-broker-j-8.0.6/index.html | 2 +-
.../book/Apache-Qpid-Broker-J-Book.fo | 5123 ++++++++++++++++++++
.../book/Apache-Qpid-Broker-J-Book.html | 159 +
.../book/Apache-Qpid-Broker-J-Book.pdf | Bin 0 -> 753513 bytes
...ndix-BDB-HA-initial-configuration-creation.html | 184 +
...oker-Appendix-BDB-HA-initial-configuration.html | 255 +
...Java-Broker-Appendix-Environment-Variables.html | 197 +
.../Java-Broker-Appendix-Operation-Logging.html | 572 +++
.../book/Java-Broker-Appendix-Queue-Alerts.html} | 113 +-
...va-Broker-Appendix-Queue-Declare-Arguments.html | 233 +
...Java-Broker-Appendix-Statistics-Reporting.html} | 95 +-
.../Java-Broker-Appendix-System-Properties.html} | 97 +-
...oker-Backup-And-Recovery-Virtualhost-Node.html} | 100 +-
...va-Broker-Backup-And-Recovery-Virtualhost.html} | 97 +-
.../book/Java-Broker-Backup-And-Recovery.html} | 91 +-
...-Broker-Concepts-Authentication-Providers.html} | 92 +-
.../book/Java-Broker-Concepts-Broker.html} | 88 +-
.../book/Java-Broker-Concepts-Exchanges.html | 205 +
.../book/Java-Broker-Concepts-Other-Services.html} | 98 +-
.../book/Java-Broker-Concepts-Ports.html} | 99 +-
.../book/Java-Broker-Concepts-Queues.html | 322 ++
...va-Broker-Concepts-RemoteReplicationNodes.html} | 89 +-
.../Java-Broker-Concepts-Virtualhost-Nodes.html} | 98 +-
.../book/Java-Broker-Concepts-Virtualhosts.html} | 103 +-
.../book/Java-Broker-Concepts.html | 178 +
.../Java-Broker-Getting-Started-CommandLine.html | 201 +
.../book/Java-Broker-Getting-Started-Logging.html} | 91 +-
...er-Getting-Started-Starting-Stopping-Unix.html} | 100 +-
...Getting-Started-Starting-Stopping-Windows.html} | 100 +-
.../book/Java-Broker-Getting-Started.html} | 95 +-
.../Java-Broker-High-Availability-Backup.html} | 89 +-
.../Java-Broker-High-Availability-Behaviour.html | 242 +
...a-Broker-High-Availability-ClientFailover.html} | 92 +-
...ava-Broker-High-Availability-CreatingGroup.html | 185 +
.../Java-Broker-High-Availability-DiskSpace.html} | 91 +-
...er-High-Availability-Network-Requirements.html} | 92 +-
...a-Broker-High-Availability-NodeOperations.html} | 108 +-
...Java-Broker-High-Availability-OverviewOfHA.html | 168 +
...igh-Availability-Reset-Group-Infomational.html} | 95 +-
.../Java-Broker-High-Availability-Security.html} | 90 +-
.../book/Java-Broker-High-Availability.html} | 97 +-
...al-Configuration-Configuration-Properties.html} | 110 +-
...itial-Configuration-Create-Initial-Config.html} | 103 +-
...Java-Broker-Initial-Configuration-Example.html} | 187 +-
...ial-Configuration-Initial-Config-Location.html} | 97 +-
...ava-Broker-Initial-Configuration-Location.html} | 95 +-
.../Java-Broker-Initial-Configuration-Type.html} | 105 +-
.../book/Java-Broker-Initial-Configuration.html} | 97 +-
.../book/Java-Broker-Installation-Download.html} | 90 +-
...Java-Broker-Installation-InstallationUnix.html} | 112 +-
...a-Broker-Installation-InstallationWindows.html} | 113 +-
...-Broker-Installation-OptionalDependencies.html} | 90 +-
.../Java-Broker-Installation-Prerequistes.html} | 107 +-
.../book/Java-Broker-Installation.html} | 89 +-
.../book/Java-Broker-Introduction.html} | 97 +-
...Broker-Management-Channel-AMQP-Intrinstic.html} | 90 +-
.../Java-Broker-Management-Channel-REST-API.html | 1954 ++++++++
...Java-Broker-Management-Channel-Web-Console.html | 191 +
.../book/Java-Broker-Management-Channel.html | 156 +
...agement-Managing-Access-Control-Providers.html} | 90 +-
...nagement-Managing-Authentication-Providers.html | 163 +
.../Java-Broker-Management-Managing-Broker.html | 171 +
...ement-Managing-Connection-Limit-Providers.html} | 89 +-
...Java-Broker-Management-Managing-Consumers.html} | 95 +-
.../Java-Broker-Management-Managing-Entities.html | 165 +
...Java-Broker-Management-Managing-Exchanges.html} | 94 +-
...roker-Management-Managing-Group-Providers.html} | 88 +-
.../Java-Broker-Management-Managing-Keystores.html | 189 +
...va-Broker-Management-Managing-Plugin-HTTP.html} | 97 +-
.../Java-Broker-Management-Managing-Ports.html | 179 +
...Java-Broker-Management-Managing-Producers.html} | 91 +-
.../Java-Broker-Management-Managing-Queues.html | 163 +
...Management-Managing-RemoteReplicationNodes.html | 167 +
...ava-Broker-Management-Managing-Truststores.html | 192 +
...oker-Management-Managing-Virtualhost-Nodes.html | 176 +
...va-Broker-Management-Managing-Virtualhosts.html | 171 +
.../book/Java-Broker-Management-Metrics.html} | 104 +-
...ellaneous-Installing-External-JDBC-Driver.html} | 92 +-
.../book/Java-Broker-Miscellaneous.html} | 96 +-
.../Java-Broker-Runtime-Background-Recovery.html} | 101 +-
...er-Runtime-Close-Connection-When-No-Route.html} | 115 +-
.../Java-Broker-Runtime-Connection-Limit.html} | 111 +-
.../book/Java-Broker-Runtime-Consumers.html} | 119 +-
...Java-Broker-Runtime-Disk-Space-Management.html} | 128 +-
.../book/Java-Broker-Runtime-Flow-To-Disk.html | 192 +
...er-Runtime-Handling-Undeliverable-Messages.html | 195 +
.../book/Java-Broker-Runtime-Instrumentation.html} | 90 +-
.../book/Java-Broker-Runtime-Memory.html | 281 ++
.../Java-Broker-Runtime-Message-Compression.html} | 102 +-
.../Java-Broker-Runtime-Transaction-Timeout.html | 186 +
.../book/Java-Broker-Runtime.html | 250 +
...ava-Broker-Security-AccessControlProviders.html | 372 ++
...-Broker-Security-Configuration-Encryption.html} | 107 +-
...a-Broker-Security-ConnectionLimitProviders.html | 284 ++
.../Java-Broker-Security-Group-Providers.html} | 124 +-
.../book/Java-Broker-Security.html | 346 ++
...Broker-Virtual-Host-Initial-Configuration.html} | 108 +-
.../book/apds02.html} | 104 +-
.../book/apds03.html} | 103 +-
.../qpid-broker-j-9.0.0/book/css/style.css | 131 +
.../book/images/Broker-MessageFlow.png | Bin 0 -> 36840 bytes
.../book/images/Broker-Model.png | Bin 0 -> 56499 bytes
.../book/images/Broker-PortAuthFlow.png | Bin 0 -> 56560 bytes
.../book/images/Exchange-Direct.png | Bin 0 -> 36554 bytes
.../book/images/Exchange-Direct.svg | 23 +
.../book/images/Exchange-Fanout.png | Bin 0 -> 23348 bytes
.../book/images/Exchange-Fanout.svg | 23 +
.../book/images/Exchange-Topic-Hierarchical.png | Bin 0 -> 40952 bytes
.../book/images/Exchange-Topic-Hierarchical.svg | 23 +
.../book/images/Exchange-Topic-JMSSelector.png | Bin 0 -> 44744 bytes
.../book/images/Exchange-Topic-JMSSelector.svg | 23 +
.../book/images/Exchange-Topic.png | Bin 0 -> 26939 bytes
.../book/images/Exchange-Topic.svg | 23 +
.../images/HA-BDBHAMessageStore-MBean-jconsole.png | Bin 0 -> 52533 bytes
.../book/images/HA-Create-1.png | Bin 0 -> 50328 bytes
.../book/images/HA-Create-2.png | Bin 0 -> 51814 bytes
.../book/images/HA-Create-3.png | Bin 0 -> 83561 bytes
.../book/images/HA-Overview.png | Bin 0 -> 54044 bytes
.../book/images/Management-Web-Add-Dialogue.png | Bin 0 -> 92422 bytes
.../book/images/Management-Web-Auth.png | Bin 0 -> 85993 bytes
.../book/images/Management-Web-Console.png | Bin 0 -> 232164 bytes
.../book/images/Management-Web-ContextVar.png | Bin 0 -> 33453 bytes
.../book/images/Management-Web-Edit-Dialogue.png | Bin 0 -> 31643 bytes
.../images/Management-Web-Logging-FileLogger.png | Bin 0 -> 107458 bytes
.../Management-Web-Logging-InclusionRule.png | Bin 0 -> 118676 bytes
.../images/Management-Web-Logging-MemoryLogger.png | Bin 0 -> 190563 bytes
.../book/images/Management-Web-Tab.png | Bin 0 -> 119713 bytes
.../book/images/VirtualHost-Model.png | Bin 0 -> 24613 bytes
.../releases/qpid-broker-j-9.0.0/book/index.html | 159 +
.../index.html | 26 +-
.../release-notes.html} | 117 +-
input/_transom_config.py | 2 +-
input/releases/index.md | 7 +-
.../book/Apache-Qpid-Broker-J-Book.fo | 5123 ++++++++++++++++++++
.../book/Apache-Qpid-Broker-J-Book.html.in | 16 +
.../book/Apache-Qpid-Broker-J-Book.pdf | Bin 0 -> 753513 bytes
...x-BDB-HA-initial-configuration-creation.html.in | 41 +
...r-Appendix-BDB-HA-initial-configuration.html.in | 112 +
...a-Broker-Appendix-Environment-Variables.html.in | 54 +
.../Java-Broker-Appendix-Operation-Logging.html.in | 429 ++
.../book/Java-Broker-Appendix-Queue-Alerts.html.in | 26 +
...Broker-Appendix-Queue-Declare-Arguments.html.in | 90 +
...va-Broker-Appendix-Statistics-Reporting.html.in | 8 +
.../Java-Broker-Appendix-System-Properties.html.in | 10 +
...er-Backup-And-Recovery-Virtualhost-Node.html.in | 13 +
...-Broker-Backup-And-Recovery-Virtualhost.html.in | 10 +
.../book/Java-Broker-Backup-And-Recovery.html.in | 4 +
...roker-Concepts-Authentication-Providers.html.in | 5 +
.../book/Java-Broker-Concepts-Broker.html.in | 1 +
.../book/Java-Broker-Concepts-Exchanges.html.in | 62 +
.../Java-Broker-Concepts-Other-Services.html.in | 11 +
.../book/Java-Broker-Concepts-Ports.html.in | 12 +
.../book/Java-Broker-Concepts-Queues.html.in | 179 +
...-Broker-Concepts-RemoteReplicationNodes.html.in | 2 +
.../Java-Broker-Concepts-Virtualhost-Nodes.html.in | 11 +
.../book/Java-Broker-Concepts-Virtualhosts.html.in | 16 +
.../book/Java-Broker-Concepts.html.in | 35 +
...Java-Broker-Getting-Started-CommandLine.html.in | 58 +
.../Java-Broker-Getting-Started-Logging.html.in | 4 +
...-Getting-Started-Starting-Stopping-Unix.html.in | 13 +
...tting-Started-Starting-Stopping-Windows.html.in | 13 +
.../book/Java-Broker-Getting-Started.html.in | 8 +
.../Java-Broker-High-Availability-Backup.html.in | 2 +
...Java-Broker-High-Availability-Behaviour.html.in | 99 +
...Broker-High-Availability-ClientFailover.html.in | 5 +
...-Broker-High-Availability-CreatingGroup.html.in | 42 +
...Java-Broker-High-Availability-DiskSpace.html.in | 4 +
...-High-Availability-Network-Requirements.html.in | 5 +
...Broker-High-Availability-NodeOperations.html.in | 21 +
...a-Broker-High-Availability-OverviewOfHA.html.in | 25 +
...h-Availability-Reset-Group-Infomational.html.in | 8 +
.../Java-Broker-High-Availability-Security.html.in | 3 +
.../book/Java-Broker-High-Availability.html.in | 10 +
...-Configuration-Configuration-Properties.html.in | 23 +
...ial-Configuration-Create-Initial-Config.html.in | 16 +
...va-Broker-Initial-Configuration-Example.html.in | 100 +
...l-Configuration-Initial-Config-Location.html.in | 10 +
...a-Broker-Initial-Configuration-Location.html.in | 8 +
.../Java-Broker-Initial-Configuration-Type.html.in | 18 +
.../book/Java-Broker-Initial-Configuration.html.in | 10 +
.../book/Java-Broker-Installation-Download.html.in | 3 +
...va-Broker-Installation-InstallationUnix.html.in | 25 +
...Broker-Installation-InstallationWindows.html.in | 26 +
...roker-Installation-OptionalDependencies.html.in | 3 +
.../Java-Broker-Installation-Prerequistes.html.in | 20 +
.../book/Java-Broker-Installation.html.in | 2 +
.../book/Java-Broker-Introduction.html.in | 10 +
...oker-Management-Channel-AMQP-Intrinstic.html.in | 3 +
...Java-Broker-Management-Channel-REST-API.html.in | 1811 +++++++
...a-Broker-Management-Channel-Web-Console.html.in | 48 +
.../book/Java-Broker-Management-Channel.html.in | 13 +
...ement-Managing-Access-Control-Providers.html.in | 3 +
...ement-Managing-Authentication-Providers.html.in | 20 +
.../Java-Broker-Management-Managing-Broker.html.in | 28 +
...ent-Managing-Connection-Limit-Providers.html.in | 2 +
...va-Broker-Management-Managing-Consumers.html.in | 8 +
...ava-Broker-Management-Managing-Entities.html.in | 22 +
...va-Broker-Management-Managing-Exchanges.html.in | 7 +
...ker-Management-Managing-Group-Providers.html.in | 1 +
...va-Broker-Management-Managing-Keystores.html.in | 46 +
...-Broker-Management-Managing-Plugin-HTTP.html.in | 10 +
.../Java-Broker-Management-Managing-Ports.html.in | 36 +
...va-Broker-Management-Managing-Producers.html.in | 4 +
.../Java-Broker-Management-Managing-Queues.html.in | 20 +
...agement-Managing-RemoteReplicationNodes.html.in | 24 +
...-Broker-Management-Managing-Truststores.html.in | 49 +
...r-Management-Managing-Virtualhost-Nodes.html.in | 33 +
...Broker-Management-Managing-Virtualhosts.html.in | 28 +
.../book/Java-Broker-Management-Metrics.html.in | 17 +
...laneous-Installing-External-JDBC-Driver.html.in | 5 +
.../book/Java-Broker-Miscellaneous.html.in | 9 +
...Java-Broker-Runtime-Background-Recovery.html.in | 14 +
...-Runtime-Close-Connection-When-No-Route.html.in | 28 +
.../Java-Broker-Runtime-Connection-Limit.html.in | 24 +
.../book/Java-Broker-Runtime-Consumers.html.in | 32 +
...va-Broker-Runtime-Disk-Space-Management.html.in | 41 +
.../book/Java-Broker-Runtime-Flow-To-Disk.html.in | 49 +
...Runtime-Handling-Undeliverable-Messages.html.in | 52 +
.../Java-Broker-Runtime-Instrumentation.html.in | 3 +
.../book/Java-Broker-Runtime-Memory.html.in | 138 +
...Java-Broker-Runtime-Message-Compression.html.in | 15 +
...Java-Broker-Runtime-Transaction-Timeout.html.in | 43 +
.../book/Java-Broker-Runtime.html.in | 107 +
...-Broker-Security-AccessControlProviders.html.in | 229 +
...roker-Security-Configuration-Encryption.html.in | 20 +
...roker-Security-ConnectionLimitProviders.html.in | 141 +
.../Java-Broker-Security-Group-Providers.html.in | 37 +
.../book/Java-Broker-Security.html.in | 203 +
...oker-Virtual-Host-Initial-Configuration.html.in | 21 +
.../qpid-broker-j-9.0.0/book/apds02.html.in | 17 +
.../qpid-broker-j-9.0.0/book/apds03.html.in | 16 +
.../qpid-broker-j-9.0.0/book/css/style.css | 131 +
.../book/images/Broker-MessageFlow.png | Bin 0 -> 36840 bytes
.../book/images/Broker-Model.png | Bin 0 -> 56499 bytes
.../book/images/Broker-PortAuthFlow.png | Bin 0 -> 56560 bytes
.../book/images/Exchange-Direct.png | Bin 0 -> 36554 bytes
.../book/images/Exchange-Direct.svg | 23 +
.../book/images/Exchange-Fanout.png | Bin 0 -> 23348 bytes
.../book/images/Exchange-Fanout.svg | 23 +
.../book/images/Exchange-Topic-Hierarchical.png | Bin 0 -> 40952 bytes
.../book/images/Exchange-Topic-Hierarchical.svg | 23 +
.../book/images/Exchange-Topic-JMSSelector.png | Bin 0 -> 44744 bytes
.../book/images/Exchange-Topic-JMSSelector.svg | 23 +
.../book/images/Exchange-Topic.png | Bin 0 -> 26939 bytes
.../book/images/Exchange-Topic.svg | 23 +
.../images/HA-BDBHAMessageStore-MBean-jconsole.png | Bin 0 -> 52533 bytes
.../book/images/HA-Create-1.png | Bin 0 -> 50328 bytes
.../book/images/HA-Create-2.png | Bin 0 -> 51814 bytes
.../book/images/HA-Create-3.png | Bin 0 -> 83561 bytes
.../book/images/HA-Overview.png | Bin 0 -> 54044 bytes
.../book/images/Management-Web-Add-Dialogue.png | Bin 0 -> 92422 bytes
.../book/images/Management-Web-Auth.png | Bin 0 -> 85993 bytes
.../book/images/Management-Web-Console.png | Bin 0 -> 232164 bytes
.../book/images/Management-Web-ContextVar.png | Bin 0 -> 33453 bytes
.../book/images/Management-Web-Edit-Dialogue.png | Bin 0 -> 31643 bytes
.../images/Management-Web-Logging-FileLogger.png | Bin 0 -> 107458 bytes
.../Management-Web-Logging-InclusionRule.png | Bin 0 -> 118676 bytes
.../images/Management-Web-Logging-MemoryLogger.png | Bin 0 -> 190563 bytes
.../book/images/Management-Web-Tab.png | Bin 0 -> 119713 bytes
.../book/images/VirtualHost-Model.png | Bin 0 -> 24613 bytes
.../qpid-broker-j-9.0.0/book/index.html.in | 16 +
input/releases/qpid-broker-j-9.0.0/index.md | 69 +
.../releases/qpid-broker-j-9.0.0/release-notes.md | 61 +
278 files changed, 26550 insertions(+), 5390 deletions(-)
diff --git a/content/components/broker-j/index.html b/content/components/broker-j/index.html
index 44ce44371..f96475a18 100644
--- a/content/components/broker-j/index.html
+++ b/content/components/broker-j/index.html
@@ -133,22 +133,22 @@ that stores, routes, and forwards messages using AMQP.</p>
<li>Speaks and translates among all versions of AMQP</li>
<li>AMQP over WebSockets</li>
<li>Management via REST, AMQP Management, and web console</li>
-<li><a href="/releases/qpid-broker-j-8.0.6/book/Java-Broker-Security-AccessControlProviders.html">Access control lists</a></li>
+<li><a href="/releases/qpid-broker-j-9.0.0/book/Java-Broker-Security-AccessControlProviders.html">Access control lists</a></li>
<li>Flexible logging</li>
<li>Flow to disk</li>
<li>Header-based routing</li>
<li>Heartbeats</li>
-<li><a href="/releases/qpid-broker-j-8.0.6/book/Java-Broker-High-Availability.html">High availability</a></li>
+<li><a href="/releases/qpid-broker-j-9.0.0/book/Java-Broker-High-Availability.html">High availability</a></li>
<li>Message groups</li>
<li>Pluggable persistence supporting Derby, SQL, and BDB stores</li>
-<li><a href="/releases/qpid-broker-j-8.0.6/book/Java-Broker-Security.html#Java-Broker-Security-Authentication-Providers">Pluggable authentication</a> supporting LDAP, Kerberos, OAUTH2 and SSL client certificates</li>
-<li><a href="/releases/qpid-broker-j-8.0.6/book/Java-Broker-Runtime-Disk-Space-Management.html#Qpid-Producer-Flow-Control">Producer flow control</a></li>
+<li><a href="/releases/qpid-broker-j-9.0.0/book/Java-Broker-Security.html#Java-Broker-Security-Authentication-Providers">Pluggable authentication</a> supporting LDAP, Kerberos, OAUTH2 and SSL client certificates</li>
+<li><a href="/releases/qpid-broker-j-9.0.0/book/Java-Broker-Runtime-Disk-Space-Management.html#Qpid-Producer-Flow-Control">Producer flow control</a></li>
<li>Secure connection via SSL</li>
<li>Server-side selectors</li>
<li>Specialized queuing with last value queue, priority queue, and sorted queue</li>
<li>Threshold alerts</li>
<li>Transactions</li>
-<li><a href="/releases/qpid-broker-j-8.0.6/book/Java-Broker-Runtime-Handling-Undeliverable-Messages.html">Undeliverable message handling</a></li>
+<li><a href="/releases/qpid-broker-j-9.0.0/book/Java-Broker-Runtime-Handling-Undeliverable-Messages.html">Undeliverable message handling</a></li>
<li>Virtual hosts</li>
<li>Support for message compression</li>
</ul>
@@ -158,7 +158,7 @@ that stores, routes, and forwards messages using AMQP.</p>
<h2 id="documentation">Documentation</h2>
<ul>
-<li><a href="/releases/qpid-broker-j-8.0.6/book/index.html">Broker book</a></li>
+<li><a href="/releases/qpid-broker-j-9.0.0/book/index.html">Broker book</a></li>
<li><a href="https://github.com/apache/qpid-broker-j/blob/main/README.md">How to build Apache Qpid Broker-J</a></li>
</ul>
@@ -169,7 +169,7 @@ that stores, routes, and forwards messages using AMQP.</p>
<h2 id="releases">Releases</h2>
<ul>
-<li><a href="/releases/qpid-broker-j-8.0.6">Qpid Broker-J 8.0.6</a></li>
+<li><a href="/releases/qpid-broker-j-9.0.0">Qpid Broker-J 9.0.0</a></li>
<li><a href="/releases/index.html#past-releases">Past releases</a></li>
</ul>
diff --git a/content/dashboard.html b/content/dashboard.html
index 81fd32865..a628457c1 100644
--- a/content/dashboard.html
+++ b/content/dashboard.html
@@ -141,7 +141,7 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
<tbody>
<tr>
<td><a href="/components/broker-j/index.html">Qpid Broker-J</a></td>
- <td><a href="/releases/qpid-broker-j-8.0.6">8.0.6</a></td>
+ <td><a href="/releases/qpid-broker-j-9.0.0">9.0.0</a></td>
<td><a href="https://issues.apache.org/jira/projects/QPID">Summary</a> • <a href="https://issues.apache.org/jira/issues/?jql=project+%3D+QPID+and+resolution+is+null+and+component+in+%28%22Broker-J%22%2C+%22Java+Build%22%2C+%22Java+Documentation%22%2C+%22Java+Performance+Tests%22%2C+%22Java+Tests%22%2C+%22Java+Tools%22%29">Open issues</a> • <a href="https://issues.apache.org/jira/issues/?jql=project+%3D+QPID+and+component+in+%28%22Broker-J%22%2C+%22Java+Build%22%2C+%22Java [...]
<td><a href="https://travis-ci.com/github/apache/qpid-broker-j"><img src="https://travis-ci.com/apache/qpid-broker-j.svg?branch=main" height="20"/></a></td>
<td><a href="https://gitbox.apache.org/repos/asf/qpid-broker-j.git">Git</a> • <a href="https://github.com/apache/qpid-broker-j">GitHub</a></td>
diff --git a/content/documentation.html b/content/documentation.html
index 5369542ff..db54e42ef 100644
--- a/content/documentation.html
+++ b/content/documentation.html
@@ -181,7 +181,7 @@ You can find older versions with our
<ul>
<li><a href="/components/broker-j/index.html">Overview</a></li>
-<li><a href="/releases/qpid-broker-j-8.0.6/book/index.html">Broker book</a></li>
+<li><a href="/releases/qpid-broker-j-9.0.0/book/index.html">Broker book</a></li>
</ul>
</section>
diff --git a/content/download.html b/content/download.html
index 9240ab089..2234bae3a 100644
--- a/content/download.html
+++ b/content/download.html
@@ -206,9 +206,9 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
<tbody>
<tr>
<td><a href="/components/broker-j/index.html">Broker-J</a></td>
- <td>8.0.6</td>
- <td><a href="https://www.apache.org/dyn/closer.lua?filename=qpid/broker-j/8.0.6/apache-qpid-broker-j-8.0.6-src.tar.gz&action=download">Source</a> (<a href="https://downloads.apache.org/qpid/broker-j/8.0.6/apache-qpid-broker-j-8.0.6-src.tar.gz.asc">ASC</a>, <a href="https://downloads.apache.org/qpid/broker-j/8.0.6/apache-qpid-broker-j-8.0.6-src.tar.gz.sha512">SHA512</a>), <a href="https://www.apache.org/dyn/closer.lua?filename=qpid/broker-j/8.0.6/binaries/apache-qpid-broker-j-8.0.6 [...]
- <td><a href="/releases/qpid-broker-j-8.0.6/index.html">Release Page</a></td>
+ <td>9.0.0</td>
+ <td><a href="https://www.apache.org/dyn/closer.lua?filename=qpid/broker-j/9.0.0/apache-qpid-broker-j-9.0.0-src.tar.gz&action=download">Source</a> (<a href="https://downloads.apache.org/qpid/broker-j/9.0.0/apache-qpid-broker-j-9.0.0-src.tar.gz.asc">ASC</a>, <a href="https://downloads.apache.org/qpid/broker-j/9.0.0/apache-qpid-broker-j-9.0.0-src.tar.gz.sha512">SHA512</a>), <a href="https://www.apache.org/dyn/closer.lua?filename=qpid/broker-j/9.0.0/binaries/apache-qpid-broker-j-9.0.0 [...]
+ <td><a href="/releases/qpid-broker-j-9.0.0/index.html">Release Page</a></td>
</tr>
<tr>
<td><a href="/components/cpp-broker/index.html">C++ broker</a></td>
diff --git a/content/releases/index.html b/content/releases/index.html
index c932df964..8279b11ab 100644
--- a/content/releases/index.html
+++ b/content/releases/index.html
@@ -126,6 +126,7 @@ the
<div class="two-column">
<ul>
+<li><a href="qpid-broker-j-9.0.0/index.html">Qpid Broker-J 9.0.0</a>, November 2022</li>
<li><a href="qpid-protonj2-1.0.0-M11/index.html">Qpid ProtonJ2 1.0.0-M11</a>, November 2022</li>
<li><a href="qpid-proton-dotnet-1.0.0-M6/index.html">Qpid proton-dotnet 1.0.0-M6</a>, November 2022</li>
<li><a href="qpid-proton-0.38.0/index.html">Qpid Proton 0.38.0</a>, November 2022</li>
@@ -134,7 +135,6 @@ the
<li><a href="qpid-proton-j-0.34.0/index.html">Qpid Proton-J 0.34.0</a>, September 2022</li>
<li><a href="qpid-dispatch-1.19.0/index.html">Qpid Dispatch 1.19.0</a>, March 2022</li>
<li><a href="qpid-interop-test-0.3.0/index.html">Qpid Interop-test 0.3.0</a>, November 2021</li>
-<li><a href="qpid-broker-j-8.0.6/index.html">Qpid Broker-J 8.0.6</a>, August 2021</li>
<li><a href="qpid-jms-amqp-0-x-6.4.0/index.html">Qpid JMS AMQP 0-x 6.4.0</a>, June 2020</li>
<li><a href="qpid-cpp-1.39.0/index.html">Qpid C++ 1.39.0</a>, October 2018</li>
<li><a href="qpid-python-1.37.0/index.html">Qpid Python 1.37.0</a>, November 2017</li>
@@ -173,8 +173,9 @@ the
<li><a href="qpid-jms-1.3.0/index.html">Qpid JMS 1.3.0</a>, October 2021</li>
<li><a href="qpid-proton-j-0.33.10/index.html">Qpid Proton-J 0.33.10</a>, October 2021</li>
<li><a href="qpid-jms-1.2.0/index.html">Qpid JMS 1.2.0</a>, September 2021</li>
-<li><a href="qpid-dispatch-1.17.0/index.html">Qpid Dispatch 1.17.0</a>, August 2021</li>
<li><a href="qpid-proton-j-0.33.9/index.html">Qpid Proton-J 0.33.9</a>, August 2021</li>
+<li><a href="qpid-broker-j-8.0.6/index.html">Qpid Broker-J 8.0.6</a>, August 2021</li>
+<li><a href="qpid-dispatch-1.17.0/index.html">Qpid Dispatch 1.17.0</a>, August 2021</li>
<li><a href="qpid-proton-0.35.0/index.html">Qpid Proton 0.35.0</a>, July 2021</li>
<li><a href="qpid-jms-1.1.0/index.html">Qpid JMS 1.1.0</a>, July 2021</li>
<li><a href="qpid-dispatch-1.16.1/index.html">Qpid Dispatch 1.16.1</a>, July 2021</li>
@@ -198,7 +199,7 @@ the
<li><a href="qpid-proton-0.33.0/index.html">Qpid Proton 0.33.0</a>, November 2020</li>
<li><a href="qpid-broker-j-8.0.2/index.html">Qpid Broker-J 8.0.2</a>, October 2020</li>
<li><a href="qpid-broker-j-7.1.10/index.html">Qpid Broker-J 7.1.10</a>, October 2020</li>
-<li><a href="qpid-proton-j-0.33.7/index.html">Qpid Proton-J 0.33.7</a>, Ocotber 2020</li>
+<li><a href="qpid-proton-j-0.33.7/index.html">Qpid Proton-J 0.33.7</a>, October 2020</li>
<li><a href="qpid-broker-j-8.0.1/index.html">Qpid Broker-J 8.0.1</a>, September 2020</li>
<li><a href="qpid-broker-j-7.1.9/index.html">Qpid Broker-J 7.1.9</a>, September 2020</li>
<li><a href="qpid-dispatch-1.14.0/index.html">Qpid Dispatch 1.14.0</a>, September 2020</li>
diff --git a/content/releases/qpid-broker-j-7.1.10/index.html b/content/releases/qpid-broker-j-7.1.10/index.html
index 71d822648..f9656c645 100644
--- a/content/releases/qpid-broker-j-7.1.10/index.html
+++ b/content/releases/qpid-broker-j-7.1.10/index.html
@@ -191,7 +191,7 @@ files you download.</p>
<script type="text/javascript">
_deferredFunctions.push(function() {
- if ("7.1.10" === "8.0.6" || "7.1.10" === "") {
+ if ("7.1.10" === "9.0.0" || "7.1.10" === "") {
_modifyCurrentReleaseLinks();
}
});
diff --git a/content/releases/qpid-broker-j-7.1.11/index.html b/content/releases/qpid-broker-j-7.1.11/index.html
index d8be9ecf8..535f3edaa 100644
--- a/content/releases/qpid-broker-j-7.1.11/index.html
+++ b/content/releases/qpid-broker-j-7.1.11/index.html
@@ -191,7 +191,7 @@ files you download.</p>
<script type="text/javascript">
_deferredFunctions.push(function() {
- if ("7.1.11" === "8.0.6" || "7.1.11" === "") {
+ if ("7.1.11" === "9.0.0" || "7.1.11" === "") {
_modifyCurrentReleaseLinks();
}
});
diff --git a/content/releases/qpid-broker-j-7.1.12/index.html b/content/releases/qpid-broker-j-7.1.12/index.html
index 16d35d7a6..cb5076b21 100644
--- a/content/releases/qpid-broker-j-7.1.12/index.html
+++ b/content/releases/qpid-broker-j-7.1.12/index.html
@@ -191,7 +191,7 @@ files you download.</p>
<script type="text/javascript">
_deferredFunctions.push(function() {
- if ("7.1.12" === "8.0.6" || "7.1.12" === "") {
+ if ("7.1.12" === "9.0.0" || "7.1.12" === "") {
_modifyCurrentReleaseLinks();
}
});
diff --git a/content/releases/qpid-broker-j-7.1.9/index.html b/content/releases/qpid-broker-j-7.1.9/index.html
index 63f7e9ebe..8ab8e1289 100644
--- a/content/releases/qpid-broker-j-7.1.9/index.html
+++ b/content/releases/qpid-broker-j-7.1.9/index.html
@@ -191,7 +191,7 @@ files you download.</p>
<script type="text/javascript">
_deferredFunctions.push(function() {
- if ("7.1.9" === "8.0.6" || "7.1.9" === "") {
+ if ("7.1.9" === "9.0.0" || "7.1.9" === "") {
_modifyCurrentReleaseLinks();
}
});
diff --git a/content/releases/qpid-broker-j-8.0.0/index.html b/content/releases/qpid-broker-j-8.0.0/index.html
index 3457c81e3..1b80c8044 100644
--- a/content/releases/qpid-broker-j-8.0.0/index.html
+++ b/content/releases/qpid-broker-j-8.0.0/index.html
@@ -191,7 +191,7 @@ files you download.</p>
<script type="text/javascript">
_deferredFunctions.push(function() {
- if ("8.0.0" === "8.0.6" || "8.0.0" === "") {
+ if ("8.0.0" === "9.0.0" || "8.0.0" === "") {
_modifyCurrentReleaseLinks();
}
});
diff --git a/content/releases/qpid-broker-j-8.0.1/index.html b/content/releases/qpid-broker-j-8.0.1/index.html
index 654025a8c..9330ffd75 100644
--- a/content/releases/qpid-broker-j-8.0.1/index.html
+++ b/content/releases/qpid-broker-j-8.0.1/index.html
@@ -191,7 +191,7 @@ files you download.</p>
<script type="text/javascript">
_deferredFunctions.push(function() {
- if ("8.0.1" === "8.0.6" || "8.0.1" === "") {
+ if ("8.0.1" === "9.0.0" || "8.0.1" === "") {
_modifyCurrentReleaseLinks();
}
});
diff --git a/content/releases/qpid-broker-j-8.0.2/index.html b/content/releases/qpid-broker-j-8.0.2/index.html
index c5271963e..eb384486f 100644
--- a/content/releases/qpid-broker-j-8.0.2/index.html
+++ b/content/releases/qpid-broker-j-8.0.2/index.html
@@ -191,7 +191,7 @@ files you download.</p>
<script type="text/javascript">
_deferredFunctions.push(function() {
- if ("8.0.2" === "8.0.6" || "8.0.2" === "") {
+ if ("8.0.2" === "9.0.0" || "8.0.2" === "") {
_modifyCurrentReleaseLinks();
}
});
diff --git a/content/releases/qpid-broker-j-8.0.3/index.html b/content/releases/qpid-broker-j-8.0.3/index.html
index cb17de28f..1eade01d4 100644
--- a/content/releases/qpid-broker-j-8.0.3/index.html
+++ b/content/releases/qpid-broker-j-8.0.3/index.html
@@ -191,7 +191,7 @@ files you download.</p>
<script type="text/javascript">
_deferredFunctions.push(function() {
- if ("8.0.3" === "8.0.6" || "8.0.3" === "") {
+ if ("8.0.3" === "9.0.0" || "8.0.3" === "") {
_modifyCurrentReleaseLinks();
}
});
diff --git a/content/releases/qpid-broker-j-8.0.4/index.html b/content/releases/qpid-broker-j-8.0.4/index.html
index 224dd95fd..318fab519 100644
--- a/content/releases/qpid-broker-j-8.0.4/index.html
+++ b/content/releases/qpid-broker-j-8.0.4/index.html
@@ -191,7 +191,7 @@ files you download.</p>
<script type="text/javascript">
_deferredFunctions.push(function() {
- if ("8.0.4" === "8.0.6" || "8.0.4" === "") {
+ if ("8.0.4" === "9.0.0" || "8.0.4" === "") {
_modifyCurrentReleaseLinks();
}
});
diff --git a/content/releases/qpid-broker-j-8.0.5/index.html b/content/releases/qpid-broker-j-8.0.5/index.html
index 0c30d6f19..d17aa4ffa 100644
--- a/content/releases/qpid-broker-j-8.0.5/index.html
+++ b/content/releases/qpid-broker-j-8.0.5/index.html
@@ -191,7 +191,7 @@ files you download.</p>
<script type="text/javascript">
_deferredFunctions.push(function() {
- if ("8.0.5" === "8.0.6" || "8.0.5" === "") {
+ if ("8.0.5" === "9.0.0" || "8.0.5" === "") {
_modifyCurrentReleaseLinks();
}
});
diff --git a/content/releases/qpid-broker-j-8.0.6/index.html b/content/releases/qpid-broker-j-8.0.6/index.html
index 226476cef..5d1926921 100644
--- a/content/releases/qpid-broker-j-8.0.6/index.html
+++ b/content/releases/qpid-broker-j-8.0.6/index.html
@@ -191,7 +191,7 @@ files you download.</p>
<script type="text/javascript">
_deferredFunctions.push(function() {
- if ("8.0.6" === "8.0.6" || "8.0.6" === "") {
+ if ("8.0.6" === "9.0.0" || "8.0.6" === "") {
_modifyCurrentReleaseLinks();
}
});
diff --git a/content/releases/qpid-broker-j-9.0.0/book/Apache-Qpid-Broker-J-Book.fo b/content/releases/qpid-broker-j-9.0.0/book/Apache-Qpid-Broker-J-Book.fo
new file mode 100755
index 000000000..ebccfc675
--- /dev/null
+++ b/content/releases/qpid-broker-j-9.0.0/book/Apache-Qpid-Broker-J-Book.fo
@@ -0,0 +1,5123 @@
+<?xml version="1.0" encoding="utf-8"?><fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format" font-family="serif,Symbol,ZapfDingbats" font-size="10pt" text-align="justify" line-height="normal" font-selection-strategy="character-by-character" line-height-shift-adjustment="disregard-shifts" writing-mode="lr-tb" language="en"><fo:layout-master-set><fo:simple-page-master master-name="blank" page-width="8.5in" page-height="11in" margin-top="0.5in" margin-bottom="0.5in" margin-left="1in" margin- [...]
+ ACL Rules
+ </fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-AccessControlProviders-ACLRules"><fo:page-number-citation ref-id="Java-Broker-Security-AccessControlProviders-ACLRules"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-inde [...]
+ Syntax
+ </fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-AccessControlProviders-Syntax"><fo:page-number-citation ref-id="Java-Broker-Security-AccessControlProviders-Syntax"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent=" [...]
+ Worked Examples
+ </fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-AccessControlProviders-WorkedExamples"><fo:page-number-citation ref-id="Java-Broker-Security-AccessControlProviders-WorkedExamples"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify" text [...]
+ Connection Limit Rules
+ </fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-ConnectionLimitProviders-Rules"><fo:page-number-citation ref-id="Java-Broker-Security-ConnectionLimitProviders-Rules"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-in [...]
+ Syntax
+ </fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-ConnectionLimitProviders-Syntax"><fo:page-number-citation ref-id="Java-Broker-Security-ConnectionLimitProviders-Syntax"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end- [...]
+ Worked Example
+ </fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Security-ConnectionLimitProviders-WorkedExample"><fo:page-number-citation ref-id="Java-Broker-Security-ConnectionLimitProviders-WorkedExample"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="justify [...]
+ <fo:inline font-style="italic">closeWhenNoRoute</fo:inline>
+ </fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="Java-Broker-Runtime-Close-Connection-When-No-Route-Configuration"><fo:page-number-citation ref-id="Java-Broker-Runtime-Close-Connection-When-No-Route-Configuration"/></fo:basic-link></fo:inline></fo:block></fo:block><fo:block text-align-last="j [...]
+ directly</fo:basic-link></fo:inline><fo:inline keep-together.within-line="always"> <fo:leader leader-pattern="dots" leader-pattern-width="3pt" leader-alignment="reference-area" keep-with-next.within-line="always"/> <fo:basic-link internal-destination="d0e10373"><fo:page-number-citation ref-id="d0e10373"/></fo:basic-link></fo:inline></fo:block><fo:block text-align-last="justify" text-align="start" end-indent="24pt" last-line-end-indent="-24pt"><fo:inline keep-with-next.within-li [...]
+ <fo:basic-link external-destination="url(http://www.amqp.org)"><fo:inline> Advanced Message Queuing Protocol (AMQP)</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://www.amqp.org)">http://www.amqp.org</fo:basic-link>]</fo:inline>. The Apache Qpid Broker-J
+ is actually one of two message brokers provided by the <fo:basic-link external-destination="url(http://qpid.apache.org)"><fo:inline>Apache Qpid project</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://qpid.apache.org)">http://qpid.apache.org</fo:basic-link>]</fo:inline>: Qpid Broker-J and the C++
+ Broker.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This document relates to the Apache Qpid Broker-J. The <fo:basic-link external-destination="url(/releases/qpid-cpp-{{current_cpp_release}}/cpp-broker/book/)"><fo:inline>C++ Broker is
+ described separately</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(/releases/qpid-cpp-{{current_cpp_release}}/cpp-broker/book/)">/releases/qpid-cpp-{{current_cpp_release}}/cpp-broker/book/</fo:basic-link>]</fo:inline>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Headline features</fo:inline></fo:block><fo:list-block space-before.optimum="1em [...]
+ etc).</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e38"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Transaction support including XA<fo:footnote><fo:inline><fo:inline font-family="serif,Symbol,ZapfDingbats" font-size="75%" font-weight="normal" font-style="n [...]
+ External, OAuth2, and file-based authentication mechanisms.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e56"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Support for message compression</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item s [...]
+ Derby</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://db.apache.org/derby/)">http://db.apache.org/derby/</fo:basic-link>]</fo:inline>, <fo:basic-link external-destination="url(${oracleBdbProductOverviewUrl})"><fo:inline>
+ Oracle BDB JE</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(${oracleBdbProductOverviewUrl})">${oracleBdbProductOverviewUrl}</fo:basic-link>]</fo:inline>, and External Databases.
+ </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e68"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Web based management interface and programmatic management interfaces via REST.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.o [...]
+ platforms.</fo:block></fo:block><fo:block id="Java-Broker-Installation-Prerequistes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start [...]
+ operating system supporting Java 11 or higher<fo:footnote><fo:inline><fo:inline font-family="serif,Symbol,ZapfDingbats" font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">1</fo:inline></fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" end-indent="0pt" text-indent="0pt" hyphenate="true" wrap-option="wrap" linefeed-treatment="treat-as-spac [...]
+ Unlimited Strength extension must be installed or enabled for some features.</fo:block></fo:footnote-body></fo:footnote>. This includes Linux,
+ Solaris, Mac OS X, and Windows 7/8/10 etc.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The broker has been tested with Java implementations from both Oracle and IBM. Whatever
+ platform you chose, it is recommended that you ensure it is patched with any critical
+ updates made available from the vendor. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Verify that your JVM is installed properly by following <fo:basic-link internal-destination="Java-Broker-Miscellaneous-JVM-Verification"><fo:inline>these instructions.</fo:inline></fo:basic-link>
+ </fo:block></fo:block><fo:block id="Java-Broker-Installation-Prerequistes-Disk"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-inde [...]
+ message store, that is, the area of the file-system used to record messages
+ whilst they are passing through the Broker. The working directory is also used for the
+ default location of the log file. The size of the working directory will depend on the how
+ the Broker is used.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The performance of the file system hosting the work directory is key to the performance
+ of Broker as a whole. For best performance, choose a device that has low latency and one
+ that is uncontended by other applications.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Be aware that there are additional considerations if you are considering hosting the
+ working directory on NFS.</fo:block></fo:block><fo:block id="Java-Broker-Installation-Prerequistes-Memory"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" [...]
+ benefit from as much memory as possible. However, on a 32bit JVM, the maximum addressable
+ memory range for a process is 4GB, after leaving space for the JVM's own use this will give
+ a maximum usable size of approximately ~3.7GB.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">See <fo:basic-link internal-destination="Java-Broker-Runtime-Memory"><fo:inline>Section 9.11, “Memory”</fo:inline></fo:basic-link> for a full description of how memory is
+ used.</fo:block></fo:block><fo:block id="Java-Broker-Installation-Prerequistes-OperatingSystemAccount"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text [...]
+ account (i.e. root on UNIX platforms or Administrator on Windows). However it is suggested
+ that you use an dedicated account (e.g. qpid) for the installation and operation of the Broker.</fo:block></fo:block></fo:block><fo:block id="Java-Broker-Installation-Download"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.mini [...]
+ signature matches that available on the site. Instructions are given on the download page.
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Installation-InstallationWindows"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="star [...]
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Now chose a directory for Qpid broker installation. This directory will be used for the
+ Qpid JARs and configuration files. It need not be the same location as the work directory used
+ for the persistent message store or the log file (you will choose this location later). For
+ the remainder this example we will assume that location c:\qpid has been chosen.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Next extract the qpid-broker-9.0.0-bin.zip package into the directory, using either
+ the zip file handling offered by Windows (right click the file and select 'Extract All') or a
+ third party tool of your choice.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The extraction of the broker package will have created a directory
+ qpid-broker\\9.0.0 within c:\qpid</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e163">
+ Directory of c:\qpid\qpid-broker\\9.0.0
+
+25/11/2015 11:29 <DIR> .
+25/11/2015 11:29 <DIR> ..
+25/11/2015 10:56 <DIR> bin
+03/07/2015 08:06 <DIR> etc
+25/11/2015 11:25 <DIR> lib
+25/11/2015 10:56 28,143 LICENSE
+25/11/2015 10:56 3,409 NOTICE
+29/04/2015 09:13 116 README.txt
+3 File(s) 31,668 bytes
+5 Dir(s) 25,981,767,680 bytes free
+</fo:block><fo:block id="Java-Broker-Installation-InstallationWindows-SettingQPIDWORK"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-ind [...]
+ Qpid log file and is used for the storage of persistent messages. The work directory can be
+ set on the command-line (for the lifetime of the command interpreter), but you will normally
+ want to set the environment variable permanently via the Advanced System Settings in the
+ Control Panel.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e170">set QPID_WORK=C:\qpidwork</fo:block><fo:block space-before.optimum="1em" space-before.minimum=" [...]
+ exist, the Broker will attempt to create it on start-up.</fo:block></fo:block></fo:block><fo:block id="Java-Broker-Installation-InstallationUnix"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimu [...]
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Now chose a directory for Qpid broker installation. This directory will be used for the
+ Qpid JARs and configuration files. It need not be the same location as the work directory used
+ for the persistent message store or the log file (you will choose this location later). For
+ the remainder this example we will assume that location /usr/local/qpid has been
+ chosen.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Next extract the qpid-broker-9.0.0-bin.tgz package into the directory.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-trea [...]
+cd /usr/local/qpid
+tar xvzf qpid-broker-9.0.0-bin.tgz</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The extraction of the broker package will have created a directory
+ qpid-broker/9.0.0 within /usr/local/qpid</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e193">ls -la qpid-broker/9.0.0/
+total 56
+drwxrwxr-x. 5 alex alex 4096 Nov 25 11:43 .
+drwxrwxr-x. 3 alex alex 4096 Nov 25 11:43 ..
+drwxr-xr-x. 2 alex alex 4096 Nov 24 23:38 bin
+drwxr-xr-x. 2 alex alex 4096 Nov 24 23:38 etc
+drwxrwxr-x. 2 alex alex 4096 Nov 25 11:43 lib
+-rw-r--r--. 1 alex alex 28143 Nov 24 23:38 LICENSE
+-rw-r--r--. 1 alex alex 3409 Nov 24 23:38 NOTICE
+-rw-r--r--. 1 alex alex 116 Nov 24 23:38 README.txt
+ </fo:block><fo:block id="Java-Broker-Installation-InstallationUnix-SettingQPIDWORK"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-in [...]
+ Qpid log file and is used for the storage of persistent messages. The work directory can be
+ set on the command-line (for the lifetime of the current shell), but you will normally want
+ to set the environment variable permanently the user's shell profile file (~/.bash_profile
+ for Bash etc).</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e200">export QPID_WORK=/var/qpidwork
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If the directory referred to by <fo:basic-link internal-destination="Java-Broker-Appendix-Environment-Variables-Qpid-Work"><fo:inline>QPID_WORK</fo:inline></fo:basic-link> does not
+ exist, the Broker will attempt to create it on start-up. </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Installation-OptionalDependencies"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.o [...]
+ <fo:basic-link internal-destination="Java-Broker-Miscellaneous-Installing-External-JDBC-Driver"><fo:inline>Section F.2, “Installing External JDBC Driver”</fo:inline></fo:basic-link> for details of
+ installing their dependencies.</fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats [...]
+ This section describes how to start and stop the Broker, and outlines the various command line options.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ For additional details about the broker configuration store and related command line arguments see
+ <fo:basic-link internal-destination="Java-Broker-Initial-Configuration"><fo:inline>Chapter 5, <fo:inline font-style="italic">Initial Configuration</fo:inline></fo:inline></fo:basic-link>.
+ The broker is fully configurable via its Web Management Console, for details of this see
+ <fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console"><fo:inline>Section 6.2, “Web Management Console”</fo:inline></fo:basic-link>.
+ </fo:block></fo:block><fo:block id="Java-Broker-Getting-Started-Starting-Stopping-Windows"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" s [...]
+ and ensure that the <fo:basic-link internal-destination="Java-Broker-Installation-InstallationWindows-SettingQPIDWORK"><fo:inline>QPID_WORK environment variable is set</fo:inline></fo:basic-link>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Now use the <fo:inline font-weight="bold">qpid-server.bat</fo:inline> to start the server</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maxim [...]
+[Broker] BRK-1001 : Startup : Version: 9.0.0 Build: 1478262
+[Broker] BRK-1010 : Platform : JVM : Oracle Corporation version: 11.0.13+10-LTS-370 OS : Windows 7 version: 6.1 arch: x86 cores: 4
+[Broker] BRK-1011 : Maximum Memory : Heap : 518,979,584 bytes Direct : 1,610,612,736 bytes
+[Broker] BRK-1002 : Starting : Listening on TCP port 5672
+[Broker] MNG-1001 : Web Management Startup
+[Broker] MNG-1002 : Starting : HTTP : Listening on port 8080
+[Broker] MNG-1004 : Web Management Ready
+[Broker] BRK-1004 : Qpid Broker Ready</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The BRK-1004 message confirms that the Broker is ready for work. The MNG-1002 and BRK-1002 confirm the ports on
+ which the Broker is listening (for HTTP management and AMQP respectively).</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">To stop the Broker, use Control-C from the controlling command prompt or
+ <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API-Operations"><fo:inline>REST operation broker/shutdown</fo:inline></fo:basic-link>.
+ </fo:block></fo:block><fo:block id="Java-Broker-Getting-Started-Starting-Stopping-Unix"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" star [...]
+ and ensure that the <fo:basic-link internal-destination="Java-Broker-Installation-InstallationUnix-SettingQPIDWORK"><fo:inline>QPID_WORK environment variable is set</fo:inline></fo:basic-link>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Now use the <fo:inline font-weight="bold">qpid-server</fo:inline> script to start the server:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maxi [...]
+[Broker] BRK-1001 : Startup : Version: 9.0.0 Build: exported
+[Broker] BRK-1010 : Platform : JVM : Oracle Corporation version: 11.0.13+10-LTS-370 OS : Mac OS X version: 10.12.6 arch: x86_64 cores: 8
+[Broker] BRK-1011 : Maximum Memory : Heap : 518,979,584 bytes Direct : 1,610,612,736 bytes
+[Broker] BRK-1002 : Starting : Listening on TCP port 5672
+[Broker] MNG-1001 : Web Management Startup
+[Broker] MNG-1002 : Starting : HTTP : Listening on port 8080
+[Broker] MNG-1004 : Web Management Ready
+[Broker] BRK-1004 : Qpid Broker Ready</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The BRK-1004 message confirms that the Broker is ready for work. The MNG-1002 and BRK-1002 confirm the ports on
+ which the Broker is listening (for HTTP management and AMQP respectively).</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">To stop the Broker, use Control-C from the controlling shell, use the
+ <fo:inline font-weight="bold">bin/qpid.stop</fo:inline> script, use <fo:inline font-weight="bold">kill -TERM <pid></fo:inline>, or
+ the <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API-Operations"><fo:inline>REST operation broker/shutdown</fo:inline></fo:basic-link>.</fo:block></fo:block><fo:block id="Java-Broker-Getting-Started-Logging"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold [...]
+ conditions. By default the log file is written within the log subdirectory beneath the work directory
+ - <fo:inline font-family="monospace">$QPID_WORK/log/qpid.log</fo:inline> (UNIX) and
+ <fo:inline font-family="monospace">%QPID_WORK%\log\qpid.log</fo:inline> (Windows).</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For details of how to control the logging, see <fo:basic-link internal-destination="Java-Broker-Runtime-Logging"><fo:inline>Section 9.1, “Logging”</fo:inline></fo:basic-link></fo:block></fo:block><fo:block id="Java-Broker-Getting-Started-CommandLine"><fo:block><fo:block><fo:block keep-together.wit [...]
+ For additional details about the broker configuration and related command line arguments see
+ <fo:basic-link internal-destination="Java-Broker-Initial-Configuration"><fo:inline>Chapter 5, <fo:inline font-style="italic">Initial Configuration</fo:inline></fo:inline></fo:basic-link>.
+ The broker is fully configurable via its Web Management Console, for details of this see
+ <fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console"><fo:inline>Section 6.2, “Web Management Console”</fo:inline></fo:basic-link>.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">To see usage information for all command line options, use the <fo:inline font-family="monospace">--help</fo:inline> option</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" wh [...]
+ [-mmpass <password>] [-mmqv] [-os]
+ [-prop <name=value>] [-props <path>] [-sp <path>] [-st <type>] [-v]
+ -cic,--create-initial-config <path> create a copy of the
+ initial config file,
+ either to an
+ optionally specified
+ file path, or as
+ initial-config.json
+ in the current
+ directory
+ -h,--help print this message
+ -icp,--initial-config-path <path> set the location of
+ initial JSON config
+ to use when
+ creating/overwriting
+ a broker
+ configuration store
+ -mm,--management-mode start broker in
+ management mode,
+ disabling the AMQP
+ ports
+ -mmhttp,--management-mode-http-port <port> override http
+ management port in
+ management mode
+ -mmpass,--management-mode-password <password> Set the password for
+ the management mode
+ user mm_admin
+ -mmqv,--management-mode-quiesce-virtualhostnodes make virtualhost nodes
+ stay in the quiesced
+ state during
+ management mode.
+ -prop,--config-property <name=value> set a configuration
+ property to use when
+ resolving variables
+ in the broker
+ configuration store,
+ with format
+ "name=value"
+ -props,--system-properties-file <path> set the location of
+ initial properties
+ file to set
+ otherwise unset
+ system properties
+ -sp,--store-path <path> use given
+ configuration store
+ location
+ -st,--store-type <type> use given broker
+ configuration store
+ type
+ -v,--version print the version
+ information and exit
+</fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table table- [...]
+ the entities and describes the relationships between them. These details are developed further
+ in the sub-sections that follow.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The most important entity is the <fo:inline font-style="italic">Virtualhost</fo:inline>. A virtualhost is an
+ independent container in which messaging is performed. A <fo:inline font-style="italic">virtualhost</fo:inline> exists
+ in a container called a <fo:inline font-style="italic">virtualhost node</fo:inline>. A virtualhost node has exactly
+ one virtualhost.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">An <fo:inline font-style="italic">Exchange</fo:inline> accepts messages from a producer application and routes these
+ to one or more <fo:inline font-style="italic">Queues</fo:inline> according to pre-arranged criteria called
+ <fo:inline font-style="italic">bindings</fo:inline>. Exchange are an AMQP 0-8, 0-9, 0-9-1, 0-10 concept. They exist to
+ produce useful messaging behaviours such as fanout. When using AMQP 0-8, 0-9, 0-9-1, or 0-10, the
+ exchange is the only way ingressing a message into the virtualhost. When using AMQP
+ 1.0, the application may route messages using an exchange (to take advantage of advanced behaviours)
+ or it may publish messages direct to a queue.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Queue</fo:inline>s are named entities that hold/buffer messages for later delivery to
+ consumer applications.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Ports</fo:inline> accept connections for messaging and management. The Broker
+ supports any number of ports. When connecting for messaging, the user specifies a virtualhost
+ name to indicate the virtualhost to which it is to be connected.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Authentication Providers</fo:inline> assert the identity of the user as it connects
+ for messaging or management. The Broker supports any number of authentication providers. Each
+ port is associated with exactly one authentication provider. The port uses the authentication
+ provider to assert the identity of the user as new connections are received.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Group Providers</fo:inline> provide mechanisms that provide grouping of users. A
+ Broker supports zero or more group providers.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Access Control Provider</fo:inline> allows the abilities of users (or groups of
+ users) to be restrained. A Broker can have zero or one access control providers.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Connection Limit Provider</fo:inline> restrains users (or groups of
+ users) at opening new connections on AMQP ports.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Keystores</fo:inline> provide a repositories of certificates and are used when the
+ Broker accepts SSL connections. Any number of keystore providers can be defined. Keystores are
+ be associated with Ports defined to accepts SSL.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Truststores</fo:inline> provide a repositories of trust and are used to validate a
+ peer. Any number of truststore provides can be defined. Truststores can be associated with Ports
+ and other entities that form SSL connections.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Remote Replication Nodes</fo:inline> are used when the high availability feature is
+ in use. It is the remote representation of other virtualhost nodes that form part of the same
+ group.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Loggers</fo:inline>, at this point in the hierarchy, are responsible for the
+ production of a log for the Broker.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">These concepts will be developed over the forthcoming pages. The diagrams below also help
+ put these entities in context of one and other.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ <fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e403"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="alw [...]
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ <fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e415"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-column="alw [...]
+ </fo:block></fo:block><fo:block id="Java-Broker-Concepts-Broker"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker [...]
+ one virtualhost.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A <fo:inline font-style="italic">virtualhost node</fo:inline> is backed by storage. This storage is used to record
+ the durable entities that exist beneath the virtualhost node (the virtualhost, queues, exchanges
+ etc).</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When HA is in use, it is the virtualhost nodes of many Brokers that come together to form
+ the group. The virtualhost nodes together elect a master. When the high availability feature is
+ in use, the virtualhost node has <fo:basic-link internal-destination="Java-Broker-Concepts-RemoteReplicationNodes"><fo:inline>remote replications nodes</fo:inline></fo:basic-link>. There is a remote replication node corresponding to each
+ remote virtualhost node that form part of the group.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ <fo:inline font-style="italic">Virtualhost node</fo:inline> also provides an initial configuration for its <fo:inline font-style="italic">virtualhost</fo:inline>.
+ How to specify initial configuration for <fo:inline font-style="italic">virtual host</fo:inline> is described at
+ <fo:basic-link internal-destination="Java-Broker-Virtual-Host-Initial-Configuration"><fo:inline>Section 5.8, “Virtualhost Initial Configuration”</fo:inline></fo:basic-link>.
+ </fo:block></fo:block><fo:block id="Java-Broker-Concepts-RemoteReplicationNodes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent= [...]
+ another virtualhost node in the group.</fo:block></fo:block><fo:block id="Java-Broker-Concepts-Virtualhosts"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" te [...]
+ the messaging that goes on within one virtualhost is independent of any messaging that goes on
+ in another virtualhost. For instance, a queue named <fo:inline font-style="italic">foo</fo:inline> defined in one
+ virtualhost is completely independent of a queue named <fo:inline font-style="italic">foo</fo:inline> in another
+ virtualhost.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A virtualhost is identified by a name which must be unique broker-wide. Clients use the name
+ to identify the virtualhost to which they wish to connect when they connect.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A virtualhost exists in a virtualhost node.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The virtualhost comprises a number of entities. This section summaries the purpose of
+ each of the entities and describes the relationships between them. These details are developed
+ further in the sub-sections that follow.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Exchanges</fo:inline> is a named entity within the Virtual Host which receives
+ messages from producers and routes them to matching Queues. When using AMQP 0-8, 0-9, 0-9-1, 0-10
+ the exchange is the only way ingressing a message into the virtualhost. When using AMQP 1.0
+ producers may route messages via exchanges or direct to queues.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Queues</fo:inline> are named entities that hold messages for delivery to consumer
+ applications.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Connections</fo:inline> represent a live connection to the virtualhost from a
+ messaging client.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A <fo:inline font-style="italic">Session</fo:inline> represents a context for the production or consumption of
+ messages. A Connection can have many Sessions.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A <fo:inline font-style="italic">Consumer</fo:inline> represents a live consumer that is attached to queue.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Loggers</fo:inline> are responsible for producing logs for this virtualhost.</fo:block><fo:b [...]
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A <fo:inline font-style="italic">virtualhost</fo:inline> is backed by storage which is used to store the
+ messages.</fo:block></fo:block><fo:block id="Java-Broker-Concepts-Exchanges"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0 [...]
+ messages from producers and routes them to matching <fo:inline font-style="italic">Queue</fo:inline>s within the <fo:inline font-style="italic">Virtualhost</fo:inline>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ When using AMQP 0-8, 0-9, 0-9-1, or 0-10, the exchange is the only way ingressing a message into the virtualhost. When using AMQP
+ 1.0, the application may route messages using an exchange (to take advantage of exchange's routing behaviours), or it may route direcly
+ to a queue (if point to point messaging is required).
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The server provides a set of exchange types with each exchange type implementing a different routing algorithm. For details of how
+ these exchanges types work see <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-Types"><fo:inline>Section 4.6.2, “Exchange Types”</fo:inline></fo:basic-link> below.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The server predeclares a number of exchange instances with names starting with "<fo:inline font-family="monospace">amq.</fo:inline>". These are defined in
+ <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-Predeclared"><fo:inline>Section 4.6.1, “Predeclared Exchanges”</fo:inline></fo:basic-link>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Applications can make use of the pre-declared exchanges, or they may declare their own. The number of exchanges within a <fo:inline font-style="italic">Virtualhost</fo:inline> is
+ limited only by resource constraints.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The behaviour when an <fo:inline font-style="italic">Exchange</fo:inline> is unable to route a message to any queue is defined in <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-UnroutableMessage"><fo:inline>Section 4.6.4, “Unrouteable Messages”</fo:inline></fo:basic-link></fo:block><fo:block id="Java-Broker-Concepts-Exchange [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e588"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e589"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-b [...]
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The conceptual "<fo:inline font-family="monospace">default exchange</fo:inline>" always exists, effectively a special instance of
+ direct exchange which uses the empty string as its name. All queues are automatically bound to it upon their creation
+ using the queue name as the binding key, and unbound upon their deletion. It is not possible to manually add or remove
+ bindings within this exchange.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Applications may not declare exchanges with names beginning with "<fo:inline font-family="monospace">amq.</fo:inline>". Such names are reserved for system use.</fo:block></fo:block><fo:block id="Java-Broker-Concepts-Exchanges-Types"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,Zapf [...]
+ The following Exchange types are supported.
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e617"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e618"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-b [...]
+ These exchange types are described in the following sub-sections.</fo:block><fo:block id="Java-Broker-Concepts-Exchanges-Types-Direct"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space- [...]
+ the routing key of the message, and the binding key used to bind the queue to the exchange. Additional
+ filter rules may be specified using a <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-BindingArguments-JMSSelector"><fo:inline>
+ binding argument specifying a JMS message selector</fo:inline></fo:basic-link>.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This exchange type is often used to implement point to point messaging. When used in this manner, the normal
+ convention is that the binding key matches the name of the queue. It is also possible to use this exchange type
+ for multi-cast, in this case the same binding key is associated with many queues.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e641"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em [...]
+ "<fo:inline font-family="monospace">myqueue</fo:inline>" match the binding key corresponding to queue "<fo:inline font-family="monospace">myqueue</fo:inline>" and so are routed there. The red
+ messages published with the routing key "<fo:inline font-family="monospace">foo</fo:inline>" match two bindings in the table so a copy of the message is
+ routed to both the "<fo:inline font-family="monospace">bar1</fo:inline>" and "<fo:inline font-family="monospace">bar2</fo:inline>" queues.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The routing key of the blue message matches no binding keys, so the message is unroutable. It is handled as described
+ in <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-UnroutableMessage"><fo:inline>Section 4.6.4, “Unrouteable Messages”</fo:inline></fo:basic-link>.</fo:block></fo:block><fo:block id="Java-Broker-Concepts-Exchanges-Types-Topic"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-we [...]
+ binding key pattern defined by the queue binding. Routing keys are formed from one or more words, with each word delimited
+ by a full-stop (.). The pattern matching characters are the * and # symbols. The * symbol matches a single word and the #
+ symbol matches zero or more words.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Additional filter rules may be specified using a <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-BindingArguments-JMSSelector"><fo:inline>
+ binding argument specifying a JMS message selector</fo:inline></fo:basic-link>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following three figures help explain how the topic exchange functions.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"/><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" [...]
+ message to every bound queue whose binding key matches the routing key.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In the case illustrated, this means that each subscriber's queue receives every yellow message.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="alw [...]
+ message to every bound queue whose binding key matches the routing key but as the binding keys contain wildcards, the
+ wildcard rules described above apply.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In the case illustrated, <fo:inline font-family="monospace">sub1</fo:inline> has received the red and green message as "<fo:inline font-family="monospace">news.uk</fo:inline>" and "<fo:inline font-family="monospace">news.de</fo:inline>"
+ match binding key "<fo:inline font-family="monospace">news.#</fo:inline>". The red message has also gone to <fo:inline font-family="monospace">sub2</fo:inline> and <fo:inline font-family="monospace">sub3</fo:inline> as it's routing key
+ is matched exactly by "<fo:inline font-family="monospace">news.uk</fo:inline>" and by "<fo:inline font-family="monospace">*.uk</fo:inline>".</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The routing key of the yellow message matches no binding keys, so the message is unroutable. It is handled as described
+ in <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-UnroutableMessage"><fo:inline>Section 4.6.4, “Unrouteable Messages”</fo:inline></fo:basic-link>.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e734"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum=" [...]
+ argument has been specified, the expression is evaluated against each matching message. Only messages whose message header values or properties
+ match the expression are routed to the queue.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In the case illustrated, <fo:inline font-family="monospace">sub1</fo:inline> has received the yellow and blue message as their property "<fo:inline font-family="monospace">area</fo:inline>"
+ cause expression "<fo:inline font-family="monospace">area in ('Forties', 'Cromarty')</fo:inline>" to evaluate true. Similarly, the yellow message has also gone to
+ <fo:inline font-family="monospace">gale_alert</fo:inline> as its property "<fo:inline font-family="monospace">speed</fo:inline>" causes expression "<fo:inline font-family="monospace">speed > 7 and speed < 10</fo:inline>"
+ to evaluate true.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The properties of purple message cause no expressions to evaluate true, so the message is unroutable. It is handled as described in
+ <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-UnroutableMessage"><fo:inline>Section 4.6.4, “Unrouteable Messages”</fo:inline></fo:basic-link>.</fo:block></fo:block><fo:block id="Java-Broker-Concepts-Exchanges-Types-Fanout"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weigh [...]
+ binding argument specifying a JMS message selector</fo:inline></fo:basic-link>.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e781"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" [...]
+ a queue if the header properties of the message satisfy the <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-BindingArguments-x-match"><fo:inline>
+ x-match expression</fo:inline></fo:basic-link> specified by the binding arguments with which the queue was bound.
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Concepts-Exchanges-BindingArguments"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="star [...]
+ is written in terms of message header and message property names. If the expression evaluates to true, the message is routed to the queue.
+ This type of binding argument is understood by exchange types direct, topic and fanout.<fo:footnote><fo:inline><fo:inline font-family="serif,Symbol,ZapfDingbats" font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">1</fo:inline></fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" end-indent="0pt" text-indent="0pt" hyphenate="true" wrap-option="w [...]
+ This is a Qpid specific extension.</fo:block></fo:footnote-body></fo:footnote>.</fo:block></fo:block><fo:block id="Java-Broker-Concepts-Exchanges-BindingArguments-x-match"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8e [...]
+ rest of the name value pairs are treated during matching.</fo:block><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e820"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e821"><fo:list-item-label end-indent="la [...]
+ (i.e. an AND match)</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e826"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-family="monospace">any</fo:inline> implies that the message should be routed if any of the fields in the headers property match [...]
+ fields in the arguments table (i.e. an OR match)</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A field in the bind arguments matches a field in the message if either the field in the bind arguments has no value and a field of the
+ same name is present in the message headers or if the field in the bind arguments has a value and a field of the same name exists in the
+ message headers and has that same value.</fo:block></fo:block></fo:block><fo:block id="Java-Broker-Concepts-Exchanges-UnroutableMessage"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" spa [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e838"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e839"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-b [...]
+ If the message is still unroutable after considering the alternate binding, the message is discarded unless the sending link has requested the
+ <fo:inline font-family="monospace">REJECT_UNROUTABLE</fo:inline> target capability, or the Exchange has its <fo:inline font-family="monospace">unroutableMessageBehaviour</fo:inline> attribute set to
+ <fo:inline font-family="monospace">REJECT</fo:inline>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e851"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>If using the AMQP 0-10 protocol, and an alternate binding has been set on the exchange, the message is routed [...]
+ If the message is still unroutable after considering the alternate binding,the message is discarded.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e854"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>If using AMQP protocols 0-8..0-9-1, and the publisher set the ma [...]
+ close when no route</fo:inline></fo:basic-link> feature did not close the connection, the message is returned to the Producer.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e860"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Otherwise, the message is discarded.</ [...]
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Concepts-Queues"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt" [...]
+ hold/buffer messages for later delivery to consumer applications.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Messages arrive on queues either from <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges"><fo:inline>Exchanges</fo:inline></fo:basic-link>, or when
+ using the AMQP 1.0 protocol, the producing application can direct messages straight to the queue. For
+ AMQP 0-8, 0-9, 0-9-1, or 0-10, the exchange is the only way ingressing a message into a queue.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Consumers subscribe to a queue in order to receive messages from it.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Broker supports different queue types, each with different delivery semantics. Queues also have a range of other
+ features such as the ability to group messages together for delivery to a single consumer. These additional features
+ are described below too.</fo:block><fo:block id="Java-Broker-Concepts-Queues-Types"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-ind [...]
+ delivery order depends on the value of the sorting key property in each message</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e905"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Concepts-Queues-Types-LVQ"><f [...]
+ Queue</fo:inline></fo:basic-link> - also known as an LVQ, retains only the last (newest) message received
+ with a given LVQ key value</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="Java-Broker-Concepts-Queues-Types-Standard"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum=" [...]
+ <fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/Message.html#getJMSPriority())"><fo:inline>JMS priority message
+ header</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/Message.html#getJMSPriority())">http://docs.oracle.com/javaee/6/api/javax/jms/Message.html#getJMSPriority()</fo:basic-link>]</fo:inline> within the message. By default Qpid supports the 10 priority levels
+ mandated by JMS, with priority value 0 as the lowest priority and 9 as the highest. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">It is possible to reduce the effective number of priorities if desired.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">JMS defines the <fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/Message.html#D [...]
+ default message priority</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/Message.html#DEFAULT_PRIORITY)">http://docs.oracle.com/javaee/6/api/javax/jms/Message.html#DEFAULT_PRIORITY</fo:basic-link>]</fo:inline> as 4. Messages sent without a specified priority use this
+ default. </fo:block></fo:block><fo:block id="Java-Broker-Concepts-Queues-Types-Sorted"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" s [...]
+ <fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/Message.html#getStringProperty())"><fo:inline>JMS message
+ property</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/Message.html#getStringProperty())">http://docs.oracle.com/javaee/6/api/javax/jms/Message.html#getStringProperty()</fo:basic-link>]</fo:inline>. Sort order is alpha-numeric and the property value must have a type
+ java.lang.String.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Messages sent to a sorted queue without the specified JMS message property will be
+ put at the head of the queue.</fo:block></fo:block><fo:block id="Java-Broker-Concepts-Queues-Types-LVQ"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" tex [...]
+ when a newer message arrives with the same key value. The key is specified by arbitrary
+ <fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/Message.html#getPropertyNames())"><fo:inline>JMS message
+ property</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/Message.html#getPropertyNames())">http://docs.oracle.com/javaee/6/api/javax/jms/Message.html#getPropertyNames()</fo:basic-link>]</fo:inline>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">An example of an LVQ might be where a queue represents prices on a stock exchange: when
+ you first consume from the queue you get the latest quote for each stock, and then as new
+ prices come in you are sent only these updates. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Like other queues, LVQs can either be browsed or consumed from. When browsing an
+ individual subscriber does not remove the message from the queue when receiving it. This
+ allows for many subscriptions to browse the same LVQ (i.e. you do not need to create and
+ bind a separate LVQ for each subscriber who wishes to receive the contents of the
+ LVQ).</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Messages sent to an LVQ without the specified property will be delivered as normal and
+ will never be "replaced".</fo:block></fo:block></fo:block><fo:block id="Java-Broker-Concepts-Queues-Message-Grouping"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maxim [...]
+ belonging to a group. This allows a message producer to indicate to the consumer that a group
+ of messages should be considered a single logical operation with respect to the application. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The broker can use this group identification to enforce policies controlling how messages
+ from a given group can be distributed to consumers. For instance, the broker can be configured
+ to guarantee all the messages from a particular group are processed in order across multiple
+ consumers. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> For example, assume we have a shopping application that manages items in a virtual
+ shopping cart. A user may add an item to their shopping cart, then change their mind and
+ remove it. If the application sends an <fo:inline font-style="italic">add</fo:inline> message to the broker,
+ immediately followed by a <fo:inline font-style="italic">remove</fo:inline> message, they will be queued in the
+ proper order - <fo:inline font-style="italic">add</fo:inline>, followed by <fo:inline font-style="italic">remove</fo:inline>. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> However, if there are multiple consumers, it is possible that once a consumer acquires
+ the <fo:inline font-style="italic">add</fo:inline> message, a different consumer may acquire the
+ <fo:inline font-style="italic">remove</fo:inline> message. This allows both messages to be processed in parallel,
+ which could result in a "race" where the <fo:inline font-style="italic">remove</fo:inline> operation is incorrectly
+ performed before the <fo:inline font-style="italic">add</fo:inline> operation. </fo:block><fo:block id="Java-Broker-Concepts-Queues-GroupingMessages"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.opti [...]
+ <fo:inline font-family="monospace">JMSXGroupId</fo:inline> to specify the <fo:inline font-style="italic">group identifier</fo:inline>
+ when publishing messages.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Alternatively, the application may designate a particular message header
+ as containing a message's <fo:inline font-style="italic">group identifier</fo:inline>. The group identifier stored
+ in that header field would be a string value set by the message producer. Messages from the
+ same group would have the same group identifier value. The key that identifies the header
+ must also be known to the message consumers. This allows the consumers to determine a
+ message's assigned group.
+ </fo:block></fo:block><fo:block id="Java-Broker-Concepts-Queues-BrokerRole"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent [...]
+ header.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1017"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Enforce <fo:inline font-style="italic">consumption ordering</fo:inline> among messages belonging to the
+ same group. <fo:inline font-style="italic">Consumption ordering</fo:inline> means one of two things
+ depending on how the queue has been configured. </fo:block><fo:list-block provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e1026"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1027"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block> In default mode, a group gets assigned to [...]
+ of that consumer, and the broker will pass all subsequent messages in the group to
+ that consumer. </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1030"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>In 'shared groups' mode (which gives the same behaviour as the Qpid C++
+ Broker) the broker enforces a looser guarantee, namely that all the
+ <fo:inline font-style="italic">currently unacknowledged messages</fo:inline> in a group are sent to
+ the same consumer, but the consumer used may change over time even if the
+ consumers do not. This means that only one consumer can be processing messages
+ from a particular group at any given time, however if the consumer acknowledges
+ all of its acquired messages then the broker <fo:inline font-style="italic">may</fo:inline> pass the
+ next pending message in that group to a different consumer. </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The absence of a value in the designated group header field of a message is treated as
+ follows: <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e1042"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1043"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label [...]
+ for the message not to be grouped at all. Such messages will be distributed to any
+ available consumer, without the ordering guarantees imposed by grouping. </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1046"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block> In 'shared groups' mode (which gives the same behaviour as the Qpid C++ Broker)
+ the broker assigns messages without a group value to a 'default group'. Therefore, all
+ such "unidentified" messages are considered by the broker as part of the same group,
+ which will handled like any other group. The name of this default group is
+ "qpid.no-group", although it can be customised as detailed below. </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Note that message grouping has no effect on queue browsers.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Note well that distinct message groups would not block each other from delivery. For
+ example, assume a queue contains messages from two different message groups - say group "A"
+ and group "B" - and they are enqueued such that "A"'s messages are in front of "B". If the
+ first message of group "A" is in the process of being consumed by a client, then the
+ remaining "A" messages are blocked, but the messages of the "B" group are available for
+ consumption by other consumers - even though it is "behind" group "A" in the queue. </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Concepts-Queue-EnsureNonDestructiveConsumers"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space [...]
+ sent to that consumer are acquired exclusively by that consumer, and when the consumer
+ acknowledges them, the messages are removed from the queue.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Another common pattern is to have queue "browsers" which send all messages to the
+ browser, but do not prevent other consumers from receiving the messages, and do not
+ remove them from the queue when the browser is done with them. Such a browser is an
+ instance of a "non-destructive" consumer.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If every consumer on a queue is non destructive then we can obtain some interesting
+ behaviours. In the case of a <fo:inline>LVQ
+ </fo:inline> then the queue will always contain the most up to date value for every key. For
+ a standard queue, if every consumer is non-destructive then we have something that
+ behaves like a topic (every consumer receives every message) except that instead of
+ only seeing messages that arrive after the point at which the consumer is created, all
+ messages which have not been removed due to TTL expiry (or, in the case of LVQs,
+ overwirtten by newer values for the same key).</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A queue can be created to enforce all consumers are non-destructive.</fo:block><fo:block id="d0e1068"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingb [...]
+ messages would never get deleted, leaving the queue to grow unconstrainedly. To
+ prevent this you can use the ability to set the maximum TTL of the queue. To ensure
+ all messages have the same TTL you could also set the minimum TTL to the same value.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Minimum/Maximum TTL for a queue can be set though the HTTP Management UI, using the
+ REST API. The attribute names are <fo:inline font-family="monospace">minimumMessageTtl</fo:inline> and
+ <fo:inline font-family="monospace">maximumMessageTtl</fo:inline> and the TTL value is given in milliseconds.</fo:block></fo:block><fo:block id="d0e1081"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-be [...]
+ due to TTL. It may be the case that a consumer only wishes to receive messages
+ that have been sent in the last 60 minutes, and any new messages that arrive, or
+ alternatively it may wish only to receive newly arriving messages and not any that
+ are already in the queue. This can be achieved by using a filter on the arrival
+ time.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A special parameter <fo:inline font-family="monospace">x-qpid-replay-period</fo:inline> can be used in the
+ consumer declaration to control the messages the consumer wishes to receive. The
+ value of <fo:inline font-family="monospace">x-qpid-replay-period</fo:inline> is the time, in seconds, for which
+ the consumer wishes to see messages. A replay period of 0 indicates only newly
+ arriving messages should be sent. A replay period of 3600 indicates that only
+ messages sent in the last hour - along with any newly arriving messages - should be
+ sent.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When using the Qpid JMS AMQP 0-x, the consumer declaration can be hinted using the
+ address.</fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e1096"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.op [...]
+ see only newly arriving messages (i.e. standard topic-like behaviour) but other consumers
+ may wish to start their message stream from some point in the past. This can be achieved by
+ setting a default filter on the queue so that consumers which do not explicitly set a replay
+ period get a default (in this case the desired default would be 0).</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The default filter set for a queue can be set via the REST API using the attribute named
+ <fo:inline font-family="monospace">defaultFilters</fo:inline>. This value is a map from filter name to type and arguments.
+ To set the default behaviour for the queue to be that consumers only receive newly arrived
+ messages, then you should set this attribute to the value:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e1129">
+ { "x-qpid-replay-period" : { "x-qpid-replay-period" : [ "0" ] } }
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ If the desired default behaviour is that each consumer should see all messages arriving in
+ the last minute, as well as all new messages then the value would need to be:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e1133">
+ { "x-qpid-replay-period" : { "x-qpid-replay-period" : [ "60" ] } }
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Concepts-Queue-HoldingEntries"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start [...]
+ until some external condition is met. </fo:block><fo:block id="d0e1140"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent [...]
+ By default this support is not enabled (since it requires extra work to be performed against every
+ message entering the queue. To enable support, the attribute <fo:inline font-family="monospace">holdOnPublishEnabled</fo:inline>
+ must evaluate to true for the Queue. When enabled messages on the queue will be checked for the header
+ (for AMQP 0-8, 0-9, 0-9-1 and 0-10 messages) or message annotation (for AMQP 1.0 messages)
+ <fo:inline font-family="monospace">x-qpid-not-valid-before</fo:inline>. If this header/annotation exists and contains a numeric value,
+ it will be treated as a point in time given in milliseconds since the UNIX epoch. The message will not
+ be released from the Queue to consumers until this time has been reached.
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Concepts-Queue-OverflowPolicy"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="s [...]
+ <fo:inline font-style="italic">Overflow Policy</fo:inline>
+ can be configured on an individual <fo:inline font-style="italic">Queue</fo:inline> to limit the queue size. The size
+ can be expressed in terms of a <fo:inline font-style="italic">maximum number of bytes</fo:inline> and/or
+ <fo:inline font-style="italic">maximum number of messages</fo:inline>.
+ The <fo:inline font-style="italic">Overflow Policy</fo:inline> defines the Queue behaviour when any of the limits is reached.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The following <fo:inline font-style="italic">Overflow Policies</fo:inline> are supported:
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e1176"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1177"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo: [...]
+ <fo:inline font-style="italic">None</fo:inline>
+ - Queue is unbounded and the capacity limits are not applied.
+ This is a default policy applied implicitly when policy is not set explicitly.
+ </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1183"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
+ <fo:inline font-style="italic">Ring</fo:inline>
+ - If a newly arriving message takes the queue over a limit, message(s) are
+ deleted from the queue until the queue falls within its limit again. When deleting
+ messages, the oldest messages are deleted first. For a
+ <fo:basic-link internal-destination="Java-Broker-Concepts-Queues-Types-Priority"><fo:inline>Priority Queue</fo:inline></fo:basic-link>
+ the oldest messages with lowest priorities are removed.
+ </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1192"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
+ <fo:inline font-style="italic">Producer Flow Control</fo:inline>
+ -The producing sessions
+ are blocked until queue depth falls below the <fo:inline font-style="italic">resume threshold</fo:inline> set as a
+ context variable <fo:inline font-style="italic">${queue.queueFlowResumeLimit}</fo:inline>
+ (specifying the percentage from the limit values. Default is 80%).
+ </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1204"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
+ <fo:inline font-style="italic">Flow to Disk</fo:inline>
+ -If the queue breaches a limit, newly arriving messages are written to disk and the in-memory
+ representation of the message is minimised. The Broker will transparently retrieve messages
+ from disk as they are required by a consumer or management. The flow to disk policy does not
+ actually restrict the overall size of the queue, merely the space occupied in memory.
+ The Broker's other <fo:basic-link internal-destination="Java-Broker-Runtime-Flow-To-Disk"><fo:inline>Flow to Disk feature</fo:inline></fo:basic-link>
+ operates completely independent of this Queue Overflow Policy.
+ </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1213"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
+ <fo:inline font-style="italic">Reject</fo:inline>
+ -A newly arriving message is rejected when queue limit is breached.
+ </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ A negative value for <fo:inline font-style="italic">maximum number of messages</fo:inline> or
+ <fo:inline font-style="italic">maximum number of bytes</fo:inline> disables the limit.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The Broker issues Operational log messages when the queue sizes are breached. These are documented
+ at <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-List-Queue"><fo:inline>Table C.6, “Queue Log Messages”</fo:inline></fo:basic-link>.
+ </fo:block></fo:block><fo:block id="Java-Broker-Concepts-Queues-SetLowPrefetch"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-in [...]
+ <fo:inline font-style="italic">pre-fetch</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When using some of the messaging features described on this section, using prefetch can give
+ unexpected behaviour. Once the broker has sent a message to the client its delivery order is then fixed,
+ regardless of the special behaviour of the queue. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For example, if using a priority queue and a prefetch of 100, and 100 messages arrive with
+ priority 2, the broker will send these messages to the client. If then a new message arrives
+ with priority 1, the broker cannot leap frog messages of lower priority. The priority 1 will
+ be delivered at the front of the next batch of messages to be sent to the client.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Using pre-fetch of 1 will give exact queue-type semantics as perceived by the
+ client however, this brings a performance cost. You could test with a slightly higher
+ pre-fetch to trade-off between throughput and exact semantics.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">See the messaging client documentation for details of how to configure prefetch.</fo:block></fo:block></fo:block><fo:block id="Java-Broker-Concepts-Ports"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.wi [...]
+ AMQP messaging and HTTP management connectivity it offers for use. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Each Port is configured with the particular <fo:inline font-style="italic">Protocols</fo:inline> and
+ <fo:inline font-style="italic">Transports</fo:inline> it supports, as well as the <fo:inline font-style="italic">Authentication
+ Provider</fo:inline> to be used to authenticate connections. Where SSL is in use, the
+ <fo:inline font-style="italic">Port</fo:inline> configuration also defines which <fo:inline font-style="italic">Keystore</fo:inline>
+ to use and (where supported) which <fo:inline font-style="italic">TrustStore(s)</fo:inline> and whether Client
+ Certificates should be requested/required. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Different <fo:inline font-style="italic">Ports</fo:inline> can support different protocols, and many
+ <fo:inline font-style="italic">Ports</fo:inline> can be configured on the Broker.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The following AMQP protocols are currently supported by the Broker: <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provi [...]
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Additionally, HTTP ports can be configured for use by the associated management
+ plugin. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This diagram explains how Ports, <fo:basic-link internal-destination="Java-Broker-Concepts-Authentication-Providers"><fo:inline>Authentication Providers</fo:inline></fo:basic-link>
+ and an Access Control Provider work together to allow an application to form a connection to
+ a Virtualhost.<fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e1315"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next [...]
+ <fo:inline font-style="italic">Authentication Providers</fo:inline> are used by <fo:inline font-style="italic">Ports</fo:inline> to authenticate connections.
+ Many <fo:inline font-style="italic">Authentication Providers</fo:inline> can be configured on the Broker at the same time, from which
+ each <fo:inline font-style="italic">Port</fo:inline> can be assigned one.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Some Authentication Providers offer facilities for creation and deletion of users.</fo:block></fo:block><fo:block id="Java-Broker-Concepts-Other-Services"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDing [...]
+ The Broker can also have <fo:inline font-style="italic">Access Control Providers</fo:inline>,
+ <fo:inline font-style="italic">Connection Limit Providers</fo:inline>, <fo:inline font-style="italic">Group Providers</fo:inline>,
+ <fo:inline font-style="italic">Keystores</fo:inline>, <fo:inline font-style="italic">Trustores</fo:inline> and [Management] <fo:inline font-style="italic">Plugins</fo:inline> configured.
+ </fo:block><fo:block id="Java-Broker-Concepts-Access-Control-Providers"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt">< [...]
+ user could open on AMQP ports.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Connection Limit Providers configuration and management details are covered in
+ <fo:basic-link internal-destination="Java-Broker-Security-ConnectionLimitProviders"><fo:inline>Section 8.4, “Connection Limit Providers”</fo:inline></fo:basic-link>.</fo:block></fo:block><fo:block id="Java-Broker-Concepts-Group-Providers"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-wei [...]
+ which can be then be used in Access Control rules applicable to the whole group.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Group Provider configuration and management is covered in <fo:basic-link internal-destination="Java-Broker-Security-Group-Providers"><fo:inline>Section 8.2, “Group Providers”</fo:inline></fo:basic-link>.</fo:block></fo:block><fo:block id="Java-Broker-Concepts-Keystores"><fo:block><fo:block><fo:blo [...]
+ for the SSL transports on Ports.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Keystore configuration and management is covered in <fo:basic-link internal-destination="Java-Broker-Management-Managing-Keystores"><fo:inline>Section 7.12, “Keystores”</fo:inline></fo:basic-link>.</fo:block></fo:block><fo:block id="Java-Broker-Concepts-Truststores"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left= [...]
+ on SSL ports or making SSL connections to other external services like LDAP, etc.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Truststore configuration and management is covered in <fo:basic-link internal-destination="Java-Broker-Management-Managing-Truststores"><fo:inline>Section 7.13, “Truststores”</fo:inline></fo:basic-link>.</fo:block></fo:block><fo:block id="Java-Broker-Concepts-Loggers"><fo:block><fo:block><fo: [...]
+ an individual Virtualhost. These are described in <fo:basic-link internal-destination="Java-Broker-Runtime-Logging"><fo:inline>Section 9.1, “Logging”</fo:inline></fo:basic-link>.</fo:block></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-pu [...]
+ the Broker is started, subsequent management is performed using the <fo:basic-link internal-destination="Java-Broker-Management-Channel"><fo:inline>Management interfaces</fo:inline></fo:basic-link></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The configuration for each component is stored as an entry in the broker
+ configuration store, currently implemented as a JSON file which persists changes to
+ disk, BDB or Derby database or an in-memory store which does not. The following
+ components configuration is stored there: <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e1445"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1446"><fo:list-item-label end-indent="label-end()"><fo:b [...]
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Broker startup involves two configuration related items, the 'Initial Configuration'
+ and the Configuration Store. When the broker is started, if a Configuration Store does
+ not exist at the current <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Location"><fo:inline>store location</fo:inline></fo:basic-link> then one will be initialised with the current <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Initial-Config-Location"><fo:inline>'Initial
+ Configuration'</fo:inline></fo:basic-link>. Subsequent broker restarts will use the existing configuration
+ store and ignore the contents of the 'Initial Configuration'. </fo:block></fo:block><fo:block id="Java-Broker-Initial-Configuration-Location"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimu [...]
+ otherwise instructed. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The command line argument <fo:inline font-style="italic">-sp</fo:inline> (or
+ <fo:inline font-style="italic">--store-path</fo:inline>) can optionally be used to specify a different
+ relative or absolute path to use for the broker configuration store: </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e1504">
+$ ./qpid-server -sp ./my-broker-configuration.json
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> If no configuration store exists at the specified/defaulted location when the broker
+ starts then one will be initialised using the current <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Initial-Config-Location"><fo:inline>'Initial
+ Configuration'</fo:inline></fo:basic-link>. </fo:block></fo:block><fo:block id="Java-Broker-Initial-Configuration-Initial-Config-Location"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optim [...]
+ configuration stores. The broker will default to using an internal file within its jar
+ unless otherwise instructed. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The command line argument <fo:inline font-style="italic">-icp </fo:inline> (or
+ <fo:inline font-style="italic">--initial-config-path</fo:inline>) can be used to override the brokers
+ internal file and supply a <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Create-Initial-Config"><fo:inline>user-created
+ one</fo:inline></fo:basic-link>:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e1527">
+$ ./qpid-server -icp ./my-initial-configuration.json
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> If a Configuration Store already exists at the current <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Location"><fo:inline>store location</fo:inline></fo:basic-link> then the
+ current 'Initial Configuration' will be ignored.
+ </fo:block></fo:block><fo:block id="Java-Broker-Initial-Configuration-Create-Initial-Config"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="st [...]
+ file to disk using the command line argument <fo:inline font-style="italic">-cic</fo:inline> (or
+ <fo:inline font-style="italic">--create-initial-config</fo:inline>). If the option is used without
+ providing a path, a file called <fo:inline font-style="italic">initial-config.json</fo:inline> will be created
+ in the current directory, or alternatively the file can be created at a specified
+ location: </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e1548">
+$ ./qpid-server -cic ./initial-config.json
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The 'Initial Configuration' JSON file shares a common format with the brokers JSON
+ Configuration Store implementation, so it is possible to use a Broker's Configuration
+ Store output as an initial configuration. Typically 'Initial Configuration' files would
+ not to contain IDs for the configured entities, so that IDs will be generated when the
+ configuration store is initialised and prevent use of the same IDs across multiple
+ brokers, however it may prove useful to include IDs if using the Memory <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Type"><fo:inline>Configuration Store Type</fo:inline></fo:basic-link>. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> It can be useful to use <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Configuration-Properties"><fo:inline>Configuration
+ Properties</fo:inline></fo:basic-link> within 'Initial Configuration' files to allow a degree of
+ customisation with an otherwise fixed file. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> For an example file, see <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Example"><fo:inline>Section 5.7, “Example of JSON 'Initial Configuration'”</fo:inline></fo:basic-link>
+ </fo:block></fo:block><fo:block id="Java-Broker-Initial-Configuration-Type"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" id="d0e1569" provisional-distance-between-starts="6em * 0.60+1em" provisional-label-separation="1em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1570"><fo:list-item-label end-indent="label-end()" text-align="start"><fo:block><fo:inline> [...]
+ restarts and always relies on the current <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Initial-Config-Location"><fo:inline>'Initial
+ Configuration'</fo:inline></fo:basic-link> to provide the configuration to start the broker with.
+ </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1585"><fo:list-item-label end-indent="label-end()" text-align="start"><fo:block><fo:inline>DERBY</fo:inline></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>stores configuration in embedded derby store</fo:block></fo:block></fo:list-item-body></fo:list-item>< [...]
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The command line argument <fo:inline font-style="italic">-st</fo:inline> (or
+ <fo:inline font-style="italic">--store-type</fo:inline>) can be used to override the default
+ <fo:inline font-style="italic">json</fo:inline>)configuration store type and allow choosing an alternative,
+ such as <fo:inline font-style="italic">Memory</fo:inline>) </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e1618">
+$ ./qpid-server -st memory
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> This can be useful when running tests, or always wishing to start the broker with the
+ same <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Initial-Config-Location"><fo:inline>'Initial
+ Configuration'</fo:inline></fo:basic-link>
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Another example of broker startup with configuration in DERBY network server</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-tre [...]
+$ ./qpid-server -st JDBC \
+ -prop "systemConfig.connectionUrl=jdbc:derby://localhost:1527/path/to/store;create=true" \
+ -prop "systemConfig.username=test" -prop "systemConfig.password=password"
+ </fo:block></fo:block><fo:block id="Java-Broker-Initial-Configuration-Configuration-Properties"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align= [...]
+ ${properties} that can be resolved to String values at startup, allowing a degree of
+ customisation using a fixed file. Configuration Property values can be set either via
+ Java System Properties, or by specifying ConfigurationProperties on the broker command
+ line. If both are defined, System Property values take precedence. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The broker has the following set of core configuration properties, with the indicated
+ default values if not otherwise configured by the user: <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e1636"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space [...]
+ the 'lib' directory and the 'etc' directory often used to store
+ files such as group and ACL files. </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> Defaults to the value set into the QPID_HOME system property if
+ it is set, or remains unset otherwise unless configured by the user.
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> qpid.work_dir </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> Location of [...]
+ the persistent message store and broker configuration store files. </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block> Defaults to the value set into the QPID_WORK system property if
+ it is set, or the 'work' subdirectory of the JVMs current working
+ directory. </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Use of these core properties can be seen in the <fo:basic-link internal-destination="Java-Broker-Initial-Configuration-Example"><fo:inline>default 'Initial Configuration' example</fo:inline></fo:basic-link>. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Configuration Properties can be set on the command line using the
+ <fo:inline font-style="italic">-prop</fo:inline> (or <fo:inline font-style="italic">--configuration-property</fo:inline>)
+ command line argument: </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e1694">
+$ ./qpid-server -prop "qpid.amqp_port=10000" -prop "qpid.http_port=10001"
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> In the example above, property used to set the port number of the default AMQP port
+ is specified with the value 10000, overriding the default value of 5672, and similarly
+ the value 10001 is used to override the default HTTP port number of 8080. When using the
+ 'Initial Configuration' to initialise a new Configuration Store at first broker
+ startup these new values will be used for the port numbers instead. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> NOTE: When running the broker on Windows and starting it via the qpid-server.bat
+ file, the "name=value" argument MUST be quoted. </fo:block></fo:block><fo:block id="Java-Broker-Initial-Configuration-Example"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space [...]
+ provided below:</fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e1705"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximu [...]
+{
+ "name": "${broker.name}",
+ "modelVersion" : "9.0",
+ "authenticationproviders" : [ {
+ "name" : "plain",
+ "type" : "Plain",
+ "users" : [ {
+ "name" : "guest",
+ "type" : "managed",
+ "password" : "guest"
+ } ]
+ } ],
+ "brokerloggers" : [ {
+ "name" : "logfile",
+ "type" : "File",
+ "fileName" : "${qpid.work_dir}${file.separator}log${file.separator}qpid.log",
+ "brokerloginclusionrules" : [ {
+ "name" : "Root",
+ "type" : "NameAndLevel",
+ "level" : "WARN",
+ "loggerName" : "ROOT"
+ }, {
+ "name" : "Qpid",
+ "type" : "NameAndLevel",
+ "level" : "INFO",
+ "loggerName" : "org.apache.qpid.*"
+ }, {
+ "name" : "Operational",
+ "type" : "NameAndLevel",
+ "level" : "INFO",
+ "loggerName" : "qpid.message.*"
+ }, {
+ "name" : "Statistics",
+ "type" : "NameAndLevel",
+ "level" : "INFO",
+ "loggerName" : "qpid.statistics.*"
+ } ]
+ }, {
+ "name" : "memory",
+ "type" : "Memory",
+ "brokerloginclusionrules" : [ {
+ "name" : "Root",
+ "type" : "NameAndLevel",
+ "level" : "WARN",
+ "loggerName" : "ROOT"
+ }, {
+ "name" : "Qpid",
+ "type" : "NameAndLevel",
+ "level" : "INFO",
+ "loggerName" : "org.apache.qpid.*"
+ }, {
+ "name" : "Operational",
+ "type" : "NameAndLevel",
+ "level" : "INFO",
+ "loggerName" : "qpid.message.*"
+ }, {
+ "name" : "Statistics",
+ "type" : "NameAndLevel",
+ "level" : "INFO",
+ "loggerName" : "qpid.statistics.*"
+ } ]
+ } ],
+ "ports" : [ {
+ "name" : "AMQP",
+ "port" : "${qpid.amqp_port}",
+ "authenticationProvider" : "plain",
+ "virtualhostaliases" : [ {
+ "name" : "nameAlias",
+ "type" : "nameAlias"
+ }, {
+ "name" : "defaultAlias",
+ "type" : "defaultAlias"
+ }, {
+ "name" : "hostnameAlias",
+ "type" : "hostnameAlias"
+ } ]
+ }, {
+ "name" : "HTTP",
+ "port" : "${qpid.http_port}",
+ "authenticationProvider" : "plain",
+ "protocols" : [ "HTTP" ]
+ }],
+ "virtualhostnodes" : [ {
+ "name" : "default",
+ "type" : "JSON",
+ "defaultVirtualHostNode" : "true",
+ "virtualHostInitialConfiguration" : "\\${qpid.initial_config_virtualhost_config}"
+ } ],
+ "plugins" : [ {
+ "type" : "MANAGEMENT-HTTP",
+ "name" : "httpManagement"
+ } ]
+}
+</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In the configuration above the following entries are stored: <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e1712"><fo:list-item space-before.optimum="1em" space-be [...]
+ <fo:inline font-style="italic">PlainPasswordFile</fo:inline> with name "passwordFile".
+ </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1719"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block> Two Port entries: "AMQP", "HTTP"
+ </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1722"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block> Virtualhost Node called <fo:inline font-style="italic">default</fo:inline>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-it [...]
+ </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Virtual-Host-Initial-Configuration"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2e [...]
+ <fo:inline font-style="italic">Virtualhost</fo:inline> initial configuration can be specified in <fo:inline font-style="italic">Virtualhost node</fo:inline>
+ attribute <fo:inline font-style="italic">virtualHostInitialConfiguration</fo:inline>. On first startup,
+ the <fo:inline font-style="italic">virtualhost</fo:inline> is created based on provided initial configuration.
+ You can define there manageable <fo:inline font-style="italic">Virtualhost</fo:inline> attributes and children like exchanges, queues, etc.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The attribute <fo:inline font-family="monospace">virtualHostInitialConfiguration</fo:inline> can have a value of <fo:inline font-style="italic">URL</fo:inline>
+ to an external resource where <fo:inline font-style="italic">virtualhost</fo:inline> initial configuration is provided in json format, or,
+ it can hold a string value with initial configuration in stringified json format. If required, you can
+ specify initial configuration as context variable which can be resolved as <fo:inline font-style="italic">URL</fo:inline>
+ to external resource or stringified json.
+ </fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e1769"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with [...]
+ ...
+ "virtualhostnodes" : [ {
+ "name" : "default",
+ "type" : "JSON",
+ "defaultVirtualHostNode" : "true",
+ "virtualHostInitialConfiguration" : "{\"type\":\"BDB\",\"nodeAutoCreationPolicies\":[{\"patterns\":\".*\",\"createdOnPublish\":\"true\",\"createdOnConsume\":\"true\",\"nodeType\":\"queue\"}]}"
+ } ]
+ ...</fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">After creation of <fo:inline font-style="italic">virtualhost</fo:inline> the value of
+ <fo:inline font-family="monospace">virtualHostInitialConfiguration</fo:inline> is set to an empty string.</fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flo [...]
+ Console and a REST API.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1792"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>AMQP - The AMQP protocols 0-8..0-10 allow for some management of Exchanges, Queue and
+ Bindings. This will be superseded by AMQP 1.0 Management. It is suggested that new users
+ favour the Management facilities provided by the Web Console/REST API.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block id="Java-Broker-Management-Channel-HTTP"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" [...]
+ Broker. The plugin actually provides two interfaces:</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e1805"><fo:list-item space-before.optimum="1em" space [...]
+ Console</fo:inline></fo:basic-link> - rich web based interface for the management of the
+ Broker.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1811"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API"><fo:inline>REST API</fo:inline></fo:basic-link> -
+ REST API providing complete programmatic management of the Broker.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Web Management Console itself uses the REST API, so every function you can perform
+ through the Web Management Console can be also be scripted and integrated into other
+ systems. This provides a simple integration point allowing the Broker to monitored and
+ controlled from systems such as Naoios or BMC Control-M.</fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-HTTP-DefaultConfiguration"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-befor [...]
+ is configured to require SASL authentication. The port is not SSL protected.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The settings can be changed by configuring the HTTP plugin and/or the port configured
+ to serve HTTP.</fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-Web-Console"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em [...]
+ and Control of the Broker. From here, all aspects of the Broker can be controlled,
+ including: <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e1832"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1833"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-lab [...]
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The remainder of the section provides an introduction to the web management console and
+ its use.</fo:block><fo:block id="Java-Broker-Management-Channel-Web-Console-Accessing"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" s [...]
+ HTTP Management Plugin is in its default configuration, the Web Management Console can
+ be accessed by pointing a browser at the following URL:</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ <fo:inline font-family="monospace">http://myhost.mydomain.com:8080</fo:inline>
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Console will prompt you to login using a username and password.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e1860"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-befor [...]
+ of the screen are now explained.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e1874"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-aft [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e1885"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1886"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo: [...]
+ showing all entities within the Broker. Double click on an entity name to
+ cause its tab to be opened. </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1891"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">B</fo:inline> - Tab. Shows the details of an entity including its
+ attributes and its child entities. </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1896"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">C</fo:inline> - Occluded tab. Click tab name to bring the tab to
+ the front.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1901"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">D</fo:inline> - Auto restore check box. Checked tabs will be
+ automatically restored on subsequent login.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1906"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">E</fo:inline> - Close. Click to close the tab.</fo:block></fo:block></ [...]
+ Help.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="Java-Broker-Management-Channel-Web-Console-Orientation-Tab"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0 [...]
+ entity. Click the panel title bar opens/closes the panel.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1934"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">2</fo:inline> - Child Panels. Panels containing a table listing
+ the children of the entity. Click the panel title bar opens/closes the
+ panel.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1939"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">3</fo:inline> - Child Row. Row summarizing a child entity. Double
+ click to open the child tab.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e1944"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">4</fo:inline> - Child Operations. Buttons to add a new child or
+ perform operations on existing children.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-Web-Console-Managing-Entities"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-alig [...]
+ on the Child Panel on the Parent's tab. Clicking the Add button causes an add
+ dialogue to be displayed.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Add dialogues allow you to set the attributes of the new child, and set context
+ variables. Most fields on the add dialogue have field level help that give more
+ details about the attribute and any default value (which may be expressed in terms
+ of a context variable) that will take effect if you leave the attribute unset. An
+ example add dialogue is shown in the figure that follows.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="Java-Broker-Management-Channel-Web-Console-Managing-Entities-Add-Dialogue"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font- [...]
+ button on the tab corresponding to the Entity itself. Editing an entity lets you
+ change some of its attributes and modify its context variables. Most fields on the
+ edit dialogue have field level help that give more details about the attribute and
+ any default value. An example edit dialogue is shown in the figure that
+ follows.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="Java-Broker-Management-Channel-Web-Console-Managing-Entities-Edit-Dialogue"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimu [...]
+ <fo:inline font-family="monospace">Delete</fo:inline> button on the tab corresponding to the Entity itself.
+ For some child types, you can select many children from the parent's type and delete
+ many children at once.</fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-Web-Console-Managing-Context-Variables"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" [...]
+ variables</fo:inline></fo:basic-link> associated with them.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Most add and edit dialogues have the ability to make context variable assignments.
+ To add/change/remove a context variable, click the Context Variable panel to expand
+ it.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="Java-Broker-Management-Channel-Web-Console-Managing-Entities-Context-Variables-Dialogue"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-afte [...]
+ local context variables in bold, and any inherited from above in normal face.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Since context variables can be defined in terms of other context variables, the
+ display has two value columns: actual and effective. Actual shows the value truely
+ associated with the variable, where as effective shows the resulting value, after
+ variable expansion has taken place.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:inline font-family="monospace">+</fo:inline> button allows new variables to be added. The
+ <fo:inline font-family="monospace">-</fo:inline> button removes existing ones.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">You change an existing local variables defintion by clicking on the actual value.
+ You can also <fo:inline font-style="italic">provide a local definition</fo:inline> for an inherited value
+ by clicking on the actual value and typing its new value.</fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-API"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" s [...]
+ for use by developers who wish to automate the management or monitoring of the Broker. It
+ is also very useful for adhoc monitoring on the command line using tools such as
+ <fo:inline font-family="monospace">curl</fo:inline>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The REST API provides access to all of the Broker's entities using hierarchical paths
+ expressed by the URI. Responses are returned in JSON format.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:inline font-family="monospace">GET</fo:inline> method request retrieves information about an object, the
+ <fo:inline font-family="monospace">DELETE</fo:inline> method requests the removal of one, and the <fo:inline font-family="monospace">PUT</fo:inline>
+ or <fo:inline font-family="monospace">POST</fo:inline> methods perform updates or create new objects. The
+ <fo:inline font-family="monospace">POST</fo:inline> method is also used to invoke operations.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The REST API is versioned with the version number embedded within the URI. The general form
+ of the URI is <fo:inline font-family="monospace">/api/<version></fo:inline> where <version> is a dot separated
+ major and minor model version prefixed with "v", for example, "v6.1" (without the quotation marks).
+ For convenience the alias <fo:inline font-family="monospace">latest</fo:inline> (<fo:inline font-family="monospace">/api/latest</fo:inline>) signifies the
+ latest supported version.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">There are also some ancillary services under URI <fo:inline font-family="monospace">/service</fo:inline> used for
+ authentication and logout.</fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-API-APIDocs"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em [...]
+ <fo:inline font-family="monospace">/apidocs</fo:inline>. It is also linked from the menu of the Web Management Console.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-API-Authentication"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" [...]
+ by the <fo:basic-link internal-destination="Java-Broker-Concepts-Authentication-Providers"><fo:inline>authentication
+ provider</fo:inline></fo:basic-link> associated with HTTP <fo:basic-link internal-destination="Java-Broker-Concepts-Ports"><fo:inline>port</fo:inline></fo:basic-link>
+ on which you connect.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">You may authenticate using <fo:basic-link external-destination="url(https://www.ietf.org/rfc/rfc4422.txt)"><fo:inline>SASL</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://www.ietf.org/rfc/rfc4422.txt)">https://www.ietf.org/rfc/rfc4422.txt</fo:basic-link>]</fo:inline>
+ (<fo:inline font-family="monospace">/service/sasl</fo:inline>) or <fo:basic-link external-destination="url(https://tools.ietf.org/html/rfc2617)"><fo:inline>HTTP
+ Basic Authentication</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://tools.ietf.org/html/rfc2617)">https://tools.ietf.org/html/rfc2617</fo:basic-link>]</fo:inline>. The latter is convienent when using tools such as
+ <fo:inline font-family="monospace">curl</fo:inline> on the command line. This is illustrated in the examples
+ below.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For SASL authentication use a <fo:inline font-family="monospace">GET</fo:inline> request to
+ <fo:inline font-family="monospace">/service/sasl</fo:inline> to get a list of supported SASL mechanisms, and use
+ <fo:inline font-family="monospace">PUT</fo:inline> to the same URL to perform the SASL negotiation.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">It is possible to end an authenticated session using
+ <fo:inline font-family="monospace">/service/logout</fo:inline>.</fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-API-Create"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum [...]
+ URI (the one ending with configured object name) or by submitting PUT/POST request against
+ parent URI. The request encoding should be json (application/json) and request body should
+ contain attributes values in json format. On successful completion of operation a response
+ should be returned having response status code set to 201 and response header "Location" set
+ to ConfiguredObject full URI. If object with a such name/id already exist and POST/PUT
+ requests is made against parent URI, an error response should be returned having response code
+ 409 (conflict) and body containing the json with the reason of operation failure. If object
+ with a such name/id already exist and and PUT request is made against ConfiguredObject full
+ URI, then ConfiguredObject update should be performed and http status code 200 should be
+ returned. If ConfiguredObject cannot be created because of validation failure(s) the response
+ should have http status code set 422 (Unprocessible Entity) and body should contain json with
+ the reason of operation failure. On any other failure to create ConfiguredObject the response
+ should have status code set to 400 (Bad Request) and payload should contain a json with error
+ explaining the exact reason of failure. </fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e2147"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" [...]
+ contained within virtual host node with name "vhn") either of the following requests should
+ be made: </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2152">PUT /api/latest/queue/vhn/vh HTTP/1.1</fo:block><fo:block space-before.minimum="0.8em" space-before [...]
+ "Location" should be set to "/api/latest/queue/test/my-queue". If queue with name "my-queue"
+ already exists and either of 2 first requests above were used, an error response with
+ response code 409 (conflict) and body containing json with message that queue exists should
+ be returned. If queue with name "my-queue" exists and last request is used, then Queue
+ update should occur. </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-API-Update"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-bef [...]
+ ConfiguredObject full URI (the one ending with configured object name). The request encoding
+ should be json (application/json) and request body should contain a ConfiguredObject json
+ (with all or only modified attributes). On successful completion of operation a response code
+ 200 should be returned. If ConfiguredObject does not exists and PUT method is used, such
+ object should be created (201 response will be returned in this case). If ConfiguredObject
+ does not exists and POST method is used, an error response should be returned having response
+ status code 404 and payload with json explaining the problem. If any error occur on update, a
+ response with response code 400 or 422 or 404 should be sent back to the client containing
+ json body with error details. </fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e2167"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-aft [...]
+ virtual host node with name "vhn") either of the following requests can be made:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2172">POST /api/latest/queue/vhn/v [...]
+ be deleted with update request having desiredState attribute set to value "DELETED". POST or
+ PUT methods can be used in this case.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">On successful completion of operation a response code 200 should be returned.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">With DELETE method object ConfiguredObject in following ways:</fo:block><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maxi [...]
+ configured object name)</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e2189"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>by submitting DELETE request using parent URI and providing parameters having the same
+ names as children attributes, for example, id, name, etc. Multiple children can be deleted
+ in a such way. Many "id" parameters can be specified in such requests. Only children with
+ matching attribute values will be deleted.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e2192"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphe [...]
+ virtual host node with name "vhn") either of the following requests can be made:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2197">DELETE /api/latest/queue/vhn [...]
+ all queues beneath the virtualhost called <fo:inline font-family="monospace">vh</fo:inline>. A collection will be returned.
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2217">GET /api/latest/queue/vhn/vh</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-b [...]
+ For instance, to filter those queues of type <fo:inline font-family="monospace">standard</fo:inline>:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2224">GET /api/ [...]
+ response</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e2235"><fo:list-item-label end-indent="label-end()" text-align="start"><fo:block><fo:inline>actuals</fo:inline></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>If set to "true" attribute actual values are returned instead of effective</fo:block></fo:block></fo [...]
+ parameters. Pass parameters using a JSON request body containing a map with a map entry for
+ each parameter. </fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e2264"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0. [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">200</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">REST request is successfully completed. This status code can be returned by
+ update, delete and get requests.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">201</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">New configured object is created. It is returned by REST PUT and POST requests
+ for creation of configured objects.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">400</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">REST request cannot be performed due to errors in request. It can be returned
+ from create, update and delete requests. The details of a problem are provided in
+ the response payload in json format.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">401</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The request requires user authentication</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">403</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Execution of request is not allowed due to failure to authorize user
+ operation.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">404</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The requested configured object cannot be found. This status code can be
+ returned from POST update requests if configured object does not exist. The reason
+ for the status code is provided in the response payload in json format. </fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">409</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The request can not be performed because its execution can create conflicts in
+ the broker. This status code can be returned from POST/PUT create requests against
+ parent URI if configured object with requested name or id already exists. The status
+ code 409 can also be returned if removal or update of configured object can violate
+ system integrity. The reason for the status code is provided in the response payload
+ in json format. </fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">422</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The request can not be performed because provided information either incomplete
+ or invalid. This status code can be returned from create or update requests. The
+ reason for the status code is provided in the response payload in json
+ format.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-API-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space- [...]
+#create a durable queue
+curl --user admin -X PUT -d '{"durable":true}' http://localhost:8080/api/latest/queue/<vhostnode name>/<vhostname>/<queuename>
+#create a durable priority queue
+curl --user admin -X PUT -d '{"durable":true,"type":"priority"}' http://localhost:8080/api/latest/queue/<vhostnode name>/<vhostname>/<queuename>
+ </fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> NOTE: These curl examples utilise an unsecured HTTP transport. To use the examples it is
+ first necessary enable Basic authentication for HTTP within the HTTP Management Configuration
+ (it is off by default). For details see <fo:basic-link internal-destination="Java-Broker-Management-Managing-Plugin-HTTP"><fo:inline>Section 7.17, “HTTP Plugin”</fo:inline></fo:basic-link>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-API"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-ind [...]
+ the <fo:inline font-style="italic">Query API</fo:inline>. This allows the retrieval of the existing configured objects attributes
+ satisfying user-provided queries.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Developers and operators can use this feature to monitor the Broker.
+ For example, using <fo:inline font-style="italic">Query API</fo:inline> one can find all queues with queue depth
+ exceeding some limit or existing connections made from a particular location(s).</fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-API-Overview"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minim [...]
+ When using the <fo:inline font-style="italic">Query API</fo:inline> one specifies the category of the object
+ to query, a list of attributes to return in the result set, an optional where clause,
+ expressed as a predicate, that determines the filtering criteria, ordering, and
+ limit/offset. The features should be readily recognisable to anyone who has has familiarity
+ with SQL.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Queries associate with either the <fo:inline font-style="italic">broker</fo:inline> as a whole, or an
+ individual <fo:inline font-style="italic">virtualhost</fo:inline>. Queries associated with the Broker
+ can query any object within the Broker. Queries associated with a virtualhost are limited
+ to the objects of the virtualhost itself. For instance a queue query associated
+ with a virtualhost queries only the queues belonging to that virtualhost. On the other
+ hand, a queue query associated with the Broker sees all the queues belonging on the entire
+ Broker.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e2425"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">/api/latest/querybroker/<configured object category name></fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">/api/<version>/querybroker/<configured object category name></fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Query API URL fragment to query the specified object type across the entire broker</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">/api/latest/queryvhost/<virtual host node name>/<virtual host name>/<configured object category name></fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">/api/<version>/queryvhost/<virtual host node name>/<virtual host name>/<configured object category name></fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Query API URL fragment to query the specified object type for a specific virtualhost</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The QueryAPI accepts <fo:inline font-family="monospace">select</fo:inline>, <fo:inline font-family="monospace">where</fo:inline>, <fo:inline font-family="monospace">orderBy</fo:inline>,
+ <fo:inline font-family="monospace">limit</fo:inline> and <fo:inline font-family="monospace">offset</fo:inline> request parameters.
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e2484"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-family="monospace">select</fo:inline></fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:inline font-family="monospace">select</fo:inline> defines the columns of the result set. It is a
+ comma-separated list of expressions. At its most simple, an expression can be
+ the name of the attribute (e.g. <fo:inline font-family="monospace">queueDepthBytes</fo:inline>), but more complex
+ <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-Query-API-Expressions"><fo:inline>expressions</fo:inline></fo:basic-link> are also supported.</fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Columns within the result set are named. For expressions that are simple attribute
+ names, the column names will follow the attributes themselves. By default, other
+ expressions will have a no name.</fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Column names can be overridden with an <fo:inline font-family="monospace">AS</fo:inline>
+ clause e.g. <fo:inline font-family="monospace">now() AS currentDate</fo:inline>
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-family="monospace">where</fo:inline></fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:inline font-family="monospace">where</fo:inline> provides a boolean expression defining the result set filtering.</fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The syntax of the <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-Query-API-Expressions"><fo:inline>expression</fo:inline></fo:basic-link>
+ is based on a subset of the SQL92 conditional expression syntax and is similar to selector expressions in JMS e.g.
+ <fo:inline font-family="monospace">queueDepthBytes > 16384 AND name like '%flow_queue'</fo:inline>.
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-family="monospace">orderBy</fo:inline></fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Ordering conditions; the syntax of the
+ <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-Query-API-Expressions"><fo:inline>
+ expression
+ </fo:inline></fo:basic-link>
+ is based on a subset of
+ the SQL92 ordering expression syntax. Similar to ordering expressions in SQL,
+ one can specify in ordering expression attributes names, sub-expressions
+ or indexes (starting from 1) of attributes or expressions specified in select.
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-family="monospace">limit</fo:inline></fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The maximum number of results to provide starting from given offset.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-family="monospace">offset</fo:inline></fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">An offset in results (default is 0) to provide results from.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e2594"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" id="d0e2607" provisional-distance-between-starts="7em * 0.60+1em" provisional-label-separation="1em"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e2608"><fo:list-item-label end-indent="label-end()" text-align="start"><fo:block><fo:inline> [...]
+ clause. Note that anonymous expressions (that is, those expressed without an
+ <fo:inline font-family="monospace">AS</fo:inline>) will have empty column name.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e2621"><fo:list-item-label end-indent="label-end()" text-align="start"><fo:block><fo:inline><fo:inline font-family="monospace">results</fo:inline></fo:inline></fo:block></fo:list-item-label><fo:list-item-body start-indent=" [...]
+ </fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e2639"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with [...]
+{
+ "headers" : [ "name", "queueDepthBytes", "queueDepthMessages" ],
+ "results" : [ [ "foo", 312, 26], [ "bar", 300, 24 ] ],
+ "total" : 2
+}
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-API-Expressions"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2e [...]
+ clauses can be comprised in the following manner. Expressions can be nested to arbitary depth. Parentheses
+ allow for precedence to be explicitly denoted.
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e2660"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e2661"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo: [...]
+ a reference to a parent attribute <fo:inline font-family="monospace">$parent.name</fo:inline></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e2669"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>literal e.g. <fo:inline font-family="monospace">3</fo:inlin [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e2695"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" s [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-family="monospace">concat(obj[,obj..])</fo:inline></fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">concatenates the given objects into a string</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-family="monospace">now()</fo:inline></fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">returns current date and time</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-family="monospace">to_date(object)</fo:inline></fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">converts the first parameter, which must be a string. into a date. The
+ string must be in ISO-8601 format e.g. <fo:inline font-family="monospace">1970-01-01T10:00:00Z</fo:inline>.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-family="monospace">date_add(object, duration)</fo:inline></fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">adds the given ISO-8601 duration <fo:inline font-family="monospace">duration</fo:inline> e.g.
+ <fo:inline font-family="monospace">P1D</fo:inline> or <fo:inline font-family="monospace">-PT10H</fo:inline> to the date provided by the
+ first parameter.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-family="monospace">to_string(object[, format[, timezone]])</fo:inline></fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Converts given object into a string.</fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If the format argument is present, it must be a Java
+ <fo:basic-link external-destination="url(http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html)"><fo:inline>Formatter</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html)">http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html</fo:basic-link>]</fo:inline>
+ compliant string e.g. <fo:inline font-family="monospace">%f</fo:inline> or <fo:inline font-family="monospace">%tY-%tm-%td</fo:inline>.
+ </fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The timezone argument is significant if the object is a Date. If the timezone
+ argument is specified it must be a valid Java timezone name. The date is converted
+ to the specified timezone before being formatted by the<fo:inline font-family="monospace">format</fo:inline>.
+ If the timezone is omitted <fo:inline font-family="monospace">UTC</fo:inline> is assumed.
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1. [...]
+ Broker query engine extends existing functionality of broker query API and allows executing complex SQL-like
+ queries against the broker. It allows using predicates combining AND/OR/NOT logical operations, supports
+ aggregation and grouping as well as numerous numeric, datetime and string functions.
+ Currently, querying from multiple object types (domains) in a single query as well as all types of joins
+ are not supported.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Broker-Configuration"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" [...]
+ Some properties influencing the query output can be specified directly in the request, but there are also global
+ properties, affecting the way query engine works.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e2818"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">qpid.port.http.query.engine.cacheSize</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Query cache size</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">qpid.port.http.query.engine.maxQueryDepth</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Maximal query depth</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">qpid.port.http.query.engine.zoneId</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Timezone ID</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Broker-Configuration-Query-Cache-Size"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1 [...]
+ After query is parsed from the SQL string, it is stored into a cache. When the same query will be fired against
+ the query engine, parsing will be omitted and the query structure will be retrieved from cache. By default, query cache
+ size is 1000. This means, that when 1000 different queries will be fired against the query engine, the next one will
+ override the oldest cache entry. When set to 0 or to negative value, query cache will not be used and each query
+ will be parsed.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Broker-Configuration-Max-Query-Depth"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-bef [...]
+ The longer is the query and the more conditions it contains, the bigger becomes the query depth. To limit query
+ complexity, maximal query depth parameter can be used. By default, maximal query depth is 4096. This should suffice
+ for most queries even complicated ones. If query depth exceeds this limit, following error will
+ be returned:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2875">
+ {
+ "errorMessage": "Max query depth reached: 4096"
+ }
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Broker-Configuration-Zone-ID"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maxi [...]
+ Zone ID value should follow the rules described in <fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/time/ZoneId.html#of-java.lang.String-)"><fo:inline>javadoc</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/time/ZoneId.html#of-java.lang.String-)">https://docs.oracle.com/javase/8/docs/api/java/time/ZoneId.html#of-java.lang.String-</fo:bas [...]
+ The default value for zone id is "UTC".
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Request-Format"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum [...]
+ An authorized request should be sent to the following endpoint:
+ POST http://<hostname>:<port>/api/latest/querybroker/broker
+ SQL query should be supplied in the "sql" field of the JSON body:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2890">
+ {
+ "sql": "select * from broker"
+ }
+ </fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-SQL-Query-Format"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="sta [...]
+ SQL keywords, operators and functions are case-insensitive, so are domain names (object types) specified in
+ the <fo:inline font-family="monospace">FROM</fo:inline> clause. Field names specified in the <fo:inline font-family="monospace">SELECT</fo:inline> clause are case-sensitive.
+ Following queries are similar:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2903">
+ {
+ "sql": "SELECT name FROM BROKER"
+ }
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2905">
+ {
+ "sql": "SELECT name FROM broker"
+ }
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2907">
+ {
+ "sql": "select name from broker"
+ }
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ They will return the same output.
+ When an entity field name is written in wrong case or misspelled, an error will be returned.
+ For example, following query
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2911">
+ {
+ "sql": "SELECT NAME FROM BROKER"
+ }
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ has field <fo:inline font-family="monospace">NAME</fo:inline> written in upper case, which will result in an error:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2918">
+ {
+ "errorMessage": "Domain 'BROKER' does not contain field 'NAME'"
+ }
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ In this document many SQL queries are split into several lines for better readability, but JSON format does not support
+ multiline string fields. Therefore, even the long SQL queries should be placed in <fo:inline font-family="monospace">sql</fo:inline> field of the JSON body as a
+ single line.
+ Aside from SQL query several configuration parameters can be provided to influence output format:
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e2927"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" s [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">dateTimeFormat</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Format of the datetime fields, possible values: LONG, STRING</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">dateTimePattern</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Pattern for datetime fields formatting, e.g. yyyy-MM-dd HH:mm:ss</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">decimalDigits</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Amount of decimal digits</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">roundingMode</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Rounding mode for arithmetic operations, possible values UP, DOWN, CEILING, FLOOR,
+ HALF_UP, HALF_DOWN, HALF_EVEN, UNNECESSARY
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Datetime-Format"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" t [...]
+ When datetime format is specified as <fo:inline font-family="monospace">LONG</fo:inline>, datetime fields will be returned as
+ milliseconds from UNIX epoch. So, following query
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2993">
+ {
+ "sql": "select id, name, createdTime from broker",
+ "dateTimeFormat": "LONG"
+ }
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ returns following result:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e2997">
+ {
+ "results": [
+ {
+ "id": "ce8bbaf0-3efa-4176-889a-7987ac1988cc",
+ "name": "broker",
+ "createdTime": 1645195849272
+ }
+ ],
+ "total": 1
+ }
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ In opposite the query
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3001">
+ {
+ "sql": "select id, name, createdTime from broker",
+ "dateTimeFormat": "STRING"
+ }
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ returns following result:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3005">
+ {
+ "results": [
+ {
+ "id": "ce8bbaf0-3efa-4176-889a-7987ac1988cc",
+ "name": "broker",
+ "createdTime": "2022-02-18 15:50:49.272"
+ }
+ ],
+ "total": 1
+ }
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Datetime-Pattern"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" [...]
+ The default format of the string datetime representation is "yyyy-MM-DD HH:mm:ss.SSS".
+ It can be changed using the parameter <fo:inline font-family="monospace">dateTimePattern</fo:inline>.
+ The query
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3015">
+ {
+ "sql": "select id, name, createdTime from broker",
+ "dateTimeFormat": "STRING",
+ "dateTimePattern": "yyyy/MM/dd HH:mm:ss.SSS"
+ }
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ returns following result
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3019">
+ {
+ "results": [
+ {
+ "id": "ce8bbaf0-3efa-4176-889a-7987ac1988cc",
+ "name": "broker",
+ "createdTime": "2022/02/18 15:50:49.272"
+ }
+ ],
+ "total": 1
+ }
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Decimal-Digits"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" te [...]
+ By default, decimal digits value is 6, meaning there will be 6 digits after decimal point.
+ For example, following query
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3026">
+ {
+ "sql": "select avg(queueDepthMessages) from queue"
+ }
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ returns following result:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3030">
+ {
+ "results": [
+ {
+ "avg(queueDepthMessages)": 0.437227
+ }
+ ],
+ "total": 1
+ }
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ This behavior can be changed for each value separately using ROUND or TRUNC functions, but can also be changed for
+ the whole query result by supplying <fo:inline font-family="monospace">decimalDigits</fo:inline> parameter. Following query
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3037">
+ {
+ "sql": "select avg(queueDepthMessages) from queue",
+ "decimalDigits": 2
+ }
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ returns following result:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3041">
+ {
+ "results": [
+ {
+ "avg(queueDepthMessages)": 0.43
+ }
+ ],
+ "total": 1
+ }
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Rounding-Mode"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" tex [...]
+ Rounding mode affects how results of the arithmetic operations will be rounded. The rules of applying different rounding
+ modes can be found in appropriate <fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/math/RoundingMode.html)"><fo:inline>javadoc</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/math/RoundingMode.html)">https://docs.oracle.com/javase/8/docs/api/java/math/RoundingMode.html</fo:basic-link>]</fo:inline>.
+ Default rounding mode is HALF_UP. Changing rounding mode will affect division operations, but will not affect results of
+ ROUND() and TRUNC() functions (which always use rounding mode HALF_UP and HALF_DOWN appropriately).
+ Following query
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3051">
+ {
+ "sql": "select 2/3",
+ "decimalDigits": 2,
+ "roundingMode": "DOWN"
+ }
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ uses rounding mode <fo:inline font-family="monospace">DOWN</fo:inline> and returns following result:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3058">
+ {
+ "results": [
+ {
+ "2/3": 0.66
+ }
+ ],
+ "total": 1
+ }
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ When rounding mode will be changed to <fo:inline font-family="monospace">UP</fo:inline>
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3065">
+ {
+ "sql": "select 2/3",
+ "decimalDigits": 2,
+ "roundingMode": "UP"
+ }
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ result will be changed as well:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3069">
+ {
+ "results": [
+ {
+ "2/3": 0.67
+ }
+ ],
+ "total": 1
+ }
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Object-Types"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum=" [...]
+ Object types or domains to query from are specified in the "FROM" clause. The broker object hierarchy can be retrieved
+ using an endpoint http://<hostname>:<port>/service/metadata
+
+ Alternatively following SQL query can be fired
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3076">
+ {
+ "sql": "select * from domain"
+ }
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ returning similar result:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3080">
+ {
+ "results": [
+ {
+ "name": "AccessControlProvider"
+ },
+ {
+ "name": "AclRule"
+ },
+ {
+ "name": "AuthenticationProvider"
+ },
+ {
+ "name": "Binding"
+ },
+ {
+ "name": "BrokerConnectionLimitProvider"
+ },
+ {
+ "name": "BrokerLogInclusionRule"
+ },
+ {
+ "name": "BrokerLogger"
+ },
+ {
+ "name": "Certificate"
+ },
+ {
+ "name": "Connection"
+ },
+ {
+ "name": "ConnectionLimitRule"
+ },
+ {
+ "name": "Consumer"
+ },
+ {
+ "name": "Domain"
+ },
+ {
+ "name": "Exchange"
+ },
+ {
+ "name": "Group"
+ },
+ {
+ "name": "GroupMember"
+ },
+ {
+ "name": "GroupProvider"
+ },
+ {
+ "name": "KeyStore"
+ },
+ {
+ "name": "Plugin"
+ },
+ {
+ "name": "Port"
+ },
+ {
+ "name": "Queue"
+ },
+ {
+ "name": "RemoteReplicationNode"
+ },
+ {
+ "name": "Session"
+ },
+ {
+ "name": "TrustStore"
+ },
+ {
+ "name": "User"
+ },
+ {
+ "name": "VirtualHost"
+ },
+ {
+ "name": "VirtualHostAccessControlProvider"
+ },
+ {
+ "name": "VirtualHostAlias"
+ },
+ {
+ "name": "VirtualHostConnectionLimitProvider"
+ },
+ {
+ "name": "VirtualHostLogInclusionRule"
+ },
+ {
+ "name": "VirtualHostLogger"
+ },
+ {
+ "name": "VirtualHostNode"
+ }
+ ],
+ "total": 31
+ }
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ In addition to the object types supported by broker query REST API, following object types (domains)
+ can be used as well:
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e3086"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">AclRule</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Binding</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Certificate</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">ConnectionLimitRule</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Domain</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Those objects do not belong to the broker object hierarchy (as they don't descend from ConfiguredObject), they were
+ added to make queries against listed domains more simple.
+ For example, following query
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3129">
+ SELECT *
+ FROM AclRule
+ WHERE identity = 'amqp_user1'
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ returns following result:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3133">
+ {
+ "results": [
+ {
+ "identity": "amqp_user1",
+ "attributes": {},
+ "action": {
+ "objectType": "VIRTUALHOST",
+ "properties": {
+ "name": null,
+ "empty": true
+ },
+ "operation": "ACCESS"
+ },
+ "objectType": null,
+ "operation": null,
+ "outcome": "ALLOW_LOG"
+ },
+ {
+ "identity": "amqp_user1",
+ "attributes": {
+ "NAME": "request.amqp_user1",
+ "ROUTING_KEY": "*"
+ },
+ "action": {
+ "objectType": "EXCHANGE",
+ "properties": {
+ "name": "request.amqp_user1",
+ "empty": false
+ },
+ "operation": "PUBLISH"
+ },
+ "objectType": null,
+ "operation": null,
+ "outcome": "ALLOW"
+ },
+ {
+ "identity": "amqp_user1",
+ "attributes": {
+ "NAME": "broadcast.amqp_user1.*"
+ },
+ "action": {
+ "objectType": "QUEUE",
+ "properties": {
+ "name": "broadcast.amqp_user1.*",
+ "empty": false
+ },
+ "operation": "CONSUME"
+ },
+ "objectType": null,
+ "operation": null,
+ "outcome": "ALLOW_LOG"
+ },
+ {
+ "identity": "amqp_user1",
+ "attributes": {
+ "NAME": "response.amqp_user1"
+ },
+ "action": {
+ "objectType": "QUEUE",
+ "properties": {
+ "name": "response.amqp_user1",
+ "empty": false
+ },
+ "operation": "CONSUME"
+ },
+ "objectType": null,
+ "operation": null,
+ "outcome": "ALLOW_LOG"
+ }
+ ],
+ "total": 4
+ }
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Please note, that keyword <fo:inline font-family="monospace">FROM</fo:inline> isn't mandatory, it is possible to execute queries without it, when the result shouldn't
+ retrieve any data from broker. Few examples of such queries would be:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3140">
+ SELECT CURRENT_TIMESTAMP()
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3142">
+ SELECT DATE(CURRENT_TIMESTAMP())
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3144">
+ SELECT (2 + 10) / 3
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3146">
+ SELECT 2 * 5 > 12
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Filtering-Results"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" tex [...]
+ Filtering is achieved by using different operators groups in a <fo:inline font-family="monospace">WHERE</fo:inline> clause. Operators
+ can be divided into comparison operators, conditional operators and logical operators.
+ </fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Broker-Data-Types"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="st [...]
+ Broker entities have fields belonging to different java types: primitives (boolean, int, long, double), strings,
+ datetime <fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/util/Date.html)"><fo:inline>Date</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/util/Date.html)">https://docs.oracle.com/javase/8/docs/api/java/util/Date.html</fo:basic-link>]</fo:inline>,
+ <fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html)"><fo:inline>LocalDate</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html)">https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html</fo:basic-link>]</fo:inline>,
+ <fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html)"><fo:inline>LocalDateTime</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html)">https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html</fo:basic-link>]</fo:inline>,
+ <fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html)"><fo:inline>Instant</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html)">https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html</fo:basic-link>]</fo:inline>.
+ Object IDs are usually of <fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html)"><fo:inline>UUID</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html)">https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html</fo:basic-link>]</fo:inline> type.
+ Many values are enums.
+
+ When comparing field values, they follow some implicit casting rules: enums and UUIDs are cast to strings,
+ datetime values are cast to <fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html)"><fo:inline>Instant</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html)">https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html</fo:basic-link>]</fo:inline>,
+ numeric values are cast to <fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html)"><fo:inline>BigDecimal</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html)">https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html</fo:basic-link>]</fo:inline>.
+
+ When casting string value to date, by default is used pattern "uuuu-MM-dd".
+
+ That allows to run following queries:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3182">
+ SELECT *
+ FROM certificate
+ WHERE DATE(validUntil) = '2020-12-31'
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Here string value is implicitly cast to Instant and both value are compared as Instant instances.
+ When casting string to datetime, by default is used pattern "uuuu-MM-dd HH:mm:ss" with optional 0-6 second fractions.
+ That allows to run following queries:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3186">
+ SELECT *
+ FROM certificate
+ WHERE DATE(validUntil) > '2020-12-31 23:59:59.999'
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Here string value is implicitly cast to Instant as well and both value are compared as Instant instances.
+ It is important to compare values of the same type, otherwise an error may be returned or query may be evaluated
+ erroneously. For example, following query
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3190">
+ SELECT *
+ FROM queue
+ WHERE durable = 'true'
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ will return an empty result, because field <fo:inline font-family="monospace">durable</fo:inline> is of boolean type and comparing boolean value with a string 'true'
+ will always return false. The correct query should be
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3197">
+ SELECT *
+ FROM queue
+ WHERE durable = true
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Broker-Keyword-DISTINCT"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum=" [...]
+ To remove duplicates from the results keyword "DISTINCT" can be used. For example, query
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3204">
+ SELECT overflowPolicy
+ FROM queue
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ will return results for all queues, but query
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3208">
+ SELECT DISTINCT overflowPolicy
+ FROM queue
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ will return only several values.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Comparison-Operators"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2 [...]
+ The BETWEEN operator selects values within a given range. The values can be numbers, text, or dates. The BETWEEN
+ operator is inclusive: begin and end values are included.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-BETWEEN-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1 [...]
+ BETWEEN(expression1 AND expression2)
+ BETWEEN(expression1, expression2)
+ BETWEEN expression1 AND expression2
+ BETWEEN expression1, expression2
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-BETWEEN-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before. [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e3233"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression1</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Lower threshold</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression2</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Higher threshold</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-BETWEEN-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum= [...]
+ Find names of the queues having depth in messages between 1000 and 2000
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3274">
+ SELECT
+ name
+ FROM queue
+ WHERE queueDepthMessages BETWEEN (1000, 2000)
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Find certificates expiring between 2024-12-01 and 2024-12-31
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3278">
+ SELECT *
+ FROM certificate
+ WHERE DATE(validUntil) BETWEEN ('2024-12-01' AND '2024-12-31')
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-EQUAL"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum= [...]
+ Equal operator is designated using "=" character. It allows comparison of boolean, datetime,
+ numeric and string values. Both compared values must have same type.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-EQUAL-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum= [...]
+ expression1 = expression2
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-EQUAL-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-befor [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e3298"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optim [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression1</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression to compare to</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression2</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression to compare with</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-EQUAL-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximu [...]
+ Find queue by name
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3339">
+ SELECT *
+ FROM queue
+ WHERE name = 'broadcast.amqp_user1.Public'
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-GREATER-THAN"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-befo [...]
+ Greater than operator is designated using ">" character. It allows comparison of datetime,
+ numeric and string values. Both compared values must have same type.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-GREATER-THAN-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maxim [...]
+ expression1 > expression2
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-GREATER-THAN-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-be [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e3359"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression1</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression to compare to</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression2</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression to compare with</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-GREATER-THAN-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.max [...]
+ Find queues having message depth greater than 1000
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3400">
+ SELECT *
+ FROM queue
+ WHERE queueDepthMessages > 1000
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-GREATER-THAN-OR-EQUAL"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space [...]
+ Greater than or equal operator is designated using ">=" characters. It allows comparison of
+ datetime, numeric and string values. Both compared values must have same type.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-GREATER-THAN-OR-EQUAL-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-bef [...]
+ expression1 >= expression2
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-GREATER-THAN-OR-EQUAL-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e3420"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression1</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression to compare to</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression2</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression to compare with</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-GREATER-THAN-OR-EQUAL-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-b [...]
+ Find queues having message depth greater than or equal to 1000
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3461">
+ SELECT *
+ FROM queue
+ WHERE queueDepthMessages >= 1000
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-IN"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1. [...]
+ The IN operator allows specifying multiple values in a WHERE clause. The IN operator is a
+ shorthand for multiple OR conditions.
+ Alternatively IN operator can be used with a subquery. When a subquery is used, it should
+ return only one value, otherwise an error will be returned.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-IN-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" [...]
+ expression IN (value_1, value_2, ..., value_n)
+ expression IN (SELECT value FROM domain)
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-IN-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maxim [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e3481"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression to compare to</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">value_1 - value_n</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Values to compare with</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-IN-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2e [...]
+ Find bindings having destination queue belonging to the list
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3522">
+ SELECT *
+ FROM binding
+ WHERE destination IN ('broadcast.amqp_user1.Service1', 'broadcast.amqp_user1.Service2', 'broadcast.amqp_user1.Service3')
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Find bindings having destination queue with message depth between 1000 and 2000
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3526">
+ SELECT *
+ FROM binding
+ WHERE destination IN (SELECT name FROM queue WHERE queueDepthMessages BETWEEN (1000, 2000))
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-IS-NULL"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximu [...]
+ The IS NULL operator is used to compare ordinary values with NULL values.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-IS-NULL-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1 [...]
+ expression IS NULL
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-IS-NULL-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before. [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e3546"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression to compare to NULL</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-IS-NULL-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum= [...]
+ Find queues having NULL description
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3576">
+ SELECT *
+ FROM queue
+ WHERE description IS NULL
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LESS-THAN"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maxi [...]
+ Less than operator is designated using "<" character. It allows comparison of datetime, numeric and string values.
+ Both compared values must have same type.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LESS-THAN-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum= [...]
+ expression1 < expression2
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LESS-THAN-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-befor [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e3596"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression1</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression to compare to</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression2</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression to compare with</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LESS-THAN-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximu [...]
+ Find queues having message depth less than 1000
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3637">
+ SELECT *
+ FROM queue
+ WHERE queueDepthMessages < 1000
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LESS-THAN-OR-EQUAL"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-be [...]
+ Less than or equal operator is designated using "<=" characters. It allows comparison of
+ datetime, numeric and string values. Both compared values must have same type.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LESS-THAN-OR-EQUAL-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before [...]
+ expression1 <= expression2
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LESS-THAN-OR-EQUAL-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" sp [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e3657"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression1</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression to compare to</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression2</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression to compare with</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LESS-THAN-OR-EQUAL-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-befo [...]
+ Find queues having message depth less than or equal to 1000
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3698">
+ SELECT *
+ FROM queue
+ WHERE queueDepthMessages <= 1000
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LIKE"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum=" [...]
+ The LIKE operator is used to search for a specified pattern in a string. There are two
+ wildcards often used in conjunction with the LIKE operator: the percent sign "%" represents
+ zero, one, or multiple characters; the question mark "?" represents one, single character.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LIKE-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2e [...]
+ expression LIKE pattern
+ expression LIKE pattern ESCAPE escapeCharacter
+ expression LIKE (pattern)
+ expression LIKE (pattern ESCAPE escapeCharacter)
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LIKE-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.max [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e3718"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression to compare to</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">pattern</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Pattern to compare against</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">escapeCharacter</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Character used to escape percent sign or question mark</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LIKE-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1. [...]
+ Find queues having name starting with a string "broadcast"
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3770">
+ SELECT *
+ FROM queue
+ WHERE name LIKE 'broadcast%'
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Find queues with name containing string "amqp_user1"
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3774">
+ SELECT *
+ FROM queue
+ WHERE name LIKE '%amqp_user1%'
+ </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Conditional-Operators"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1 [...]
+ The CASE statement goes through conditions and returns a value when the first condition is met
+ (like an if-then-else statement). So, once a condition is true, it will stop reading and return
+ the result. If no conditions are true, it returns the value in the ELSE clause.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-CASE-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2e [...]
+ CASE
+ WHEN condition1 THEN result1
+ WHEN condition2 THEN result2
+ WHEN conditionN THEN resultN
+ ELSE result
+ END
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-CASE-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.max [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e3797"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">condition1 - conditionN</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Conditions to estimate</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">result1 - resultN</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Results to return</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-CASE-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1. [...]
+ Group queues into good (< 60% of max depth), bad (60% - 90% of max depth) and critical
+ (> 90% of max depth), count number of queues in each group. Consider queues with unlimited
+ depth being good.
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3838">
+ SELECT
+ COUNT(*),
+ CASE
+ WHEN maximumQueueDepthMessages != -1 AND maximumQueueDepthBytes != -1
+ AND (queueDepthMessages > maximumQueueDepthMessages * 0.9 OR queueDepthBytes > maximumQueueDepthBytes * 0.9)
+ THEN 'critical'
+ WHEN maximumQueueDepthMessages != -1 AND maximumQueueDepthBytes != -1
+ AND queueDepthMessages BETWEEN (maximumQueueDepthMessages * 0.6 AND maximumQueueDepthMessages * 0.9)
+ OR queueDepthBytes BETWEEN (maximumQueueDepthBytes * 0.6 AND maximumQueueDepthBytes * 0.9)
+ THEN 'bad'
+ ELSE 'good'
+ END AS queueState
+ FROM queue
+ GROUP BY queueState
+ </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Logical-Operators"><fo:block/><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The "AND" and "OR" operators are used to filter records based on more than one condition: the "AND"
+ operator displays a record if all the conditions separated by "AND" are TRUE. The "OR" operator
+ displays a record if any of the conditions separated by "OR" is TRUE. The "NOT" operator displays a
+ record if the condition(s) is NOT TRUE.
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Sorting-Results"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximu [...]
+ Default sorting order is ascending, default sorting field is `name` for domains having this field. Results
+ of the following query will be sorted ascending by name:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3848">
+ SELECT *
+ FROM queue
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Few exceptions are following:</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e3854"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">AclRule</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">identity</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Certificate</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">alias</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">ConnectionLimitRule</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">identity</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Results of the following query will be sorted ascending by alias:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="pre [...]
+ SELECT *
+ FROM certificate
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ To apply another sorting rules clause `ORDER BY` should be used. It may contain one of the fields specified
+ in the `SELECT` clause:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3907">
+ SELECT
+ id, name, state
+ FROM queue
+ ORDER BY name
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Alternatively it may contain fields not specified in `SELECT` clause:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3911">
+ SELECT
+ id, name, state
+ FROM queue
+ ORDER BY overflowPolicy
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Instead of using field names or aliases items in the `ORDER BY` clause can also be referenced by ordinal -
+ the numeric value of their order of appearance in the `SELECT` clause. For example, following query
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3915">
+ SELECT
+ name, overflowPolicy
+ FROM queue
+ ORDER BY 2 DESC, 1 ASC
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ will return results sorted in descending order by overflow policy and inside the groups with the same overflow policy
+ name results will be sorted by queue name in ascending order.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Aggregation"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-alig [...]
+ Aggregation is achieved using functions AVG(), COUNT(), MAX(), MIN() and SUM().
+ It's important to remember, that aggregation functions don't consider NULL values. For example, following query
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3924">
+ SELECT COUNT(description)
+ FROM queue
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ will return count of queues having non-null value of a field `description`.
+ To consider NULL values, they should be handled using COALESCE() function or CASE
+ operator:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3928">
+ SELECT COUNT(COALESCE(description, ''))
+ FROM queue
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Alternatively</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id [...]
+ SELECT COUNT(CASE WHEN description IS NULL THEN '' ELSE description END)
+ FROM queue
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Several aggregation functions can be used together in the same query:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment= [...]
+ SELECT
+ COUNT(*),
+ AVG(queueDepthMessages),
+ SUM(queueDepthMessages),
+ SUM(queueDepthBytes),
+ MIN(queueDepthMessages),
+ MAX(queueDepthMessages),
+ MIN(queueDepthBytes),
+ MAX(queueDepthBytes)
+ FROM queue
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Grouping"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align=" [...]
+ Grouping of the aggregated results can be achieved using the `GROUP BY` clause.
+ For example, following query finds count of ACL rules for each user and output them in descending order:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3943">
+ SELECT
+ COUNT(*) AS cnt, identity
+ FROM aclrule
+ GROUP BY identity
+ ORDER BY 1 DESC
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The result of the query:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="mo [...]
+ {
+ "results": [
+ {
+ "cnt": {
+ "amqp_user1": 6,
+ "amqp_user2": 4,
+ "amqp_user3": 4,
+ ... some results ommited ...
+ "amqp_user97": 2,
+ "amqp_user98": 1,
+ "amqp_user99": 1
+ }
+ }
+ ],
+ "total": 1
+ }
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ To filter the grouped result `HAVING` clause can be used:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e3951">
+ SELECT
+ overflowPolicy, COUNT(*)
+ FROM queue
+ GROUP BY overflowPolicy
+ HAVING SUM(queueDepthMessages) > 1000
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Functions"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align= [...]
+ The AVG() function returns the average value of a collection.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-AVG-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em [...]
+ AVG(expression)
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-AVG-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maxi [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e3977"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression result average value of which should be found</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-AVG-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2 [...]
+ Find average amount of bytes used by queues with names starting with "broadcast"
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4007">
+ SELECT
+ AVG(queueDepthBytes)
+ FROM queue
+ WHERE name LIKE 'broadcast%'
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-COUNT"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum= [...]
+ The COUNT() function returns the number of items that matches a specified criterion.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-COUNT-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2 [...]
+ COUNT(expression)
+ COUNT(DISTINCT expression)
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-COUNT-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.ma [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4027"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression result of which should be counted</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-COUNT-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1 [...]
+ Find amount of queues with names starting with "broadcast"
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4057">
+ SELECT
+ COUNT (*)
+ FROM queue
+ WHERE name LIKE 'broadcast%'
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-MAX"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1 [...]
+ The MAX() function returns the maximum value of a collection.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-MAX-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em [...]
+ MAX(expression)
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-MAX-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maxi [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4077"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression result maximal value of which should be found</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-MAX-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2 [...]
+ Find maximal amount of bytes used by queues with names starting with "broadcast"
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4107">
+ SELECT
+ MAX(queueDepthBytes)
+ FROM queue
+ WHERE name LIKE 'broadcast%'
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-MIN"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1 [...]
+ The MIN() function returns the minimum value of a collection.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-MIN-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em [...]
+ MIN(expression)
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-MIN-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maxi [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4127"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression result minimal value of which should be found</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-MIN-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2 [...]
+ Find minimal amount of bytes used by queues with names starting with "broadcast"
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4157">
+ SELECT
+ MIN(queueDepthBytes)
+ FROM queue
+ WHERE name LIKE 'broadcast%'
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-SUM"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1 [...]
+ The SUM() function returns the total sum of a numeric collection.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-SUM-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em [...]
+ SUM(expression)
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-SUM-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maxi [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4177"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Expression result of which should be summed</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-SUM-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2 [...]
+ Find amount of bytes used by queues having names starting with "broadcast"
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4207">
+ SELECT
+ SUM(queueDepthBytes)
+ FROM queue
+ WHERE name LIKE 'broadcast%'
+ </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Datetime-Functions"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0e [...]
+ The CURRENT_TIMESTAMP() function returns current date and time.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-CURRENT_TIMESTAMP-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before. [...]
+ CURRENT_TIMESTAMP()
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-CURRENT_TIMESTAMP-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" spa [...]
+ Find current date and time
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4235">
+ SELECT CURRENT_TIMESTAMP()
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-DATE"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum=" [...]
+ The DATE() function extracts the date part from a datetime expression.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-DATE-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2e [...]
+ DATE(expression)
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-DATE-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.max [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4255"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A valid date/datetime value</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-DATE-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1. [...]
+ Find certificates having validFrom equal to 01. January 2020
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4285">
+ SELECT *
+ FROM certificate
+ WHERE DATE(validFrom) = '2020-01-01'
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Find certificates expiring between 01. January 2020 and 10. January 2020
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4289">
+ SELECT *
+ FROM certificate
+ WHERE DATE(validUntil) BETWEEN ('2020-01-01', '2020-01-10')
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-DATEADD"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximu [...]
+ The DATEADD() function adds a time/date interval to a date and returns the date.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-DATEADD-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1 [...]
+ DATEADD(TIMEUNIT, VALUE, DATE)
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-DATEADD-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before. [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4309"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">TIMEUNIT</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The type of time unit to add.
+ Can be one of the following values:
+ YEAR, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">VALUE</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The value of the time/date interval to add.
+ Both positive and negative values are allowed
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">DATE</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The date to be modified</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-DATEADD-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum= [...]
+ Find certificates expiring in less than 30 days
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4361">
+ SELECT *
+ FROM certificate
+ WHERE DATEADD(DAY, -30, validUntil) < CURRENT_TIMESTAMP()
+ LIMIT 10 OFFSET 0
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-DATEDIFF"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maxim [...]
+ The DATEDIFF() function returns the number of time units between two date values.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-DATEDIFF-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum=" [...]
+ DATEDIFF(TIMEUNIT, DATE1, DATE2)
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-DATEDIFF-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4381"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">TIMEUNIT</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Time unit to calculate difference.
+ Can be one of the following values:
+ YEAR, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">DATE1</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Start date
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">DATE2</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ End date
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-DATEDIFF-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum [...]
+ Find certificate aliases and days until expiry
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4433">
+ SELECT
+ alias,
+ DATEDIFF(DAY, CURRENT_TIMESTAMP(), validUntil) AS days_until_expiry
+ FROM certificate
+ LIMIT 10 OFFSET 0
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-EXTRACT"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximu [...]
+ The EXTRACT() function extracts a part from a given date.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-EXTRACT-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1 [...]
+ EXTRACT(TIMEUNIT FROM DATE)
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-EXTRACT-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before. [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4453"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">TIMEUNIT</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Time unit to extract.
+ Can be one of the following values:
+ YEAR, MONTH, WEEK, DAY, HOUR, MINUTE, SECOND, MILLISECOND
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">DATE</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The date to extract a part from</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-EXTRACT-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum= [...]
+ Find certificates issued in January 2020
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4494">
+ SELECT *
+ FROM certificate
+ WHERE EXTRACT(YEAR FROM validFrom) = 2020
+ AND EXTRACT(MONTH FROM validFrom) = 1
+ LIMIT 10 OFFSET 0
+ </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Null-Functions"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" s [...]
+ The COALESCE() function returns the first non-null value in a list.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-COALESCE-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum=" [...]
+ COALESCE(value_1, value_2, ...., value_n)
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-COALESCE-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4517"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">value_1 - value_n</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The values to test</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-COALESCE-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum [...]
+ Find count of queues having NULL description
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4547">
+ SELECT
+ COUNT(COALESCE(description, 'empty')) AS RESULT
+ FROM queue
+ HAVING COALESCE(description, 'empty') = 'empty'
+ </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Numeric-Functions"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em [...]
+ The ABS() function returns the absolute value of a number.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-ABS-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em [...]
+ ABS(number)
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-ABS-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maxi [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4570"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">number</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A numeric value</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-ABS-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2 [...]
+ Find absolute amount of days after the validFrom date of the certificates
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4600">
+ SELECT
+ ABS(DATEDIFF(DAY, CURRENT_TIMESTAMP(), validFrom))
+ FROM certificate
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-ROUND"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum= [...]
+ The ROUND() function takes a numeric parameter and rounds it to the specified number
+ of decimal places.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-ROUND-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2 [...]
+ ROUND(number, decimals)
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-ROUND-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.ma [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4620"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">number</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The number to be rounded</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">decimals</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The number of decimal places to round to</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-ROUND-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1 [...]
+ Find average queue depth in messages and round result to 2 decimal places
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4661">
+ SELECT
+ ROUND(AVG(queueDepthMessages)) as result
+ FROM queue
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-TRUNC"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum= [...]
+ The TRUNC() function takes a numeric parameter and truncates it to the specified number
+ of decimal places.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-TRUNC-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2 [...]
+ TRUNC(number, decimals)
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-TRUNC-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.ma [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4681"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">number</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The number to be truncated</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">decimals</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The number of decimal places to truncate to</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-TRUNC-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1 [...]
+ Find average queue depth in messages and truncate result to 2 decimal places
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4722">
+ SELECT
+ TRUNC(AVG(queueDepthMessages)) as result
+ FROM queue
+ </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-String-Functions"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" [...]
+ The CONCAT() function takes a variable number of arguments and concatenates them into a single string.
+ It requires a minimum of one input value, otherwise CONCAT will raise an error. CONCAT implicitly
+ converts all arguments to string types before concatenation. The implicit conversion to strings follows
+ the existing rules for data type conversions. If any argument is NULL, CONCAT returns NULL.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-CONCAT-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1. [...]
+ CONCAT(expression_1, expression_2, expression_3, ..., expression_n)
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-CONCAT-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.m [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4745"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">expression_1 - expression_n</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The expressions to add together</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-CONCAT-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum=" [...]
+ Output certificate alias and validity dates using format "alias: validFrom - validUntil"
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4775">
+ SELECT
+ CONCAT(alias, ': ', DATE(validFrom), ' - ', DATE(validUntil)) as validity
+ FROM certificate
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LENGTH"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum [...]
+ The LEN() / LENGTH() function takes a string parameter and returns its length.
+ The implicit conversion to strings follows the existing rules for data
+ type conversions. If any argument is NULL, LEN / LENGTH returns 0.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LENGTH-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1. [...]
+ LEN(string)
+ LENGTH(string)
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LENGTH-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.m [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4795"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">string</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The string to count the length for</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LENGTH-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum=" [...]
+ Find certificate aliases having alias length greater than 10
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4825">
+ SELECT
+ alias
+ FROM certificate
+ WHERE LENGTH(alias) > 10
+ LIMIT 10 OFFSET 0
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LOWER"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum= [...]
+ The LOWER() function takes a string parameter and converts it to lower case. The implicit
+ conversion to strings follows the existing rules for data type conversions.
+ If argument is NULL, LOWER returns NULL.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LOWER-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2 [...]
+ LOWER(string)
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LOWER-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.ma [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4845"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">string</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The string to convert</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LOWER-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1 [...]
+ Filter connections by principal name (case-insensitive)
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4875">
+ SELECT *
+ FROM connection
+ WHERE LOWER(principal) = 'amqp_user1'
+ LIMIT 10 OFFSET 0
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LTRIM"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum= [...]
+ The LTRIM() function removes leading spaces from a string.
+ If argument is NULL, RTRIM returns NULL.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LTRIM-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2 [...]
+ LTRIM(string)
+ LTRIM(string, chars)
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LTRIM-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.ma [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4895"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">string</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The string to remove leading and trailing spaces from</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">chars</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Specific characters to remove</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-LTRIM-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1 [...]
+ Find connection remote addresses
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e4936">
+ SELECT
+ LTRIM(remoteAddress, '/') AS remoteAddress
+ FROM connection
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-POSITION"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maxim [...]
+ The POSITION() function takes a search pattern and a source string as parameters and returns
+ the position of the first occurrence of a pattern in a source string. If the pattern is not
+ found within the source string, this function returns 0.
+ Optionally takes third integer parameter, defining from which position search should be started.
+ Third parameter should be an integer greater than 0. If source string is NULL, returns zero.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-POSITION-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum=" [...]
+ POSITION(pattern IN source)
+ POSITION(pattern IN source, startIndex)
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-POSITION-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e4956"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">pattern</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The pattern to search for in source</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">source</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The original string that will be searched</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">startIndex</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The index from which search will be started</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-POSITION-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum [...]
+ Find queues having string "broadcast" in their names
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5008">
+ SELECT *
+ FROM queue
+ WHERE POSITION('broadcast', name) > 0
+ LIMIT 10 OFFSET 0
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-REPLACE"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximu [...]
+ The REPLACE() function replaces all occurrences of a substring within
+ a string, with a new substring. If source string is NULL, returns NULL.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-REPLACE-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1 [...]
+ REPLACE(source, pattern, replacement)
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-REPLACE-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before. [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e5028"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">source</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The original string</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">pattern</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The substring to be replaced</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">replacement</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The new replacement substring</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-REPLACE-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum= [...]
+ Output certificate issuer names without leading "CN="
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5080">
+ SELECT
+ REPLACE(issuerName, 'CN=', '') AS issuer
+ FROM certificate
+ LIMIT 10 OFFSET 0
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-RTRIM"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum= [...]
+ The RTRIM() function removes trailing spaces from a string.
+ If argument is NULL, RTRIM returns NULL.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-RTRIM-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2 [...]
+ RTRIM(string)
+ RTRIM(string, chars)
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-RTRIM-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.ma [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e5100"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">string</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The string to remove leading and trailing spaces from</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">chars</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Specific characters to remove</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-RTRIM-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1 [...]
+ Find connection remote addresses
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5141">
+ SELECT
+ RTRIM(remoteAddress)
+ FROM connection
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-SUBSTRING"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maxi [...]
+ The SUBSTRING() function takes a source parameter, a start index parameter and optional
+ length parameter. Returns substring of a source string from the start index to the end or
+ using the length parameter. If source string is NULL, return NULL.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-SUBSTRING-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum= [...]
+ SUBSTRING(source, startIndex, length)
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-SUBSTRING-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-befor [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e5161"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">source</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The string to extract from</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">startIndex</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The start position. Can be both a positive or negative number. If it is
+ a positive number, this function extracts from the beginning of the string.
+ If it is a negative number, function extracts from the end of the string
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">length</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The number of characters to extract. If omitted, the whole string will
+ be returned (from the start position). If zero or negative, an empty
+ string is returned
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-SUBSTRING-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximu [...]
+ Find queue names removing from name part before the `.` character
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5213">
+ SELECT
+ SUBSTRING(name, POSITION('.', name) + 1, LEN(name) - POSITION('.', name))
+ FROM queue
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-TRIM"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum=" [...]
+ The TRIM() function removes both leading and trailing spaces from a string.
+ If argument is NULL, TRIM returns NULL.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-TRIM-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2e [...]
+ TRIM(string)
+ TRIM(string, chars)
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-TRIM-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.max [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e5233"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">string</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The string to remove leading and trailing spaces from</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">chars</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Specific characters to remove</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-TRIM-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1. [...]
+ Find connections remote addresses removing `/` characters from both sides
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5274">
+ SELECT
+ TRIM(remoteAddress, '/')
+ FROM connection
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-UPPER"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum= [...]
+ The UPPER() function takes a string parameter and converts it to upper case. The implicit
+ conversion to strings follows the existing rules for data type conversions. If argument is NULL,
+ UPPER returns NULL.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-UPPER-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2 [...]
+ UPPER(string)
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-UPPER-Parameter-Values"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.ma [...]
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e5294"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum=" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">string</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The string to convert</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-UPPER-Examples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1 [...]
+ Filter connections by principal name (case-insensitive)
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5324">
+ SELECT *
+ FROM connection
+ WHERE UPPER(principal) = 'AMQP_USER1'
+ LIMIT 10 OFFSET 0
+ </fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Set-Operations"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimu [...]
+ UNION, MINUS and INTERSECT set operations are supported.
+
+ The UNION operator is used to combine the result-set of two or more SELECT statements. Every SELECT statement within
+ UNION must have the same number of columns. The UNION operator selects distinct values by default.
+ To keep duplicates, UNION ALL should be used.
+
+ For example, following query return certificate aliases along with the user names:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5331">
+ SELECT UPPER(alias)
+ FROM certificate
+ UNION
+ SELECT UPPER(name)
+ FROM user
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The MINUS operator is used to remove the results of right SELECT statement from the results of left SELECT statement.
+ Every SELECT statement within MINUS must have the same number of columns. The MINUS operator selects distinct values by default.
+ To eliminate duplicates, MINUS ALL should be used.
+
+ For example, following query finds queue names, not specified as binding destinations:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5335">
+ SELECT name
+ FROM queue
+ MINUS
+ SELECT destination
+ FROM binding
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The INTERSECT operation is used to retain the results of right SELECT statement present in the results of left SELECT statement.
+ Every SELECT statement within INTERSECT must have the same number of columns. The INTERSECT operator selects distinct values by default.
+ to eliminate duplicates, INTERSECT ALL should be used.
+
+ For example, following query finds certificate aliases similar with the user names:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5339">
+ SELECT UPPER(alias)
+ FROM certificate
+ INTERSECT
+ SELECT UPPER(name)
+ FROM user
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Subqueries"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align [...]
+ When executing subquery parent query domain mat be passed into the subquery using alias.
+ E.g. this query
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5346">
+ SELECT
+ id,
+ name,
+ (SELECT name FROM connection WHERE SUBSTRING(name, 1, POSITION(']' IN name)) = '[' + SUBSTRING(c.name, 1, POSITION('|' IN c.name) - 1) + ']') as connection,
+ (SELECT id FROM connection WHERE SUBSTRING(name, 1, POSITION(']' IN name)) = '[' + SUBSTRING(c.name, 1, POSITION('|' IN c.name) - 1) + ']') as connectionId,
+ (SELECT name FROM session WHERE id = c.session.id) as session
+ FROM consumer c
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ returns following result:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5350">
+ {
+ "results": [
+ {
+ "id": "7a4d7a86-652b-4112-b535-61272b936b57",
+ "name": "1|1|qpid-jms:receiver:ID:6bd18833-3c96-4936-b9ee-9dec5f408b5c:1:1:1:broadcast.amqp_user1.public",
+ "connection": "[1] 127.0.0.1:39134",
+ "connectionId": "afbd0480-43b1-4b39-bc00-260c077095f3",
+ "session": "1"
+ }
+ ],
+ "total": 1
+ }
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Query
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5354">
+ SELECT
+ name,
+ destination,
+ (SELECT id FROM queue WHERE name = b.destination) AS destinationId,
+ exchange,
+ (SELECT id FROM exchange WHERE name = b.exchange) AS exchangeId
+ FROM binding b
+ WHERE name = 'broadcast.amqp_user1.xxx.#'
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ returns following result:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5358">
+ {
+ "results": [
+ {
+ "name": "broadcast.amqp_user1.xxx.#",
+ "destination": "broadcast.amqp_user1.xxx",
+ "destinationId": "d5ce9e78-8558-40db-8690-15abf69ab255",
+ "exchange": "broadcast",
+ "exchangeId": "470273aa-7243-4cb7-80ec-13e698c36158"
+ },
+ {
+ "name": "broadcast.amqp_user1.xxx.#",
+ "destination": "broadcast.amqp_user2.xxx",
+ "destinationId": "88357d15-a590-4ccf-aee8-2d5cda77752e",
+ "exchange": "broadcast",
+ "exchangeId": "470273aa-7243-4cb7-80ec-13e698c36158"
+ },
+ {
+ "name": "broadcast.amqp_user1.xxx.#",
+ "destination": "broadcast.amqp_user3.xxx",
+ "destinationId": "c8200f89-2587-4b0c-a8f6-120cda975d03",
+ "exchange": "broadcast",
+ "exchangeId": "470273aa-7243-4cb7-80ec-13e698c36158"
+ }
+ ],
+ "total": 3
+ }
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Query
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5362">
+ SELECT
+ alias,
+ (SELECT COUNT(id) FROM queue WHERE POSITION(UPPER(c.alias) IN name) > 0) AS queueCount
+ FROM certificate c
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ returns following result:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5366">
+ {
+ "results": [
+ {
+ "alias": "xxx",
+ "queueCount": 5
+ },
+ {
+ "alias": "xxy",
+ "queueCount": 5
+ },
+ {
+ "alias": "xxz",
+ "queueCount": 7
+ }
+ ],
+ "total": 3
+ }
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-Query-Engine-Performance-Tips"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text [...]
+ Try to select entity fields by names instead of using an asterix. For example, this query
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5373">
+ SELECT
+ id, name, state, overflowPolicy, expiryPolicy
+ FROM queue
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ will be executed faster than this one:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e5377">
+ SELECT *
+ FROM queue
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Try to use `LIMIT` and `OFFSET` clauses where applicable to reduce the response JSON size:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve [...]
+ SELECT
+ id, name, state, overflowPolicy, expiryPolicy
+ FROM queue
+ LIMIT 10 OFFSET 0
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-REST-API-CORS"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="st [...]
+ to allow web management consoles other than the one embedded in the
+ broker to use the REST API. This feature must be enabled by configuring
+ the CORS Allow Origins and related attributes on the
+ <fo:basic-link internal-destination="Java-Broker-Management-Managing-Plugin-HTTP"><fo:inline>Section 7.17, “HTTP Plugin”</fo:inline></fo:basic-link>
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Metrics"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent= [...]
+ <fo:basic-link external-destination="url(https://prometheus.io/)"><fo:inline>Prometheus format</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://prometheus.io/)">https://prometheus.io/</fo:basic-link>]</fo:inline>.
+ The metrics endpoint is intended for scraping by Prometheus server to collect the Broker telemetry.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Prometheus metric endpoints are mapped under /metrics path and /metrics/*.
+ The latter allows to get the Virtual Host statistics by specify the path to the virtual host as
+ /metrics/<virtual host node name>/< virtual host name>.
+ The former allow to get all Broker statistics or Virtual Host statistics when called with HOST header
+ set to the Virtual Host name</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The metrics endpoints allow anonymous access by default. If required, an authentication can be enabled for the
+ metrics endpoints by setting http management context variable
+ <fo:inline font-family="monospace">qpid.httpManagement.enableMetricContentAuthentication</fo:inline> to <fo:inline font-family="monospace">true</fo:inline>.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Broker JVM statistics are disabled by default. The metrics endpoints can be called with parameter
+ <fo:inline font-family="monospace">includeDisabled</fo:inline> set to <fo:inline font-family="monospace">true</fo:inline> to include JVM broker metrics into endpoint
+ output. If required, the JVM metrics could be enabled by setting context variable
+ <fo:inline font-family="monospace">qpid.metrics.includeDisabled</fo:inline> to <fo:inline font-family="monospace">true</fo:inline>.
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e5423"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For more information about Prometheus, check out the
+ <fo:basic-link external-destination="url(https://prometheus.io/docs/introduction/overview/)"><fo:inline>prometheus documentation</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://prometheus.io/docs/introduction/overview/)">https://prometheus.io/docs/introduction/overview/</fo:basic-link>]</fo:inline>.
+ </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Channel-AMQP-Intrinstic"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" tex [...]
+ and Bindings.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The exact details of how to utilise this commands depends of the client. See the
+ documentation accompanying the client for details.</fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="ser [...]
+ entity management are the same regardless of entity type. For this reason, this section begins
+ with a general description that applies to all.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Since not all channels support the management of all entity type, this section commences
+ with a table showing which entity type is supported by each channel.</fo:block><fo:block id="Java-Broker-Management-Managing-Entities-General"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0e [...]
+ type.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5452"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5453"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-i [...]
+ called the System Context. It has no parent.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5456"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Entities have one or more attributes. For example a <fo:inline font-family="monospace">name</fo:inline>, an
+ <fo:inline font-family="monospace">id</fo:inline> or a <fo:inline font-family="monospace">maximumQueueDepth</fo:inline></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5467"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Entities can be durable or non-dura [...]
+ Non-durable entities will not.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5470"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Attributes may have a default value. If an attribute value is not specified the
+ default value is used.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5473"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Attributes values can be expressed as a simple value (e.g. <fo:inline font-family="monospace">myName</fo:inline>
+ or <fo:inline font-family="monospace">1234</fo:inline>), in terms of context variables
+ (e.g.<fo:inline font-family="monospace">${foo}</fo:inline> or <fo:inline font-family="monospace">/data/${foo}/</fo:inline>).</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5488"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Each entity has zero or more c [...]
+ It is read only and is populated with all Java System Properties. Thus it can be
+ influenced from the Broker's external environment. See <fo:basic-link internal-destination="Java-Broker-Appendix-Environment-Variables-Qpid-Opts"><fo:inline>QPID_OPTS </fo:inline></fo:basic-link>
+ environment variable.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5497"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>When resolving an attribute's value, if the value contains a variable
+ (e.g.<fo:inline font-family="monospace">${foo}</fo:inline>), the variable is first resolved using the entity's own
+ context variables. If the entity has no definition for the context variable, the
+ entity's parent is tried, then its grandparent and so forth, all the way until the
+ SystemContext is reached.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5503"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Some entities support state and have a lifecycle.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">What follows now is a section dedicated to each entity type. For each entity type key
+ features are described along with the entities key attributes, key context variables, details
+ of the entities lifecycle and any other operations.</fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Broker"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-befor [...]
+ composed of a number of other entities that collaborate to provide message broker
+ facilities.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Broker can only be managed via the HTTP management channel.</fo:block><fo:block id="Java-Broker-Management-Managing-Broker-Attributes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5525"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5526"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-i [...]
+ environments that have many.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5531"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Shutdown timeout</fo:inline>. Broker shutdown timeout in seconds (disabled if 0). If clean
+ shutdown takes more than shutdown timeout, broker exits immediately.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5536"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Confidential configuration encryption provider</fo:inline [...]
+ provider used to encrypt passwords and other secrets within the configuration. See <fo:basic-link internal-destination="Java-Broker-Security-Configuration-Encryption"><fo:inline>Section 8.5, “Configuration Encryption”</fo:inline></fo:basic-link>.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Broker-Context"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-in [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5549"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5550"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-i [...]
+ that may be utilised on a filesystem hosting a virtualhost's message store before
+ producer flow control is automatically imposed.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This defaults to 90%.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="Java-Broker-Management-Managing-Broker-Context-BrokerDefaultSupportedProtocolVersionReply"><fo:list-item-label end-indent="label-end()"><fo:block> [...]
+ during protocol negotiation. If set, the Broker will offer this AMQP version to a client
+ requesting an AMQP protocol that is not supported by the Broker. If not set, the Broker
+ offers the highest protocol version it supports. </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5578"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
+ <fo:inline font-style="italic">qpid.broker_msg_auth</fo:inline> If set true, the Broker ensures that the user
+ id of each received message matches the user id of the producing connection. If this
+ check fails, the message is returned to the producer's connection with a 403 (Access
+ Refused) error code.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This value can be overridden for each Virtual Host by setting the context value on the Virtual Host or
+ Virtual Host Node.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Defaults to false.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Broker-Children"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-i [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5594"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5595"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-i [...]
+ <fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhost-Nodes"><fo:inline>Virtualhost
+ nodes</fo:inline></fo:basic-link>
+ </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5601"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
+ <fo:basic-link internal-destination="Java-Broker-Management-Managing-Ports"><fo:inline>Ports</fo:inline></fo:basic-link>
+ </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5607"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Authentication Providers</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-b [...]
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Broker-Lifecycle"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start- [...]
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Virtualhost-Nodes-Attributes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="s [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5668"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5669"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-i [...]
+ not specify a virtualhost name will be connected to the virtualhost beneath this node.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5679"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Store Path or JDBC URL.</fo:inline> Ref [...]
+ configuration of the virtualhost.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5684"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Role</fo:inline> (HA only). The role that this node is currently playing in
+ the group. <fo:list-block provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5689"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5690"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>MASTER - Virtualhost node is a master.</fo:block></fo:block></fo:list-item-body></fo:list-ite [...]
+ more nodes to join in order that an election may be held.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5699"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>DETACHED - Virtualhost node is disconnected from the group.</fo:block></fo:block></fo:list-it [...]
+ occurs. The attribute can be used to make it more likely for a node to be elected than
+ other nodes, or disallow the node from never being elected at all. See <fo:basic-link internal-destination="Java-Broker-High-Availability-Behaviour-NodePriority"><fo:inline>Section 10.4.3, “Node Priority”</fo:inline></fo:basic-link></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5708"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-it [...]
+ Allows the number of nodes required to hold an election to be reduced in order that
+ service can be restore when less than quorum nodes are present. See <fo:basic-link internal-destination="Java-Broker-High-Availability-Behaviour-MinimumNumberOfNodes"><fo:inline>Section 10.4.4, “Required Minimum Number Of Nodes”</fo:inline></fo:basic-link></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5714"><fo:list-item-label end-indent="label-end()"><fo:block> [...]
+ node in a two node group to operate solo. See <fo:basic-link internal-destination="Java-Broker-High-Availability-Behaviour-DesignatedPrimary"><fo:inline>Section 10.4.5, “Allow to Operate Solo”</fo:inline></fo:basic-link></fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Virtualhost-Node-Children"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="star [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5726"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5727"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-i [...]
+ <fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhosts"><fo:inline>Virtualhost</fo:inline></fo:basic-link>
+ </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5733"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
+ <fo:basic-link internal-destination="Java-Broker-Management-Managing-RemoteReplicationNodes"><fo:inline>Remote
+ Replication Nodes</fo:inline></fo:basic-link>
+ </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Virtualhost-Node-Lifecycle"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="sta [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5745"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5746"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-i [...]
+ messaging connections to the virtualhost and prevents new ones. Any inflight
+ transactions are rolled back. Non durable queues and exchanges are lost. Transient
+ messages or persistent messages on non-durable queues are lost.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When HA is in use, stopping the virtualhost node stops the virtualhost node from
+ participating in the group. If the node was in the master role, the remaining nodes will
+ try to conduct an election and elect a new master. If the node was in the replica role,
+ the node will cease to keep up to date with later transactions. A stopped node does not
+ vote in elections. Other nodes in the group will report the stopped node as
+ unreachable.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5753"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Start</fo:inline>. Activates the virtualhost node.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:li [...]
+ contained within it. All exchanges and queues, any the messages contained within it are
+ removed. In the HA case, deleting the virtualhost node causes it be removed permanently
+ from the group.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Virtualhosts"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" [...]
+ responsible for the storage of message data.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Virtualhosts can only be managed by the HTTP management channel.</fo:block><fo:block id="Java-Broker-Management-Managing-Virtualhosts-Types"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-fami [...]
+ node <fo:footnote><fo:inline><fo:inline font-family="serif,Symbol,ZapfDingbats" font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">3</fo:inline></fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" end-indent="0pt" text-indent="0pt" hyphenate="true" wrap-option="wrap" linefeed-treatment="treat-as-space"><fo:block><fo:inline font-family= [...]
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Virtualhost-Context"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" sta [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5810"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5811"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-i [...]
+ feature.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Virtualhost-Attributes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5825"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5826"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-i [...]
+ refer to when forming a connection to the Broker.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5831"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Store Path/JDBC URL</fo:inline>. Refers the file system location or
+ database URL used to store the message data.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5836"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Store overflow/underflow</fo:inline>. Some virtualhosts have the ability to
+ limit the of the cumulative size of all the messages contained within the store. This
+ feature is described in detail <fo:basic-link internal-destination="Java-Broker-Runtime-Disk-Space-Management"><fo:inline>Section 9.2, “Disk Space Management”</fo:inline></fo:basic-link>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5843"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="bod [...]
+ used to perform messaging with connected clients. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Defaults to 64 or double the maximum number of available processors, whichever
+ is the larger.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5850"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Number of selectors</fo:inline>. Number of worker threads
+ used from the thread pool to dispatch I/O activity to the worker threads.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Defaults to one eighth of the thread pool size. Minimum 1.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5857"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:li [...]
+ transactions. See <fo:basic-link internal-destination="Java-Broker-Runtime-Transaction-Timeout"><fo:inline>Section 9.3, “Transaction Timeout”</fo:inline></fo:basic-link></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5863"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:blo [...]
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Virtualhost-Children"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" st [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5875"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5876"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-i [...]
+ <fo:basic-link internal-destination="Java-Broker-Management-Managing-Exchanges"><fo:inline>Exchange</fo:inline></fo:basic-link>
+ </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5882"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
+ <fo:basic-link internal-destination="Java-Broker-Management-Managing-Queues"><fo:inline>Queue</fo:inline></fo:basic-link>
+ </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Virtualhost-Lifecycle"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" s [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5894"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5895"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-i [...]
+ connections to the virtualhost and prevents new ones. Any inflight transactions are
+ rolled back. Non durable queues and non durable exchanges are lost. Transient messages
+ or persistent messages on non-durable queues are lost.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5900"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Start</fo:inline>. Activates the virtualhost.</fo:block></fo:block></fo [...]
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-RemoteReplicationNodes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-ali [...]
+ in the group. Remote replication nodes are not created directly. Instead the system
+ automatically creates a remote replication node for every node in the group. It serves to
+ provide a view of the whole group from every node in the system.</fo:block><fo:block id="Java-Broker-Management-Managing-RemoteReplicationNodes-Attributes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before. [...]
+ remote virtualhost node</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5925"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Role</fo:inline>. Indicates the role that the remote node is playing in the
+ group at this moment. <fo:list-block provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5930"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5931"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">MASTER</fo:inline> - Remote node is a master.</fo:b [...]
+ This remote note may be down, or an network problem may prevent it from being
+ contacted.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5947"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Join time</fo:inline>. Time when first contact was established with this
+ node.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5952"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Last known transaction id</fo:inline>. Last transaction id reported
+ processed by node. This is an internal transaction counter and does not relate to any
+ value available to the messaging clients. This value can only be used to determine the
+ node is up to date relative to others in the group.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-RemoteReplicationNodes-Children"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" kee [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5967"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5968"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-i [...]
+ the group. This operation should be used when the virtualhost node cannot be deleted
+ from its own Broker, for instance, if a Broker has been destroyed by machine
+ failure.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-RemoteReplication-Nodes-Operations"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-al [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e5979"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5980"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-i [...]
+ anther node in the group. The transfer sequence is as follows. <fo:list-block provisional-label-separation="0.2em" provisional-distance-between-starts="1.2em" id="d0e5985"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5986"><fo:list-item-label end-indent="label-end()"><fo:block>1.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Group waits until the proposed master is [...]
+ clients from the old master, and in-flight transactions are rolled back. Messaging
+ clients reconnect to the new master.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e5998"><fo:list-item-label end-indent="label-end()"><fo:block>5.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>The old master will rejoin as a replica.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Exchanges"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" st [...]
+ HTTP or AMQP channels.</fo:block><fo:block id="Java-Broker-Management-Managing-Exchanges-Types"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="sta [...]
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Exchanges-Attributes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" st [...]
+ producing messages.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6039"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Type of the exchange</fo:inline>. Can be either <fo:basic-link internal-destination="Java-Broker-Concepts- [...]
+ requested by the producer, may be used if a message arriving at this exchange cannot be routed to at least
+ one queue.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6071"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">unroutableMessageBehaviour</fo:inline>. (AMQP 1.0 only) Default behaviour to apply when a
+ message is not routed to any queues.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Exchanges-Lifecycle"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-colu [...]
+ hold/buffer messages for later delivery to consumer applications.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Queues can be managed using the HTTP or AMQP channels.</fo:block><fo:block id="Java-Broker-Management-Managing-Queues-Types"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font [...]
+ delivery order depends on the value of the sorting key property in each message</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6112"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Concepts-Queues-Types-LVQ">< [...]
+ Queue</fo:inline></fo:basic-link> - also known as an LVQ, retains only the last (newest) message received
+ with a given LVQ key value</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Queues-Attributes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" spac [...]
+ name when they wish to subscribe to queue to receive messages from it.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6127"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Type of the queue</fo:inline>. Can be either <fo:basic- [...]
+ non durable queue do not survive a restart even if they are marked persistent.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6149"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Maximum/Minimum TTL</fo:inline>. Defines a maxi [...]
+ arriving with TTL larger than the maximum (including those with no TTL at all, which are considered to
+ have a TTL of infinity) will be overridden by the maximum. Similarly, messages arriving with TTL less
+ than the minimum, will be overridden by the minimum.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Changing these values affects only new arrivals, existing messages already on the
+ queue are not affected.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6156"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Message persistent override</fo:inline>. Allow message persistent settings
+ of incoming messages to be overridden. Changing this value affects only new arrivals,
+ existing messages on the queue are not affected. </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6161"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Overflow policy</fo:inline>. Queues have the ability to limit the of the
+ cumulative size of all the messages contained within the store. This feature is
+ described in detail <fo:basic-link internal-destination="Java-Broker-Concepts-Queue-OverflowPolicy"><fo:inline>Section 4.7.5, “Controlling Queue Size”</fo:inline></fo:basic-link>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6168"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start( [...]
+ variety of conditions: total queue depth exceeded a number or size, message age exceeded
+ a threshold, message size exceeded a threshold. These thresholds are soft. See <fo:basic-link internal-destination="Java-Broker-Appendix-Queue-Alerts"><fo:inline>Appendix E, <fo:inline font-style="italic">Queue Alerts</fo:inline></fo:inline></fo:basic-link></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6174"><fo:list-item-label end-indent="label-end()"><fo:block [...]
+ number of delivery attempts exceeds the <fo:inline font-style="italic">maximumDeliveryAttempts</fo:inline> configured on this
+ queue. Messages are also routed to this destination if this queue is deleted.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Queue-Lifecycle"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weig [...]
+ in the model indicates that an application is currently connected to the queue <fo:inline font-style="italic">at this moment</fo:inline>.
+ </fo:block><fo:block id="Java-Broker-Management-Managing-Consumers-Context"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt" [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6216"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6217"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-i [...]
+ time that a consumer may remain suspended before the the Broker begins to
+ produce <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-SUB-1003"><fo:inline>SUB-1003</fo:inline></fo:basic-link>
+ operational log messages.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Producers"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" st [...]
+ in the model indicates that an application is currently connected to the exchange or to the queue <fo:inline font-style="italic">at this moment</fo:inline>.
+ Producers are created when using AMQP 1.0 protocol.
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Ports"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"> [...]
+ protocol. This can be an AMQP protocol for messaging or HTTP for management.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A port is defined to have one or more transports. A transport can either be plain (TCP) or
+ SSL (TLS). When SSL is in use, the port can be configured to accept or require client
+ authentication.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Any number of ports defined to use AMQP or HTTP protocols can be defined.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Ports can only be managed by the HTTP management channel.</fo:block><fo:block id="Java-Broker-Management-Managing-Ports-Context"><fo:block><fo:block><fo:block keep-together.within-colu [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6252"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6253"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo: [...]
+ of concurrent connections supported by an AMQP port.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6258"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">qpid.port.amqp.acceptBacklog</fo:inline>. The backlog is the maximum
+ number of pending connections that may be queued by the AMQP port. Once the queue
+ is full, further connections will be refused. This is a request to the operating system
+ which may or may not be respected. The operating system itself may impose a ceiling.
+ <fo:footnote><fo:inline><fo:inline font-family="serif,Symbol,ZapfDingbats" font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">4</fo:inline></fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" end-indent="0pt" text-indent="0pt" hyphenate="true" wrap-option="wrap" linefeed-treatment="treat-as-space"><fo:block><fo:inline font- [...]
+ setting <fo:inline font-family="monospace">net.core.somaxconn</fo:inline>.</fo:block></fo:footnote-body></fo:footnote></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6272"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style= [...]
+ which Broker and client will exchange heartbeat messages (in seconds). Clients may negotiate a
+ different heartbeat frequency or disable it altogether. For AMQP 1.0 this setting controls the
+ incoming idle timeout only. A value of 0 disables.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Ports-Attributes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" st [...]
+ single network interface.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6298"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Authentication Provider</fo:inline>. The <fo:basic-link internal-destination="Java-Broke [...]
+ provider</fo:inline></fo:basic-link> used to authenticate incoming connections.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6306"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Protocol(s)</fo:inline>. A lis [...]
+ the port. For messaging choose one or more AMQP protocols. For management
+ choose HTTP.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6311"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Transports</fo:inline>. A list of transports supported by the
+ port. For messaging or HTTP management chose TCP, SSL or both.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6316"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Enabled/Disabled Cipher Suites</fo:inline>. Allows cipher
+ suites supported by the JVM to be enabled or disabled. The cipher
+ suite names are those understood by the JVM.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">SSLv3 is disabled by default.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6323"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline fo [...]
+ containing the Broker's private key. Required if SSL is in use.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6331"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Want/Need Client Auth</fo:inline>. Client authenti [...]
+ either accepted if offered (want), or demanded (need). When Client
+ Certificate Authentication is in use a Truststore must be configured. When
+ using Client Certificate Authentication it may be desirable to use the <fo:basic-link internal-destination="Java-Broker-Security-External-Provider"><fo:inline>External Authentication
+ Provider</fo:inline></fo:basic-link>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6339"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Truststore</fo:inline>. <fo:basic-link internal-destination="Java-Broker [...]
+ contain an issuer certificate or the public keys of the clients themselves
+ if peers only is desired.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6347"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Maximum Open Connections</fo:inline>. AMQP ports only. Limits
+ the number of connections that may be open at any one time.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6352"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Thread pool size</fo:inline>. AMQP ports only. Number of [...]
+ used to process AMQP connections during connection negotiation phase.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Defaults to 8.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6359"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-i [...]
+ used from the thread pool to dispatch I/O activity to the worker threads.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Defaults to one eighth of the thread pool size. Minimum 1.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Ports-Children"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6371"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6372"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo: [...]
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Ports-Lifecycle"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" sta [...]
+ numbers do not become effective until the Broker is restarted.</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Authentication-Providers"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="alway [...]
+ <fo:basic-link internal-destination="Java-Broker-Concepts-Authentication-Providers"><fo:inline>Authentication
+ Providers</fo:inline></fo:basic-link> are used by <fo:basic-link internal-destination="Java-Broker-Concepts-Ports"><fo:inline>Ports</fo:inline></fo:basic-link> to
+ authenticate connections.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">See <fo:basic-link internal-destination="Java-Broker-Security-Authentication-Providers"><fo:inline>Section 8.1, “Authentication Providers”</fo:inline></fo:basic-link></fo:block><fo:block id="Java-Broker-Management-Managing-Authentication-Providers-Types"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family=" [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6404"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6405"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo: [...]
+ Broker</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6410"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Security-External-Provider"><fo:inline>External</fo:inline></fo:basic-link>: delegates to ext [...]
+ Certificate Authentication</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6415"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Security-Kerberos-Provider"><fo:inline>Kerberos</fo:inline></fo:basic [...]
+ GSS-API.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6420"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Security-LDAP-Provider"><fo:inline>SimpleLDAP</fo:inline></fo:basic-link>: authenticate [...]
+ server.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6425"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Security-OAuth2-Provider"><fo:inline>OAuth2</fo:inline></fo:basic-link>: authenticate users [...]
+ Server.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6430"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Security-ScramSha-Providers"><fo:inline>ScramSha</fo:inline></fo:basic-link>: authenticate u [...]
+ local database</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6435"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Security-Plain-Provider"><fo:inline>Plain</fo:inline></fo:basic-link>: authentica [...]
+ database.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6440"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Security-PlainPasswordFile-Provider"><fo:inline>PlainPasswordFile</fo:inline></fo: [...]
+ in plain text in a local file.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6445"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Security-MD5-Provider"><fo:inline>MD5</fo:inline></fo:basic-link> [...]
+ stored in a local database.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6450"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:basic-link internal-destination="Java-Broker-Security-Base64MD5PasswordFile-Provider"><fo:inline>Base64MD5Passwor [...]
+ stored encoded in a local file.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The last five providers offer user management facilities too, that is, users can
+ be created, deleted and passwords reset.</fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Authentication-Providers-Attributes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6463"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6464"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo: [...]
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Other attributes are provider specific.</fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Authentication-Providers-Children"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" fon [...]
+ the Broker is restarted.</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Keystores"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum= [...]
+ order to use SSL for messaging and/or management.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Broker supports a number of different keystore types. These are described
+ below.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The key material may be held by the Broker itself (held inline within the configuration)
+ or you may use references to files on the server's file system. Whichever mechanism is
+ chosen it is imperative to ensure that private key material remains confidential.</fo:block><fo:block id="Java-Broker-Management-Managing-Keystores-Types"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-befo [...]
+ keystore format undertood by Java and Java tools such as <fo:basic-link external-destination="url(http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/keytool.html)"><fo:inline>keytool</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/keytool.html)">http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/keytool.html</fo:basic-link>]</fo:inlin [...]
+ certificate is to be used by specifying an alias. If no alias is specified
+ the first certificate found in the keystore will be used.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6514"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Non Java Key Store</fo:inline>. A Non Java Keystore accepts key
+ material in PEM and DER file formats. With this store type it is necessary
+ to provide the private key, which must not be protected by password,
+ certificate and optionally a file containing intermediate
+ certificates.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6519"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Auto Generated Self Signed</fo:inline> has the ability to
+ generate a self signed certificate and produce a truststore
+ suitable for use by an application using the Apache Qpid JMS and Apache Qpid JMS AMQP 0-x clients.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The use of self signed certficates is not recommended for production
+ use.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Keystores-Attributes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6532"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6533"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo: [...]
+ keystore.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following attributes apply to <fo:inline font-style="italic">File Key Stores</fo:inline> only.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6546"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6547"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo: [...]
+ file</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6552"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Keystore password</fo:inline>. Password used to secure the keystore<fo:block space-before.minimum="0.8em" spa [...]
+ itself. This is a restriction of the Broker implementation. If
+ using the <fo:basic-link external-destination="url(http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/keytool.html)"><fo:inline>keytool</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/keytool.html)">http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/keytool.html</fo:basic-link>]</fo:inline> utility, note
+ that this means the argument to the <fo:inline font-family="monospace">-keypass</fo:inline> option
+ must match the <fo:inline font-family="monospace">-storepass</fo:inline> option. </fo:block></fo:block></fo:block></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6572"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style= [...]
+ which certificate the broker should use if the keystore contains multiple
+ entries.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6577"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Manager Factory Algorithm</fo:inline>.In keystores the have more
+ than one certificate, the alias identifies the certificate to be
+ used.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6582"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Key Store Type</fo:inline>. Type of Keystore.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:li [...]
+ an SSL handshake will be used to select the most appropriate certificate
+ by matching an indicated hostname with the certificate hostname specified in subject or
+ subject alternatives as CN or DC.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following attributes apply to <fo:inline font-style="italic">Non Java Key Stores</fo:inline>
+ only.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6600"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6601"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo: [...]
+ This file must not be password protected.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6606"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Certificate</fo:inline>. The cerificate in DER or PEM
+ format.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6611"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Intermediates Certificates </fo:inline>. Optional. Intermediate
+ cerificates in PEM or DER format.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following attributes apply to <fo:inline font-style="italic">Auto Generated Self Signed</fo:inline>
+ only.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6624"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6625"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo: [...]
+ self-signed certificate.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6630"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Signature Algorithm </fo:inline>. Optional. The name of signature
+ algorithm.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6635"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Key Length</fo:inline>. Optional. Length of the key in
+ bits.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6640"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Duration</fo:inline>. Optional. Validility period in
+ months.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Keystores-Children"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" [...]
+ <fo:basic-link internal-destination="Java-Broker-Concepts-Truststores"><fo:inline>Truststores</fo:inline></fo:basic-link>
+ have a number of roles within
+ the Broker.
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6665"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6666"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list [...]
+ <fo:basic-link external-destination="url(https://en.wikipedia.org/wiki/Key_server_(cryptographic))"><fo:inline>
+ Key Server
+ </fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://en.wikipedia.org/wiki/Key_server_(cryptographic))">https://en.wikipedia.org/wiki/Key_server_(cryptographic)</fo:basic-link>]</fo:inline>
+ so that publishing applications have convenient access to recipient's public keys.
+ </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6675"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Some authentication providers also use a truststore when connecting to authentication systems that
+ are protected by a private issuer
+ SSL certificate.
+ </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block><fo:block id="Java-Broker-Management-Managing-Truststores-Types"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0p [...]
+ truststore format understood by Java and Java tools such as <fo:basic-link external-destination="url(http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/keytool.html)"><fo:inline>keytool</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/keytool.html)">http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/keytool.html</fo:basic-link>]</fo:in [...]
+ material in PEM and DER file formats. Either a path to the certificate on the server can be specified using the file:// protocol or the certificate can be uploaded with the data:// protocol</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6698"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body sta [...]
+ material in PEM and DER file formats. Contrary to the Non Java Trust Store this store allows the user to add multiple certificates and stores them in the broker configuration.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6703"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="bod [...]
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Truststores-Attributes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="sta [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6714"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6715"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo: [...]
+ truststore.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6720"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Exposed as Message Source</fo:inline>. If enabled, the Broker
+ will distribute certificates contained within the truststore to clients.
+ Used by the end to end message encryption feature.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6725"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Trust Anchor Validity Enforced</fo:inline>. If enabled, authent [...]
+ fail if the trust anchor's validity date has not yet been reached or already expired.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Revocation attributes.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6735"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6736"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo: [...]
+ client tries to connect.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6741"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Only End Entity</fo:inline>. If enabled, check only the revocation status of
+ end-entity certificates.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6746"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Prefer CRLs</fo:inline>. If enabled, prefer CRL (specified in certificate
+ distribution points) to OCSP, if disabled prefer OCSP to CRL.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6751"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">No Fallback</fo:inline>. If enabled, disable fallbac [...]
+ <fo:inline font-style="italic">Prefer CRLs</fo:inline> set to true, disable fallback to OCSP,
+ otherwise disable fallback to CRL in certificate distribution points).</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6759"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Ignore Soft Failures</fo:inline>. If enable [...]
+ if CRL/OCSP response cannot be obtained because of network error or OCSP responder returns
+ internalError or tryLater.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6764"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Server CRL Path Or Upload</fo:inline>. Path to Certificate Revocation List file.
+ If set, certificate revocation check uses only set CRL file and ignores CRL Distribution Points
+ in certificate.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following attributes apply to <fo:inline font-style="italic">File Trust Stores</fo:inline> only.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6777"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6778"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo: [...]
+ itself. </fo:block></fo:block></fo:block></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6794"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Certificate Alias</fo:inline>. An optional way of specifying
+ which certificate the broker should use if the keystore contains multiple
+ entries.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6799"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Manager Factory Algorithm</fo:inline>. In keystores the have more
+ than one certificate, the alias identifies the certificate to be
+ used.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6804"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Key Store Type</fo:inline>. Type of Keystore.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:li [...]
+ the Truststore it will allow authenticate only those clients that present a
+ certificate exactly matching a certificate contained within the Truststore
+ database.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following attributes apply to <fo:inline font-style="italic">Non Java Trust Stores</fo:inline>
+ only.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6822"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6823"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo: [...]
+ format.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Truststores-Children"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start [...]
+ Provider</fo:inline></fo:basic-link> governs who may do what within the Broker. It governs both messaging and
+ management.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">See <fo:basic-link internal-destination="Java-Broker-Security-AccessControlProviders"><fo:inline>Section 8.3, “Access Control Providers”</fo:inline></fo:basic-link></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Connection-Limit-Providers"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-seri [...]
+ governs how many connections could user open on AMQP ports.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">See <fo:basic-link internal-destination="Java-Broker-Security-ConnectionLimitProviders"><fo:inline>Section 8.4, “Connection Limit Providers”</fo:inline></fo:basic-link></fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Plugin-HTTP"><fo:block><fo:block><fo:block keep-together.within-column="always" mar [...]
+ Management Console</fo:inline></fo:basic-link> and the <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API"><fo:inline>REST API</fo:inline></fo:basic-link>.</fo:block><fo:block id="Java-Broker-Management-Managing-Plugin-HTTP-Attributes"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,Zap [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e6890"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6891"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo: [...]
+ (disabled) by default.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6896"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Basic Authentication for HTTPS</fo:inline>. It is set to true
+ (enabled) by default.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6901"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">SASL Authentication for HTTP</fo:inline>. It is set to true
+ (enabled) by default.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6906"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">SASL Authentication for HTTPS</fo:inline>. It is set to true
+ (enabled) by default.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6911"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Session timeout</fo:inline> is the timeout in seconds to close
+ the HTTP session. It is set to 10 minutes by default.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6916"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">CORS Allow Origins</fo:inline> is a comma separated list of [...]
+ </fo:block></fo:block><fo:block id="Java-Broker-Management-Managing-Plugin-HTTP-Children"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start [...]
+ effect at broker restart. </fo:block></fo:block></fo:block></fo:block></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-f [...]
+ authenticated. The Broker supports a number of different authentication schemes, each with
+ its own "authentication provider". Any number of Authentication Providers can be configured on
+ the Broker at the same time. </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e6960"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Important</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Only unused Authentication Provider can be deleted. For delete reques [...]
+ delete Authentication Provider associated with the Ports, the errors will be returned and
+ delete operations will be aborted. It is possible to change the Authentication Provider on
+ Port at runtime. However, the Broker restart is required for changes on Port to take effect.
+ </fo:block></fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e6963"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Authentication Providers may choose to selectively disable certain authentication mechanisms
+ depending on whether an encrypted transport is being used or not. This is to avoid insecure
+ configurations. Notably, by default the PLAIN mechanism will be disabled on non-SSL
+ connections. This security feature can be overwritten by setting
+ <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e6966">secureOnlyMechanisms = []</fo:block> in the authentication provider
+ section of the config.json.
+ <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e6969"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Warning</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Changing the secureOnlyMechanism is a breach of security and might cause passwords to be
+ transfered in the clear. Use at your own risk!
+ </fo:block></fo:block></fo:block>
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Security-LDAP-Provider"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-ind [...]
+ <fo:inline font-family="monospace">ldaps://example.com:636</fo:inline></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6989"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Search context</fo:inline> is the distinguished nam [...]
+ object. It defines the location from which the search for users begins, for example,
+ <fo:inline font-family="monospace">dc=users,dc=example,dc=com</fo:inline></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e6996"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Search filter</fo:inline> is a DN template to fi [...]
+ provided user name, for example, <fo:inline font-family="monospace">(uid={0})</fo:inline></fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block> Additionally, the following optional fields can be specified: <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-sta [...]
+ JNDI LDAP context factory. This class must implement the <fo:basic-link external-destination="url(http://docs.oracle.com/javase/7/docs/api/javax/naming/spi/InitialContextFactory.html)"><fo:inline>InitialContextFactory</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javase/7/docs/api/javax/naming/spi/InitialContextFactory.html)">http://docs.oracle.com/javase/7/docs/api/javax/naming/spi/InitialContext [...]
+ not specified a default value of <fo:inline font-family="monospace">com.sun.jndi.ldap.LdapCtxFactory</fo:inline> is
+ used.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7019"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">LDAP authentication URL</fo:inline> is the URL of LDAP server for
+ performing "ldap bind". If not specified, the <fo:inline font-style="italic">LDAP server URL</fo:inline> will
+ be used for both searches and authentications.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7027"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Truststore name</fo:inline> is a name of <fo:basic-link internal-destinatio [...]
+ truststore</fo:inline></fo:basic-link>. Use this if connecting to a Directory over SSL (i.e. ldaps://)
+ which is protected by a certificate signed by a private CA (or utilising a self-signed
+ certificate).</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7035"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Authentication method</fo:inline> is a method of authentication to use on binding into LDAP
+ when <fo:inline font-family="monospace">bind without search</fo:inline> mode is not selected.
+ Supported methods are NONE, SIMPLE, GSSAPI. The latter requires setting of <fo:inline font-style="italic">Login Config Scope</fo:inline>
+ which is a name of JAAS login module from JASS login configuration file specified using JVM system
+ property <fo:inline font-style="italic">java.security.auth.login.config</fo:inline> or Java security properties file. If
+ <fo:inline font-style="italic">Login Config Scope</fo:inline> is not specified with <fo:inline font-family="monospace">GSSAPI</fo:inline>
+ <fo:inline font-style="italic">Authentication method</fo:inline>, the scope <fo:inline font-style="italic">qpid-broker-j</fo:inline> will be used.
+ </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7061"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Additional group information can be obtained from LDAP.
+ There are two common ways of representing group membership in LDAP.
+ <fo:list-block provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e7064"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7065"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>
+ User entries can hold membership information as attribute.
+ To use this the <fo:inline font-style="italic">attribute name</fo:inline> that holds the group information must be specified.
+ </fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7070"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>
+ Group entries can hold a list of their members as attribute.
+ This can be used by specifying a <fo:inline font-style="italic">search context</fo:inline> and <fo:inline font-style="italic">search filter</fo:inline> to find all groups that the user should be considered a member of.
+ Typically this involves filtering groups by looking for the user's DN on a group attribute.
+ The <fo:inline font-style="italic">subtree search scope</fo:inline> determines whether the search should include the subtree extending from the <fo:inline font-style="italic">search context</fo:inline>.
+ </fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e7086"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Important</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In order to protect the security of the user's password, when using LDAP authentication,
+ you must: </fo:block><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e7089"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7090"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo [...]
+ transmission to the Broker. The Broker enforces this restriction automatically on AMQP
+ and HTTP ports.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7093"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Authenticate to the Directory using SSL (i.e. ldaps://) to protect the password
+ during transmission from the Broker to the Directory.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The LDAP Authentication Provider works in the following manner. If not in <fo:inline font-family="monospace">bind
+ without search</fo:inline> mode, it first connects to the Directory and searches for the ldap
+ entity which is identified by the username. The search begins at the distinguished name
+ identified by <fo:inline font-family="monospace">Search Context</fo:inline> and uses the username as a filter. The search
+ scope is sub-tree meaning the search will include the base object and the subtree extending
+ beneath it. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> If the search returns a match, or is configured in <fo:inline font-family="monospace">bind without search</fo:inline>
+ mode, the Authentication Provider then attempts to bind to the LDAP server with the given name
+ and the password. Note that <fo:basic-link external-destination="url(http://docs.oracle.com/javase/7/docs/api/javax/naming/Context.html#SECURITY_AUTHENTICATION)"><fo:inline>simple security
+ authentication</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javase/7/docs/api/javax/naming/Context.html#SECURITY_AUTHENTICATION)">http://docs.oracle.com/javase/7/docs/api/javax/naming/Context.html#SECURITY_AUTHENTICATION</fo:basic-link>]</fo:inline> is used so the Directory receives the password in the clear.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ By default, this authentication provider caches the result of an authentication for a short period of time. This
+ reduces the load on the Directory service if the same credentials are presented frequently within a short
+ period of time. The length of time a result will be cached is defined by context variable
+ <fo:inline font-family="monospace">qpid.auth.cache.expiration_time</fo:inline> (default to 600 seconds). The cache can be disabled by
+ setting the context variable <fo:inline font-family="monospace">qpid.auth.cache.size</fo:inline> to 0.
+ </fo:block></fo:block><fo:block id="Java-Broker-Security-Kerberos-Provider"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0p [...]
+ connections. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Configuration of kerberos is done through system properties (there doesn't seem to be a
+ way around this unfortunately). </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e7128">
+ export JAVA_OPTS=-Djavax.security.auth.useSubjectCredsOnly=false -Djava.security.auth.login.config=qpid.conf
+ ${QPID_HOME}/bin/qpid-server
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Where qpid.conf would look something like this:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start [...]
+com.sun.security.jgss.accept {
+ com.sun.security.auth.module.Krb5LoginModule required
+ useKeyTab=true
+ storeKey=true
+ doNotPrompt=true
+ realm="EXAMPLE.COM"
+ useSubjectCredsOnly=false
+ kdc="kerberos.example.com"
+ keyTab="/path/to/keytab-file"
+ principal="<name>/<host>";
+};</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Where realm, kdc, keyTab and principal should obviously be set correctly for the
+ environment where you are running (see the existing documentation for the C++ broker about
+ creating a keytab file). </fo:block><fo:block id="Java-Broker-Security-Kerberos-Provider-Spnego"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align [...]
+ SPNEGO (Simple and Protected GSSAPI Negotiation Mechanism) based authentication can be configured
+ for Web Management Console and REST API.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A special JAAS login configuration needs to be provided for
+ Service Principal Name (SPN) <fo:inline font-style="italic">HTTP/{FQDN}@REALM</fo:inline> in addition to configuration
+ provided for broker service principal in scope <fo:inline font-style="italic">com.sun.security.jgss.accept</fo:inline>.
+ An example of such SPNEGO configuration is provided below, </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e7149">
+spnego {
+ com.sun.security.auth.module.Krb5LoginModule required
+ useKeyTab=true
+ storeKey=true
+ doNotPrompt=true
+ realm="EXAMPLE.COM"
+ useSubjectCredsOnly=false
+ kdc="kerberos.example.com"
+ keyTab="/path/to/keytab-file-for-HTTP-principal"
+ principal="HTTP/broker.org";
+};</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e7151"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Important</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Please, note that in the example above a principal name is specified as
+ <fo:inline font-style="italic">HTTP/broker.org</fo:inline> where <fo:inline font-style="italic">broker.org</fo:inline> is supposed to be
+ a fully qualified name of the host where broker is running. The FQDN used to access the Broker
+ must match the host name in the SPN exactly otherwise the authentication will fail.</fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ A name of configuration module in the example above is <fo:inline font-style="italic">spnego</fo:inline>. It can be
+ communicated to the Kerberos authentication provider via context variable or JVM system property
+ <fo:inline font-style="italic">qpid.auth.gssapi.spnegoConfigScope</fo:inline>. For example,
+
+ <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e7168">
+ export QPID_OPTS=-Dqpid.auth.gssapi.spnegoConfigScope=spnego -Djavax.security.auth.useSubjectCredsOnly=false -Djava.security.auth.login.config=qpid.conf
+ </fo:block>
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The RELM part in name of authenticated principal logged with SPNEGO mechanism can be stripped by
+ setting context variable <fo:inline font-style="italic">qpid.auth.gssapi.spnegoStripRealmFromPrincipalName</fo:inline> to
+ <fo:inline font-style="italic">true</fo:inline>.
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Security-OAuth2-Provider"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" sta [...]
+ Unfortunately, the <fo:basic-link external-destination="url(https://www.rfc-editor.org/rfc/rfc6749.txt)"><fo:inline>OAuth2 specification</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://www.rfc-editor.org/rfc/rfc6749.txt)">https://www.rfc-editor.org/rfc/rfc6749.txt</fo:basic-link>]</fo:inline> does not define a standard why to get the identity of a subject from an access token.
+ However, most OAuth2 implementations provide such functionality, although in different ways. Qpid handles this by providing so called IdentityResolvers.
+ Currently the following services are supported:
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e7188"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7189"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list [...]
+ Since all of these, with the exception of CloudFoundry, are tied to a specific service they come with defaults for the Scope, Authorization-, Token-, and IdentityResolverEndpoint.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ By default, this authentication provider caches the result of an authentication for a short period of time. This
+ reduces the load on the OAuth2 service if the same token is presented frequently within a short
+ period of time. The length of time a result will be cached is defined by context variable
+ <fo:inline font-family="monospace">qpid.auth.cache.expiration_time</fo:inline> (default to 600 seconds). The cache can be disabled by
+ setting the context variable <fo:inline font-family="monospace">qpid.auth.cache.size</fo:inline> to 0.
+ </fo:block></fo:block><fo:block id="Java-Broker-Security-External-Provider"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0p [...]
+ Certificates</fo:inline></fo:basic-link> be presented the External Authentication Provider can be used, such that
+ the user is authenticated based on trust of their certificate alone, and the X500Principal
+ from the SSL session is then used as the username for the connection, instead of also
+ requiring the user to present a valid username and password. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ <fo:inline font-weight="bold">Note:</fo:inline> The External Authentication Provider should typically
+ only be used on the AMQP/HTTP ports, in conjunction with <fo:basic-link internal-destination="Java-Broker-Management-Managing-Ports"><fo:inline>SSL client certificate
+ authentication</fo:inline></fo:basic-link>. It is not intended for other uses and
+ will treat any non-sasl authentication processes on these ports as successful with the given
+ username.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">On creation of External Provider the use of full DN or username CN as a principal name can
+ be configured. If attribute "Use the full DN as the Username" is set to "true" the full DN is
+ used as an authenticated principal name. If attribute "Use the full DN as the Username" is set
+ to "false" the user name CN part is used as the authenticated principal name. Setting the
+ field to "false" is particular useful when <fo:basic-link internal-destination="Java-Broker-Security-AccessControlProviders"><fo:inline>ACL</fo:inline></fo:basic-link> is required, as at the moment, ACL does not support commas in the user name.
+ </fo:block></fo:block><fo:block id="Java-Broker-Security-Anonymous-Provider"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0 [...]
+ credentials and result in their identification on the broker as the user ANONYMOUS. This
+ Provider does not require specification of any additional attributes on creation. </fo:block></fo:block><fo:block id="Java-Broker-Security-ScramSha-Providers"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-befo [...]
+ users. The users'
+ passwords are stored as salted SHA digested password. This can be further encrypted using the
+ facilities described in <fo:basic-link internal-destination="Java-Broker-Security-Configuration-Encryption"><fo:inline>Section 8.5, “Configuration Encryption”</fo:inline></fo:basic-link>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">There are two variants of this provider, SHA1 and SHA256. SHA256 is recommended whenever
+ possible. SHA1 is provided with compatibility with clients utilising JDK 1.6 (which does not
+ support SHA256).</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For these providers user credentials can be added, removed or changed using
+ Management.</fo:block></fo:block><fo:block id="Java-Broker-Security-Plain-Provider"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" star [...]
+ (unlike the <fo:basic-link internal-destination="Java-Broker-Security-PlainPasswordFile-Provider"><fo:inline>PlainPasswordFile</fo:inline></fo:basic-link>, there is no separate password file). As the name suggests,
+ the user data (including password) is not hashed in any way. In order to provide encryption,
+ the facilities described in <fo:basic-link internal-destination="Java-Broker-Security-Configuration-Encryption"><fo:inline>Section 8.5, “Configuration Encryption”</fo:inline></fo:basic-link>
+ must be used.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For this provider user credentials can be added, removed or changed using
+ Management.</fo:block></fo:block><fo:block id="Java-Broker-Security-PlainPasswordFile-Provider"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align= [...]
+ instead.</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The PlainPasswordFile Provider uses local file to store and manage user credentials. When
+ creating an authentication provider the path to the file needs to be specified. If specified
+ file does not exist an empty file is created automatically on Authentication Provider
+ creation. On Provider deletion the password file is deleted as well.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For this provider user credentials can be added, removed or changed using
+ Management.</fo:block><fo:block id="d0e7282"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14. [...]
+ password pairs separated by colon character. This file must not be modified externally
+ whilst the Broker is running.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e7287">
+# password file format
+# <user name>: <user password>
+guest:guest
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Security-MD5-Provider"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start- [...]
+ users (unlike the <fo:basic-link internal-destination="Java-Broker-Security-Base64MD5PasswordFile-Provider"><fo:inline>Base64MD5 Password File</fo:inline></fo:basic-link>, there is no separate password file). Rather than store the
+ unencrypted user password (as the Plain provider does) it instead stores the MD5 password
+ digest. This can be further encrypted using the
+ facilities described in <fo:basic-link internal-destination="Java-Broker-Security-Configuration-Encryption"><fo:inline>Section 8.5, “Configuration Encryption”</fo:inline></fo:basic-link>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For this provider user credentials can be added, removed or changed using
+ Management.</fo:block></fo:block><fo:block id="Java-Broker-Security-Base64MD5PasswordFile-Provider"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-al [...]
+ <fo:basic-link internal-destination="Java-Broker-Security-MD5-Provider"><fo:inline>MD5</fo:inline></fo:basic-link> provider should be used
+ instead.</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Base64MD5PasswordFile Provider uses local file to store and manage user credentials
+ similar to PlainPasswordFile but instead of storing a password the MD5 password digest encoded
+ with Base64 encoding is stored in the file. When creating an authentication provider the path
+ to the file needs to be specified. If specified file does not exist an empty file is created
+ automatically on Authentication Provider creation. On Base64MD5PasswordFile Provider deletion
+ the password file is deleted as well.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For this provider user credentials can be added, removed or changed using
+ Management.</fo:block><fo:block id="d0e7318"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14. [...]
+ pairs separated by colon character. The password is stored MD5 digest/Base64 encoded. This
+ file must not be modified externally whilst the Broker is running.</fo:block></fo:block></fo:block><fo:block id="Java-Broker-Security-Composite-Provider"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-b [...]
+ against them in order defined. It can contains following authentication providers:
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e7329"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7330"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list [...]
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When performing authentication, composite provider checks presence of a user with a given username in the first
+ delegate provider and if found, performs authentication. It should be considered, that in case of name collision
+ (when delegate providers contains users with same username but different passwords), it's not guaranteed that
+ authentication will succeed even with the correct credentials. Therefore username collision should be avoided, i.e.
+ each delegate provider should contain users with unique usernames.</fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e7353"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold [...]
+ The Apache Qpid Broker-J utilises GroupProviders to allow assigning users to groups for use in
+ <fo:basic-link internal-destination="Java-Broker-Security-AccessControlProviders"><fo:inline>ACLs</fo:inline></fo:basic-link> or <fo:basic-link internal-destination="Java-Broker-Security-ConnectionLimitProviders"><fo:inline>CLTs</fo:inline></fo:basic-link>.
+ Following authentication by a given <fo:basic-link internal-destination="Java-Broker-Security-Authentication-Providers"><fo:inline>Authentication Provider</fo:inline></fo:basic-link>,
+ the configured Group Providers are consulted allowing the assignment of GroupPrincipals for a given authenticated user. Any number of
+ Group Providers can be added into the Broker. All of them will be checked for the presence of the groups for a given authenticated user.
+ </fo:block><fo:block id="File-Group-Manager"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker marker-class-name=" [...]
+ The <fo:inline font-style="italic">GroupFile</fo:inline> Provider allows specifying group membership in a flat file on disk.
+ On adding a new GroupFile Provider the path to the groups file is required to be specified.
+ If file does not exist an empty file is created automatically. On deletion of GroupFile Provider
+ the groups file is deleted as well. Only one instance of "GroupFile" Provider per groups file location can be created.
+ On attempt to create another GroupFile Provider pointing to the same location the error will be displayed and
+ the creation will be aborted.
+ </fo:block><fo:block id="File-Group-Manager-FileFormat"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-si [...]
+ The groups file has the following format:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e7420">
+ # <GroupName>.users = <comma delimited user list>
+ # For example:
+
+ administrators.users = admin,manager
+</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Only users can be added to a group currently, not other groups. Usernames can't contain commas.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Lines starting with a '#' are treated as comments when opening the file, but these are not preserved when the broker updates the file due to changes made through the management interface.
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Security-Group-Providers-ManagedGroupProvider"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" [...]
+ The <fo:inline font-style="italic">ManagedGroupProvider</fo:inline> allows specifying group membership as part of broker configuration.
+ In future version of Brokers GroupFile Provider will be replaced by this one.
+ </fo:block></fo:block><fo:block id="Java-Broker-Security-Group-Providers-CloudFoundry"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" s [...]
+ The <fo:inline font-style="italic">CloudFoundryDashboardManagementGroupProvider</fo:inline>
+ allows mapping of service instance ids to qpid management groups.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ One use case is restricting management capabilities of a OAuth2 authenticated user to certain virtual
+ hosts. For this, one would associate a cloudfoundry service id with each virtual host and have an ACL with a
+ separate management group for each virtual host. Given the correct service instance id to
+ management group mapping the GroupProvider will then associate the user with each management group the user
+ is provisioned to manage the associated service instance in the <fo:basic-link external-destination="url(http://docs.cloudfoundry.org/services/dashboard-sso.html#checking-user-permissions)"><fo:inline>CloudFoundry dashboard</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.cloudfoundry.org/services/dashboard-sso.html#checking-user-permissions)">http://docs.cloudfoundry.org/services/dashboard-sso.html#checking-user-p [...]
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Security-AccessControlProviders"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="sta [...]
+ The Access Control Provider governs the actions that a user may perform.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">There are two points within the hierarchy that enforce access control: the Broker itself and at each Virtual
+ Host. When an access decision needs to be made, the nearest control point configured with a provider is consulted
+ for a decision. The example, when making a decision about the ability to say, consume from, a Queue, if the
+ Virtual Host is configured with Access Control Provider it is consulted. Unless a decision is made, the decision
+ is delegated to the Access Control Provider configured at the Broker.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Access Control Providers are configured with a list of ACL rules. The rules determine to which objects
+ the user has access and what actions the user may perform on those objects. Rules are ordered and are considered
+ top to bottom. The first matching rule makes the access decision.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ ACL rules may be written in terms of user or group names. A rule written in terms of a group name applies to the
+ user if he is a member of that group. Groups information is obtained from the
+ <fo:basic-link internal-destination="Java-Broker-Security-Authentication-Providers"><fo:inline>Authentication Providers</fo:inline></fo:basic-link>
+ and
+ <fo:basic-link internal-destination="Java-Broker-Security-Group-Providers"><fo:inline>Group Providers</fo:inline></fo:basic-link>. Writing ACL in terms of groups is
+ recommended.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The Access Control Providers can be configured using
+ <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API"><fo:inline>REST Management interfaces</fo:inline></fo:basic-link>
+ and <fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console"><fo:inline>Web Management Console</fo:inline></fo:basic-link>.
+ </fo:block><fo:block id="Java-Broker-Security-AccessControlProviders-Types"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt" [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e7478"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7479"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-i [...]
+ the Broker's or VirtualHost's configuration. When used with HA, the Virtualhost
+ rules automatically propagated to all nodes participating within the HA group.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e7484"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">ACLFile</fo:inline> - an older provider that references an externally provided
+ ACL file (or data url). This provider is deprecated.</fo:block>
+ </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Security-AccessControlProviders-ACLRules"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" st [...]
+ ACL Rules
+ </fo:marker><fo:block font-size="17.28pt">8.3.2.
+ ACL Rules
+ </fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ An ACL rule-set is an ordered list of ACL rules.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">An ACL rule comprises matching criteria that determines if a rule applies to a situation and a decision
+ outcome. The rule produces an outcome only if the all matching criteria are satisfied.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Matching criteria is composed of an ACL object type (e.g. <fo:inline font-family="monospace">QUEUE</fo:inline>), an ACL action
+ (e.g. <fo:inline font-family="monospace">UPDATE</fo:inline>) and other properties that further refine if a match is made. These properties
+ restrict the match based on additional criteria such as name or IP address. ACL Object type <fo:inline font-family="monospace">ALL</fo:inline>
+ matches any object. Likewise ACL Action <fo:inline font-family="monospace">ALL</fo:inline> matches any action.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Let's look at some examples.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="mo [...]
+ ACL ALLOW alice CREATE QUEUE # Grants alice permission to create all queues.
+ ACL DENY bob CREATE QUEUE name="myqueue" # Denies bob permission to create a queue called "myqueue"
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ As discussed, the ACL rule-set is considered in order with the first matching rule taking precedence over all those
+ that follow. In the following example, if the user bob tries to create an exchange "myexch", the action
+ will be allowed by the first rule. The second rule will never be considered.
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e7520">
+ ACL ALLOW bob ALL EXCHANGE
+ ACL DENY bob CREATE EXCHANGE name="myexch" # Dead rule
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ If the desire is to allow bob to create all exchanges except "myexch", order of the rules must be reversed:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e7524">
+ ACL DENY bob CREATE EXCHANGE name="myexch"
+ ACL ALLOW bob ALL EXCHANGE
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ If a rule-set fails to make a decision, the result is configurable. By default, the <fo:inline font-family="monospace">RuleBased</fo:inline>
+ provider defers the decision allowing another provider further up the hierarchy to make a decision (i.e. allowing
+ the VirtualHost control point to delegate to the Broker). In the case of the ACLFile provider, by default, its
+ rule-set implicit have a rule denying all operations to all users. It is as if the rule-set ends with
+ <fo:inline font-family="monospace">ACL DENY ALL ALL</fo:inline>. If no access control provider makes a decision the default is to
+ deny the action.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ When writing a new ACL, a useful approach is to begin with an rule-set containing only
+ <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e7536">ACL DENY-LOG ALL ALL</fo:block> at the Broker control point which will cause the Broker to
+ deny all operations with details of the denial logged. Build up the ACL rule by rule, gradually working through
+ the use-cases of your system. Once the ACL is complete, consider switching the DENY-LOG actions to DENY.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ ACL rules are very powerful: it is possible to write very granular rules specifying many broker objects and their
+ properties. Most projects probably won't need this degree of flexibility. A reasonable approach is to choose to apply permissions
+ at a certain level of abstractions and apply them consistently across the whole system.
+ </fo:block></fo:block><fo:block id="Java-Broker-Security-AccessControlProviders-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" star [...]
+ Syntax
+ </fo:marker><fo:block font-size="17.28pt">8.3.3.
+ Syntax
+ </fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ ACL rules follow this syntax:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e7546">
+ ACL {permission} {<group-name>|<user-name>|ALL} {action|ALL} [object|ALL] [property=<property-values>]
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The <property-values> can be a single value property="single value" or a list of comma separated values in brackets
+ property=["value1", "value2", "value3"]. If a property repeats then it will be interpreted as list of values,
+ for example name="n1" name="n2" name="n3" is interpreted as name=["n1", "n2", "n3"].
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Comments may be introduced with the hash (#) character and are ignored. Long lines can be broken with the slash (\) character.
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e7552">
+ # A comment
+ ACL ALLOW admin CREATE ALL # Also a comment
+ ACL DENY guest \
+ ALL ALL # A broken line
+ </fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="table-Java-Broker-Security-AccessControlProviders-Syntax_permissions"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyph [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Applied when the contents of a queue is purged</fo:block> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:block space-before.optimum="1em" spac [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Comma-separated strings representing IPv4 address ranges.
+ </fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Intended for use in ACCESS VIRTUALHOST rules to apply firewall-like restrictions.
+ </fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The rule matches if any of the address ranges match the IPv4 address of the messaging client.
+ The address ranges are specified using either Classless Inter-Domain Routing notation
+ (e.g. 192.168.1.0/24; see <fo:basic-link external-destination="url(http://tools.ietf.org/html/rfc4632)"><fo:inline>RFC 4632</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://tools.ietf.org/html/rfc4632)">http://tools.ietf.org/html/rfc4632</fo:basic-link>]</fo:inline>)
+ or wildcards (e.g. 192.169.1.*).
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block> <fo:inline font-weight="bold">from_hostname</fo:inline> </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bo [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Comma-separated strings representing hostnames, specified using Perl-style regular
+ expressions, e.g. .*\.example\.company\.com
+ </fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Intended for use in ACCESS VIRTUALHOST rules to apply firewall-like restrictions.
+ </fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The rule matches if any of the patterns match the hostname of the messaging client.
+ </fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ To look up the client's hostname, Qpid uses Java's DNS support, which internally caches its results.
+ </fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ You can modify the time-to-live of cached results using the *.ttl properties described on the
+ Java <fo:basic-link external-destination="url(http://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html)"><fo:inline>Networking
+ Properties</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html)">http://docs.oracle.com/javase/8/docs/technotes/guides/net/properties.html</fo:basic-link>]</fo:inline> page.
+ </fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ For example, you can either set system property sun.net.inetaddr.ttl from the command line
+ (e.g. export QPID_OPTS="-Dsun.net.inetaddr.ttl=0") or networkaddress.cache.ttl in
+ $JAVA_HOME/lib/security/java.security. The latter is preferred because it is JVM
+ vendor-independent.
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:inline font-weight="bold">virtualhost_name</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-b [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ String. A name of virtual host to which the rule is applied.
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:inline font-weight="bold">method_name</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ String. The name of the method. A trailing wildcard (*) is permitted. Used with INVOKE ACL action.
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block><fo:inline font-weight="bold">attribute_names</fo:inline></fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Specifies attribute name criteria. Used by UPDATE ACL actions only. Rules with this criteria will match
+ if and only if the set of attributes being updated Comma separated list of attribute names . This criteria
+ will match if all attributes included within the update appear in the set described by
+ <fo:inline font-family="monospace">attribute_names</fo:inline>.
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block><fo:block id="Java-Broker-Security-AccessControlProviders-WorkedExamples"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-bef [...]
+ Worked Examples
+ </fo:marker><fo:block font-size="17.28pt">8.3.4.
+ Worked Examples
+ </fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Here are some example ACLs illustrating common use cases.
+ </fo:block><fo:block id="Java-Broker-Security-AccessControlProviders-WorkedExample1"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-i [...]
+ Worked example 1 - Management rights
+ </fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Suppose you wish to permission two users: a user <fo:inline font-family="monospace">operator</fo:inline> must be able to perform all
+ Management operations, and a user 'readonly' must be enable to perform only read-only actions. Neither
+ <fo:inline font-family="monospace">operator</fo:inline> nor <fo:inline font-family="monospace">readonly</fo:inline> should be allowed to connect clients for
+ messaging.
+ </fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e8221"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-n [...]
+ # Deny operator/readonly permission to connect for messaging.
+ ACL DENY-LOG operator ACCESS VIRTUALHOST
+ ACL DENY-LOG readonly ACCESS VIRTUALHOST
+ # Give operator permission to perfom all actions
+ ACL ALLOW operator ALL ALL
+ # Give readonly access permission to virtualhost. (Read permission for all objects implicit)
+ ACL ALLOW readonly ACCESS MANAGEMENT
+ ...
+ ... rules for other users
+ ...
+ </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Security-AccessControlProviders-WorkedExample2"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maxim [...]
+ Worked example 2 - Simple Messaging
+ </fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Suppose you wish to permission a system for application messaging. User <fo:inline font-family="monospace">publisher</fo:inline>
+ needs permission to publish to <fo:inline font-family="monospace">appqueue</fo:inline> and consumer needs permission to consume
+ from the same queue object. We also want <fo:inline font-family="monospace">operator</fo:inline> to be able to inspect messages
+ and delete messages in case of the need to intervene. This example assumes that the queue exists on
+ the Broker.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ We use this ACL to illustrate separate Broker and Virtualhost access control providers.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The following ACL rules are given to the Broker.
+ </fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e8244"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-n [...]
+# This gives the operate permission to delete messages on all queues on all virtualhost
+ACL ALLOW operator ACCESS MANAGEMENT
+ACL ALLOW operator INVOKE QUEUE method_name="deleteMessages"
+ACL ALLOW operator INVOKE QUEUE method_name="getMessage*"
+ </fo:block></fo:block></fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e8249"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.max [...]
+# This gives the operate permission to delete messages on all queues on all virtualhost
+ACL ALLOW operator ACCESS MANAGEMENT
+ACL ALLOW operator INVOKE QUEUE method_name=["deleteMessages", "getMessage*"]
+ </fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ And the following ACL rule-set is applied to the Virtualhost. The default outcome of the
+ Access Control Provider must be <fo:inline font-family="monospace">DEFERED</fo:inline>. This means that if a request for
+ access is made for which there are no matching rules, the decision will be deferred to the
+ Broker so it can make a decision instead.
+ </fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e8259"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-n [...]
+# Configure the rule-set to DEFER decisions that have no matching rules.
+CONFIG DEFAULTDEFER=TRUE
+# Allow client and server to connect to the virtual host.
+ACL ALLOW publisher ACCESS VIRTUALHOST
+ACL ALLOW consumer ACCESS VIRTUALHOST
+
+ACL ALLOW publisher PUBLISH EXCHANGE name="" routingKey="appqueue"
+ACL ALLOW consumer CONSUME QUEUE name="appqueue"
+# In some addressing configurations, the Qpid JMS AMQP 0-x client, will declare the queue as a side effect of creating the consumer.
+# The following line allows for this. For the Qpid JMS AMQP 1.0 client, this is not required.
+ACL ALLOW consumer CREATE QUEUE name="appqueue"
+ </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Security-AccessControlProviders-WorkedExample3"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maxim [...]
+ Worked example 3 - firewall-like access control
+ </fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ This example illustrates how to set up an ACL that restricts the IP addresses and hostnames
+ of messaging clients that can access a virtual host.
+ </fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e8269"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-n [...]
+ ################
+ # Hostname rules
+ ################
+
+ # Allow messaging clients from company1.com and company1.co.uk to connect
+ ACL ALLOW all ACCESS VIRTUALHOST from_hostname=".*\.company1\.com,.*\.company1\.co\.uk"
+
+ # Deny messaging clients from hosts within the dev subdomain
+ ACL DENY-LOG all ACCESS VIRTUALHOST from_hostname=".*\.dev\.company1\.com"
+
+ ##################
+ # IP address rules
+ ##################
+
+ # Deny access to all users in the IP ranges 192.168.1.0-192.168.1.255 and 192.168.2.0-192.168.2.255,
+ # using the notation specified in RFC 4632, "Classless Inter-domain Routing (CIDR)"
+ ACL DENY-LOG messaging-users ACCESS VIRTUALHOST \
+ from_network="192.168.1.0/24,192.168.2.0/24"
+
+ # Deny access to all users in the IP ranges 192.169.1.0-192.169.1.255 and 192.169.2.0-192.169.2.255,
+ # using wildcard notation.
+ ACL DENY-LOG messaging-users ACCESS VIRTUALHOST \
+ from_network="192.169.1.*,192.169.2.*"
+ </fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Security-ConnectionLimitProviders"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-bef [...]
+ The Connection Limit Provider governs the limits of connections that an user can simultaneously open.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">There are two points within the hierarchy that enforce connection limits: the Broker itself and at each
+ Virtual Host. When a limit needs to be checked, every check point configured with a provider is consulted
+ for a decision. The example, when making a decision about the opening a new connection. If the Virtual Host is
+ configured with Connection Limit Provider then the limits are checked. Unless the connection is rejected,
+ the decision is delegated to the Connection Limit Provider configured at the Broker.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Connection Limit Provider is configured with a set of CLT (connection limit) rules. The rules determine
+ the limit of open connections, how many connections can user open on the
+ <fo:basic-link internal-destination="Java-Broker-Concepts-Ports"><fo:inline>AMQP Ports</fo:inline></fo:basic-link>.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ CLT rules may be written in terms of user or group names. A rule written in terms of a group name applies to the
+ user if he is a member of that group. Groups information is obtained from the
+ <fo:basic-link internal-destination="Java-Broker-Security-Authentication-Providers"><fo:inline>Authentication Providers</fo:inline></fo:basic-link>
+ and <fo:basic-link internal-destination="Java-Broker-Security-Group-Providers"><fo:inline>Group Providers</fo:inline></fo:basic-link>. Writing CLT rules in terms of
+ user names is recommended.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The Connection Limit Providers can be configured using
+ <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API"><fo:inline>REST Management interfaces</fo:inline></fo:basic-link>
+ and <fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console"><fo:inline>Web Management Console</fo:inline></fo:basic-link>.
+ </fo:block><fo:block id="Java-Broker-Security-ConnectionLimitProviders-Types"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent=" [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e8308"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8309"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo: [...]
+ <fo:inline font-style="italic">RulesBased</fo:inline>
+ - a provider that stores the rule-set within the Broker's or VirtualHost's configuration.
+ </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8315"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ <fo:inline font-style="italic">ConnectionLimitFile</fo:inline>
+ - a provider that references an externally provided CLT file (or data url).
+ </fo:block>
+ </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Security-ConnectionLimitProviders-Rules"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" [...]
+ Connection Limit Rules
+ </fo:marker><fo:block font-size="17.28pt">8.4.2.
+ Connection Limit Rules
+ </fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">An CLT rule is composed of an user or group identification, AMQP port name and connection limits.
+ Let's look at some example.
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e8330">
+ # Limits simultaneously open connection by alice on brokerAmqp port up to 10.
+ CLT alice port=brokerAmqp connection_count=10
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If there is multiple rules for given user (or group) then the rules are merge into a single most
+ restrictive rule.
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e8334">
+ CLT alice port=brokerAmqp connection_count=10
+ CLT alice port=brokerAmqp connection_count=12 connection_frequency_count=60/1m
+ CLT alice port=brokerAmqp connection_frequency_count=100/1m
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The previous rules will be merge into a single effective rule.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preser [...]
+ CLT alice port=brokerAmqp connection_count=10 connection_frequency_count=60/1m
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The rules are applied in following order:</fo:block><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.2em" id="d0e8342"><fo:list-item space-before.optimum="1em" space-bef [...]
+ the group rules. If any group rule is not found then broker will look for a default rule. An user without
+ any rule is not restricted.
+ </fo:block></fo:block><fo:block id="Java-Broker-Security-ConnectionLimitProviders-Syntax"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start [...]
+ Syntax
+ </fo:marker><fo:block font-size="17.28pt">8.4.3.
+ Syntax
+ </fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Connection limit rules follow this syntax:
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e8359">
+ CLT {<user-name>|<group-name>|ALL} [BLOCK] [port=<AMQP-port-name>|ALL] [property="<property-value>"]
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ A rule with user name ALL is default rule. Likewise a rule with port=ALL is applied to all ports.
+ The parameter BLOCK is optional and marks user or group that is not allowed to connect on the port.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Comments may be introduced with the hash (#) character and are ignored. A line can be broken with the slash
+ (\) character.
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e8365">
+ # A comment
+ CLT alice port=brokerAMQP connection_limit=10 # Also a comment
+ CLT mark port=brokerAMQP \ # A broken line
+ connection_limit=10 \
+ connection_frequency_limit=60/1m
+ CLT ALL BLOCK # A default rule
+ </fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="table-Java-Broker-Security-ConnectionLimitProviders-Syntax_properties"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate= [...]
+ <fo:inline font-weight="bold">connection_limit</fo:inline>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Integer. A maximum number of connections the messaging user can establish to the Virtual
+ Host on AMQP port.
+ </fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Alternatives: connection-limit, connectionLimit.
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:inline font-weight="bold">connection_frequency_limit</fo:inline>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ A maximum number of connections the messaging user can establish to the Virtual Host
+ on AMQP port within defined period of time, which is 1 minute by default.
+ The connection frequency limit is specified in the format: limit/period, where time
+ period is written as xHyMz.wS - x hours, y minutes and z.w seconds.
+ </fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ In case of time period 1 hour/minute/second the digit 1 can be omitted,
+ for example: 7200/H or 120/M or 2/S.
+ (7200/H is not the same frequency limit as 120/H or 2/S).
+ </fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ If the period is omitted then the default frequency period is used.
+ If required, the default frequency period can be changed using CONFIG command.
+ See an example below. Setting it to zero or negative value turns off the connection
+ frequency evaluation.
+ </fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Alternatives: connection-frequency-limit, connectionFrequencyLimit.
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:inline font-weight="bold">port</fo:inline>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ String. The AMQP port name, ALL is the default value.
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The default time period for frequency limit can be set up with the <fo:inline font-family="monospace">CONFIG</fo:inline> command.
+ Default frequency period is specified in ms.
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e8424">
+ CONFIG default_frequency_period=60000
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ default-frequency-period and defaultFrequencyPeriod are valid alternatives to the default_frequency_period.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The default frequency period may be specified as context variable
+ <fo:inline font-family="monospace">qpid.broker.connectionLimiter.frequencyPeriodInMillis</fo:inline>.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The Broker logs rejected connections when an user breaks the limit. But the Broker could also log
+ the accepted connections with current counter value. The full logging could be turn on with
+ <fo:inline font-family="monospace">CONFIG</fo:inline> command.
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e8438">
+ CONFIG log_all=true default_frequency_period=60000
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ log-all and logAll are valid alternatives to the log_all.
+ </fo:block></fo:block><fo:block id="Java-Broker-Security-ConnectionLimitProviders-WorkedExample"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align [...]
+ Worked Example
+ </fo:marker><fo:block font-size="17.28pt">8.4.4.
+ Worked Example
+ </fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Here are some example of connection limits illustrating common use cases.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Suppose you wish to restrict two users: a user <fo:inline font-family="monospace">operator</fo:inline> can establish at the most 50
+ connections on any port. A user <fo:inline font-family="monospace">publisher</fo:inline> can establish 30 new connection per two minutes
+ but at the most 20 parallel connections on <fo:inline font-family="monospace">amqp</fo:inline> port. Another users should be blocked.
+ </fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e8458"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with [...]
+ # Limit operator
+ CLT operator connection_limit=50
+ # Limit publisher
+ CLT publisher port=amqp connection_frequency_limit=30/2M connection_limit=20
+ # Block all users by default
+ CLT ALL BLOCK
+
+ </fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Security-Configuration-Encryption"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.max [...]
+ Broker's configuration. This is means that items such as keystore/truststore passwords, JDBC
+ passwords, and LDAP passwords can be stored in the configure in a form that is difficult to
+ read.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Broker ships with an encryptor implementation called <fo:inline font-family="monospace">AESKeyFile</fo:inline>. This
+ uses a securely generated random key of 256bit<fo:footnote><fo:inline><fo:inline font-family="serif,Symbol,ZapfDingbats" font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">1</fo:inline></fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" end-indent="0pt" text-indent="0pt" hyphenate="true" wrap-option="wrap" linefeed-treatment="treat-as-space"> [...]
+ Unlimited Strength required</fo:block></fo:footnote-body></fo:footnote> to encrypt the secrets stored within a key
+ file. Of course, the key itself must be guarded carefully, otherwise the passwords encrypted
+ with it may be compromised. For this reason, the Broker ensures that the file's permissions
+ allow the file to be read exclusively by the user account used for running the Broker.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e8478"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Important</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If the keyfil [...]
+ Web Management Console. On enabling the provider, any existing passwords within the
+ configuration will be automatically rewritten in the encrypted form.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Note that passwords stored by the Authentication Providers <fo:basic-link internal-destination="Java-Broker-Security-PlainPasswordFile-Provider"><fo:inline>PlainPasswordFile</fo:inline></fo:basic-link> and.
+ <fo:basic-link internal-destination="Java-Broker-Security-Base64MD5PasswordFile-Provider"><fo:inline>PlainPasswordFile</fo:inline></fo:basic-link>
+ with the external password files are <fo:inline font-style="italic">not</fo:inline> encrypted by the key. Use the
+ Scram Authentication Managers instead; these make use of the Configuration Encryption when
+ storing the users' passwords. </fo:block></fo:block><fo:block id="Java-Broker-Security-Configuration-Encryption-Alternate-Implementations"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" [...]
+ the user, perhaps owing to the security standards of their institution, the
+ <fo:inline font-family="monospace">ConfigurationSecretEncrypter</fo:inline> interface is designed as an extension point.
+ Users may implement their own implementation of ConfigurationSecretEncrypter perhaps to employ
+ stronger encryption or delegating the storage of the key to an Enterprise Password
+ Safe.</fo:block></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left= [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e8526"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8527"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-ite [...]
+ plain files, remote syslog daemons, and an in-memory buffer (viewable from Management).
+ The system is also open for extension meaning it is possible to produce a plugin to log to
+ a bespoke destination.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8530"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Logging can be dynamically configured at runtime. For instance, it is possible to
+ temporarily increase the logging verbosity of the system whilst a problem is investigated
+ and then revert later, all without the need to restart the Broker.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8533"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Virtualhosts can be configured to generate their own separate log, and the Broker is
+ capable of generating a log either inclusive or exclusive of virtualhost events.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8536"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Logs are accessible over Management, removing the need for those operating the Broker
+ to have shell level access.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In the remainder of this section you will first find a description of the concepts used in
+ the logging subsystem. Next, you find a description of the default configuration. The section
+ then concludes with a in-depth description of the loggers themselves and how they may be
+ configured.</fo:block><fo:block id="Java-Broker-Runtime-Logging-Concepts"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt" [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e8549"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8550"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-i [...]
+ ships a variety of loggers, for instance, a file logger, which is capable of writing a
+ log file to the file system, a Syslog Logger capable of writing to a remote syslog
+ daemon and console logger capable of writing to stdout or stderr.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Loggers are attached at two points within the Broker Model; the Broker itself and
+ the virtualhosts. Loggers attached at the Broker can capture log events for the system
+ as a whole, or can exclude events related to virtualhosts.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Loggers attached to a virtualhost capture log events relating to that virtualhost
+ only.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Broker and virtualhosts can have zero or more Loggers. If no loggers are
+ configured, no logging is generated at all.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8562"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Inclusion rules</fo:inline> govern what appears within a log. Inclusion
+ rules are associated with Loggers. This means it is possible for different Loggers to
+ have different contents.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A Logger with no inclusion rules will produce an empty log.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Runtime-Logging-Default-Configuration"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start [...]
+ production environments. It has the following characteristics:</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e8577"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8578"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-i [...]
+ rolled automatically when the file reaches 100MB. A maximum history of one file is
+ retained. On restart the the log will be appended to.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The log contains: <fo:list-block provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e8586"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8587"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item- [...]
+ higher.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8595"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Log events from Qpid's dependencies (such as Derby or Jetty) that are
+ deemed warning or higher.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The default location for the log file is
+ <fo:inline font-family="monospace">${QPID_WORK}/log/qpid.log</fo:inline>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8604"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>The Broker also caches the last 4096 log events in a memory cache. By default, the
+ memory logger logs the same things the file logger does.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The configuration can be customised at runtime using Management. This makes it possible to
+ investigate unusual conditions <fo:inline font-style="italic">without</fo:inline> the need to restart the Broker.
+ For instance, you may alter the logging level so that a verbose log is produced whilst an
+ investigation is in progress and revert the setting later, all without the need to restart the
+ Broker.</fo:block></fo:block><fo:block id="Java-Broker-Runtime-Logging-Loggers"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-inde [...]
+ Logger's inclusion rules.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Loggers are associated with either the Broker or a virtualhost. Virtualhost loggers write
+ only log events related to that virtualhost. Broker Loggers write log events from the Broker
+ as a whole. Optionally a Broker Logger can be configured to exclude log events coming from
+ virtualhosts. These abilities can be usefully exploited together in managed service scenarios
+ to produce separate logs for separate user groups.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Loggers can be added or removed at runtime, without restarting the Broker. However changes
+ to a Logger's configuration such as filenames and rolling options don't take effect until the
+ next restart. Changes to a Logger's inclusion rules take effect immediately.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">All loggers allow the log event layout to be customised. Loggers understand <fo:basic-link external-destination="url(http://logback.qos.ch/manual/layouts.html#ClassicPatternLayout)"><fo:inline> Logback Classic
+ Pattern Layouts</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://logback.qos.ch/manual/layouts.html#ClassicPatternLayout)">http://logback.qos.ch/manual/layouts.html#ClassicPatternLayout</fo:basic-link>]</fo:inline>. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following sections describes each Logger implementation in detail.</fo:block><fo:block id="Java-Broke [...]
+ location of the log file, the rolling configuration, and compression options can be
+ configured.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:inline font-style="italic">roll daily</fo:inline> option, if enabled, will cause the log file will be
+ rolled at midnight local time. The rolled over file will have a suffix in the form
+ <fo:inline font-family="monospace">yyyy-mm-dd</fo:inline>. In roll daily mode, <fo:inline font-style="italic">maximum number of rolled
+ files</fo:inline> controls the maximum number of <fo:inline font-style="italic">days</fo:inline> to be retained.
+ Older files will be deleted.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:inline font-style="italic">maximum file size</fo:inline> option limits the size of any one log file.
+ Once a log file reaches the given size, it will be rolled. The rolled over file will have
+ the numeric suffix, beginning at <fo:inline font-family="monospace">1</fo:inline>. If the log file rolls again, first
+ the existing file with the suffix <fo:inline font-family="monospace">.1</fo:inline> is renamed to <fo:inline font-family="monospace">.2</fo:inline>
+ and so forth. If roll daily is not in use, <fo:inline font-style="italic">maximum number of rolled
+ files</fo:inline> governs the number of rolled <fo:inline font-style="italic">files</fo:inline> that will be
+ retained.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-style="italic">Roll on restart</fo:inline> governs whether the log file is rolled when the
+ Broker is restarted. If not ticked, the Broker will append to the existing log file until it
+ needs to be rolled.</fo:block></fo:block><fo:block id="Java-Broker-Runtime-Logging-Loggers-ConsoleLogger"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" t [...]
+ error.</fo:block></fo:block><fo:block id="Java-Broker-Runtime-Logging-Loggers-SyslogLogger"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="sta [...]
+ <fo:inline font-family="monospace">USER</fo:inline> facility. The hostname and port number of the syslog daemon can be
+ configured.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Log entries can be prefixed with a string. This string defaults to include the word
+ <fo:inline font-family="monospace">Qpid</fo:inline> and the name of the Broker or virtualhost. This serves to
+ distinguish the logging generated by this Qpid instance, from other Qpid instances, or other
+ applications using the <fo:inline font-family="monospace">USER</fo:inline>.</fo:block></fo:block><fo:block id="Java-Broker-Runtime-Logging-Loggers-MemoryLogger"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" spac [...]
+ default the circular buffer holds the last 4096 log events. The contents of the buffer can
+ be viewed via Management. See <fo:basic-link internal-destination="Java-Broker-Runtime-Logging-Management-MemoryLogger"><fo:inline>Figure 9.3, “Viewing a memory logger”</fo:inline></fo:basic-link></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Logging-Loggers-GraylogLogger"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family=" [...]
+ <fo:basic-link external-destination="url(https://docs.graylog.org/en/3.2/pages/gelf.html)"><fo:inline>GELF format</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://docs.graylog.org/en/3.2/pages/gelf.html)">https://docs.graylog.org/en/3.2/pages/gelf.html</fo:basic-link>]</fo:inline> via TCP.
+ The hostname and port number of the Graylog server has to be configured. The content of the log messages
+ is also configurable.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The logger is implemented on top of LGPL licenced library <fo:inline font-family="monospace">de.siegmar:logback-gelf</fo:inline>.
+ The LGPL license is incompatible with Apache License. Thus, the Graylog integration module is not included
+ into standard broker distribution. It has to be built using option <fo:inline font-family="monospace">-Dgraylog</fo:inline>. The built jar
+ <fo:inline font-family="monospace">org.apache.qpid:qpid-broker-plugins-graylog-logging-logback</fo:inline> and
+ <fo:inline font-family="monospace">de.siegmar:logback-gelf</fo:inline> jar should be copied manually under broker
+ <fo:inline font-family="monospace">lib</fo:inline> folder. The broker restart is required to have <fo:inline font-style="italic">GraylogLogger</fo:inline>
+ available for the use.
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Logging-InclusionRules"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" [...]
+ govern what appears in the log. A Logger with no inclusion rules will log nothing.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Inclusion rules can be added, removed or changed at runtime. Changes take place
+ immediately.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e8753"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8754"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-i [...]
+ a given <fo:inline font-style="italic">log event source name</fo:inline> and have a level that equals or
+ exceeds the specified value.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The log event source name refers to the fully qualified class name from which the
+ event originates. These names permit a trailing wild card <fo:inline font-family="monospace">.*</fo:inline>. For
+ instance a source name of <fo:inline font-family="monospace">org.apache.qpid.*</fo:inline> will match all events
+ from classes in the package <fo:inline font-family="monospace">org.apache.qpid</fo:inline> and any sub packages
+ beneath.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:inline font-style="italic">Level</fo:inline> governs the level of the events that will be included
+ in the log. It may take one of the following values: ERROR, WARN, INFO, DEBUG, TRACE
+ where ERROR is considered the highest and TRACE the lowest. In addition, there are two
+ special values: OFF and ALL, the former excludes all log events whereas the latter will
+ include everything. When considering whether a logging event should be included in the
+ log, the logging event must have a level that matches that of the inclusion rule or be
+ higher, otherwise the log event will not appear in the log.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block></fo:block><fo:block id="Java-Broker-Runtime-Logging-Management"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0p [...]
+ REST API. You can: <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e8785"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8786"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-it [...]
+ the Logger.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e8795"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>For MemoryLoggers, view the last <fo:inline font-family="monospace">n</fo:inline> log
+ events</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The figure that follows shows a FileLogger. The attributes area shows the configuration
+ of the Logger. The inclusion rule table shows the rules that are associated with the Logger.
+ The area towards the bottom of the tab allows the log files to be downloaded to the browser.
+ <fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="Java-Broker-Runtime-Logging-Management-FileLogger"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.ma [...]
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The figure below shows the editing of the level of an inclusion rule. <fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="Java-Broker-Runtime-Logging-Management-InclusionRule"><fo:block space-before.optimum="1em" space- [...]
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> The figure below shows a Memory Logger. Note that the Memory Logger provides access to
+ the cached message via the viewer towards the bottom on the tab. <fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="Java-Broker-Runtime-Logging-Management-MemoryLogger"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space [...]
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Disk-Space-Management"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" st [...]
+ The Apache Qpid Broker-J supports a flow control mechanism which is triggered when a configured
+ disk quota is exceeded. This is supported by the BDB and Derby virtualhosts.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ This functionality blocks all producers on reaching the disk overflow limit. When consumers consume the
+ messages, causing disk space usage to falls below the underflow limit, the producers are unblocked and continue
+ working as normal.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Two limits can be configured:
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ overfull limit - the maximum space on disk (in bytes).
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ underfull limit - when the space on disk drops below this limit, producers are allowed to resume publishing.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The overfull and underful limit can be specified when a new virtualhost is created or an exiting virtualhost is
+ edited. This can be done using the Store Overflow and Store Underfull settings within the virtual host creation
+ and edit dialogue. If editing an existing virtualhost, the virtualhost must be restarted for the new values to
+ take effect.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The disk quota functionality is based on "best effort" principle. This means the broker cannot guarantee that
+ the disk space limit will not be exceeded. If several concurrent transactions are started before the limit is
+ reached, which collectively cause the limit to be exceeded, the broker may allow all of them to be committed.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The Broker will also impose flow control if the filesystem hosting a virtualhost exceeds a <fo:basic-link internal-destination="Java-Broker-Management-Managing-Broker-Context-StoreFilesystemMaxUsagePercent"><fo:inline>configured
+ percentage.</fo:inline></fo:basic-link>.
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e8865"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The <fo:inline font-style="italic">Producer Flow Control</fo:inline> can be configured on individual queue using
+ <fo:inline font-style="italic">Producer Flow Control</fo:inline> overflow policy.
+ For more details, please read<fo:basic-link internal-destination="Java-Broker-Concepts-Queue-OverflowPolicy"><fo:inline>Section 4.7.5, “Controlling Queue Size”</fo:inline></fo:basic-link>.
+ </fo:block></fo:block></fo:block><fo:block id="d0e8876"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block fon [...]
+ There are two broker log messages that may occur if flow control through disk quota limits is enabled. When
+ the virtual host is blocked due to exceeding of the disk quota limit the following message appears in the
+ broker log
+ <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e8881">
+ [vh(/test)/ms(BDBMessageStore)] MST-1008 : Store overfull, flow control will be enforced
+ </fo:block>
+ When virtual host is unblocked after cleaning the disk space the following message appears in the broker log
+ <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e8884">
+ [vh(/test)/ms(BDBMessageStore)] MST-1009 : Store overfull condition cleared
+ </fo:block>
+ </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Transaction-Timeout"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-ali [...]
+ using transactions hang, become unresponsive, or simply (due to programming error)
+ begin a transaction and keep using it without ever calling committing or rolling back.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Users can choose to configure an idleWarn or openWarn threshold, after which the identified
+ transaction should be logged as a WARN level alert as well as (more importantly) an idleClose or
+ openClose threshold after which the transaction and the connection it applies to will be
+ closed.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This feature is particularly useful in environments where the owner of the broker does not
+ have full control over the implementation of clients, such as in a shared services
+ deployment.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following section provide more details on this feature and its use.</fo:block></fo:block><fo:block id="Java-Broker-Runtime-Transaction-Timeout-Purpose"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symb [...]
+ broker holds an open transaction on the persistent store. This can have undesirable consequences
+ if the store does not time out or close long-running transactions, such as with BDB. This can can
+ result in a rapid increase in disk usage size, bounded only by available space, due to growth of
+ the transaction log. </fo:block></fo:block><fo:block id="Java-Broker-Runtime-Transaction-Timeout-Effect"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-al [...]
+ gives a brief overview of what the Transaction Timeout feature can do.</fo:block><fo:block id="Java-Broker-Runtime-Transaction-Timeout-Effect-Broker-Side"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.op [...]
+ level alert with details of the connection on which the threshold has been exceeded,
+ along with the age of the transaction.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When the openClose or idleClose specified threshold value is exceeded, the broker will
+ throw an exception back to the client connection via the <fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/ExceptionListener.html)"><fo:inline>ExceptionListener</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/ExceptionListener.html)">http://docs.oracle.com/javaee/6/api/javax/jms/ExceptionListener.html</fo:basic-link>]</fo:inline>, log the
+ action and then close the connection.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The example broker log output shown below is where the idleWarn threshold specified is
+ lower than the idleClose threshold and the broker therefore logs the idle transaction 3 times
+ before the close threshold is triggered and the connection closed out.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e8924">
+CON-1011 : Idle Transaction : 13,116 ms
+CON-1011 : Idle Transaction : 14,116 ms
+CON-1011 : Idle Transaction : 15,118 ms
+CON-1002 : Close : Idle transaction timed out
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The second example broker log output shown below illustrates the same mechanism operating
+ on an open transaction.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e8928">
+CON-1010 : Open Transaction : 12,406 ms
+CON-1010 : Open Transaction : 13,406 ms
+CON-1010 : Open Transaction : 14,406 ms
+CON-1002 : Close : Open transaction timed out
+ </fo:block></fo:block><fo:block id="Java-Broker-Runtime-Transaction-Timeout-Effect-Client-Side"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="star [...]
+ The application must reconnect itself in order to continue work. If the
+ client is a JMS client, the application will be notified by the
+ <fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/ExceptionListener.html)"><fo:inline>exception
+ listener.</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/ExceptionListener.html)">http://docs.oracle.com/javaee/6/api/javax/jms/ExceptionListener.html</fo:basic-link>]</fo:inline></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Transaction-Timeout-Configuration"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif [...]
+ virtualhost is edited.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">We would recommend that only warnings are configured at first, which should allow broker
+ administrators to obtain an idea of the distribution of transaction lengths on their systems,
+ and configure production settings appropriately for both warning and closure. Ideally
+ establishing thresholds should be achieved in a representative UAT environment, with clients and
+ broker running, prior to any production deployment.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">It is impossible to give suggested values, due to the large variation in usage depending on
+ the applications using a broker. However, clearly transactions should not span the expected
+ lifetime of any client application as this would indicate a hung client.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When configuring closure timeouts, it should be noted that a timeout on any producer
+ or consumer will cause the connection to be closed - this disconnecting all producers and consumers
+ created on that connection.</fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Handling-Undeliverable-Messages"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" sp [...]
+ client is using a transacted session and rolls-back the transaction) can be made available on
+ the queue again and then subsequently be redelivered, depending on the precise session
+ acknowledgement mode and messaging model used by the application. This is normally desirable
+ behaviour that contributes to the ability of a system to withstand unexpected errors. However, it
+ leaves open the possibility for a message to be repeatedly redelivered (potentially indefinitely),
+ consuming system resources and preventing the delivery of other messages. Such undeliverable
+ messages are sometimes known as poison messages.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For an example, consider a stock ticker application that has been designed to consume prices
+ contained within JMS TextMessages. What if inadvertently a BytesMessage is placed onto the queue?
+ As the ticker application does not expect the BytesMessage, its processing might fail and cause it
+ to roll-back the transaction, however the default behavior of the Broker would mean that the
+ BytesMessage would be delivered over and over again, preventing the delivery of other legitimate
+ messages, until an operator intervenes and removes the erroneous message from the queue. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Qpid has maximum delivery count and dead-letter queue (DLQ) features which can be used in
+ concert to construct a system that automatically handles such a condition. These features are
+ described in the following sections.</fo:block></fo:block><fo:block id="Java-Broker-Runtime-Handling-Undeliverable-Messages-Maximum-Delivery-Count"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum=" [...]
+ process a message more than the specified number of times, then the Broker will either route the
+ message via the queue's <fo:inline font-style="italic">alternate binding</fo:inline> (if one has been defined), or will
+ discard the message.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When using AMQP 1.0 the current delivery count of a message is available to the consuming
+ application via the <fo:inline font-family="monospace">message-count</fo:inline> message header (exposed via the
+ <fo:inline font-family="monospace">JMSXDeliveryCount</fo:inline> JMS message property when using JMS). When using the
+ AMQP 0-8..0-10 protocols this information is not available.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e8980"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> When using AMQP 0-8..0-10, in order for a max [...]
+ <fo:inline font-style="italic">must</fo:inline> call <fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/Session.html#rollback())"><fo:inline>Session#rollback()</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/javaee/6/api/javax/jms/Session.html#rollback())">http://docs.oracle.com/javaee/6/api/javax/jms/Session.html#rollback()</fo:basic-link>]</fo:inline> (or <fo:basic-link ext [...]
+ processing of Session#rollback() (or Session#recover()) that if a message has been seen
+ at least the maximum number of times then it will move the message to the DLQ or discard the
+ message. If the consuming application fails in another manner, for instance, closes the connection, the
+ message will not be re-routed and consumer application will see the same poison message again
+ once it reconnects.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> If the consuming application is using Qpid JMS Client 0-x and using AMQP 0-8, 0-9, or 0-9-1
+ protocols, it is necessary to set the client system property <fo:inline font-family="monospace">qpid.reject.behaviour</fo:inline> or
+ connection or binding URL option <fo:inline font-family="monospace">rejectbehaviour</fo:inline> to the value <fo:inline font-family="monospace">server</fo:inline>.</fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Handling-Undeliverable-Messages-Dead-Letter-Queues"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-fa [...]
+ specified, the Broker automatically routes the message via the alternate binding. The alternate binding
+ would normally specify a queue designated for that purpose of receiving the undeliverable messages.
+ By convention such queues are known as dead-letter queues or simply DLQs.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">It is possible to configure the broker to automatically default a DLQ for every queue created. To do this
+ one can set the context variable <fo:inline font-family="monospace">queue.defaultAlternateBinding</fo:inline> at the Virtual Host (or above)
+ level. For example, by setting the value to <fo:inline font-family="monospace">{\"destination\": \"$${this:name}_DLQ\"}</fo:inline>
+ a new queue <fo:inline font-style="italic">exampleQueue</fo:inline> will default to having an alternate binding to
+ <fo:inline font-style="italic">exampleQueue_DLQ</fo:inline>. To avoid error this should be combined with setting a node auto creation
+ policy on the VirtualHost, so that such DLQs are automatically created, e.g. </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e9025">
+ "nodeAutoCreationPolicies" : [ {
+ "pattern" : ".*_DLQ",
+ "nodeType" : "Queue",
+ "attributes" : {
+ "alternateBinding" : ""
+ },
+ "createdOnPublish" : true,
+ "createdOnConsume" : true
+ } ]
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e9027"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Note</fo:block><fo:block>For the autocreated DLQs it is important to override the default alternate binding, as above, else the creation of an
+ infinite chain of DLQs for DLQs will be attempted.</fo:block></fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e9029"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Avoid excessive queue depth</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Applications making [...]
+ examination of messages arriving on DLQs so that both corrective actions can be taken to resolve
+ the underlying cause and organise for their timely removal from the DLQ. Messages on DLQs
+ consume system resources in the same manner as messages on normal queues so excessive queue
+ depths should not be permitted to develop.</fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Close-Connection-When-No-Route"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space- [...]
+ Due to asynchronous nature of AMQP 0-8/0-9/0-9-1 protocols sending a message with a routing key for which no queue binding exist results
+ in either message being bounced back (if it is mandatory or immediate) or discarded on broker side otherwise.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ When a 'mandatory' message is returned, the Apache Qpid JMS AMQP 0-x clients conveys this by delivering
+ an <fo:inline font-style="italic">AMQNoRouteException</fo:inline> through the configured ExceptionListener on the Connection.
+ This does not cause channel or connection closure, however it requires a special exception handling
+ on client side in order to deal with <fo:inline font-style="italic">AMQNoRouteExceptions</fo:inline>.
+ This could potentially be a problem when using various messaging frameworks (e.g. Mule)
+ as they usually close the connection on receiving any JMSException.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ In order to simplify application handling of scenarios where 'mandatory' messages
+ are being sent to queues which do not actually exist, the Apache Qpid Broker-J can be configured such that
+ it will respond to this situation by closing the connection
+ rather than returning the unroutable message to the client as it normally should.
+ From the application perspective, this will result in failure of synchronous operations in progress such as a session commit() call.
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e9056"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This feature affects only transacted sessions.</fo:block><fo:block space-before.optimum="1em" space-befo [...]
+ By default, the Apache Qpid JMS AMQP 0-x produces mandatory messages when using queue destinations. Topic
+ destinations produce 'non-mandatory' messages.
+ </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Close-Connection-When-No-Route-Configuration"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before [...]
+ <fo:inline font-style="italic">closeWhenNoRoute</fo:inline>
+ </fo:marker><fo:block font-size="17.28pt">9.5.2. Configuring
+ <fo:inline font-style="italic">closeWhenNoRoute</fo:inline>
+ </fo:block></fo:block></fo:block></fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The Port attribute <fo:inline font-style="italic">closeWhenNoRoute</fo:inline> can be set to specify this feature on broker side.
+ By default, it is turned on. Setting <fo:inline font-style="italic">closeWhenNoRoute</fo:inline> to <fo:inline font-style="italic">false</fo:inline> switches
+ it off.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">See the <fo:basic-link external-destination="url(../../jms-client-0-8/book/JMS-Client-0-8-Connection-URL.html)"><fo:inline>Qpid JMS AMQP 0-x client
+ documentation</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(../../jms-client-0-8/book/JMS-Client-0-8-Connection-URL.html)">../../jms-client-0-8/book/JMS-Client-0-8-Connection-URL.html</fo:basic-link>]</fo:inline> for details of enabling this feature client side.
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Flow-To-Disk"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-ind [...]
+ that can be occupied by messages. Once this
+ limit is reached any new transient messages and all existing transient messages will be
+ transferred to disk. Newly arriving transient messages will continue to go to the disk until the
+ cumulative size of all messages falls below the limit once again.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">By default the Broker makes 75% of the max direct available memory for messages. This memory is
+ divided between all the queues across all virtual hosts defined on the Broker with a percentage
+ calculated according to their current queue size. These calculations are refreshed periodically
+ by the housekeeping cycle.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For example if there are two queues, one containing 75MB and the second 100MB messages
+ respectively and the Broker has 1GB direct memory with the default of 75% available for messages.
+ The first queue will have a target size of 320MB and the second 430MB. Once 750MB is taken by
+ messages, messages will begin to flow to disk. New messages will cease to flow to disk when
+ their cumulative size falls beneath 750MB.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Flow to disk is configured by Broker context variable
+ <fo:inline font-family="monospace">broker.flowToDiskThreshold</fo:inline>. It is expressed as a size in bytes and defaults
+ to 75% of the JVM maximum heap size.</fo:block><fo:block id="Java-Broker-Runtime-Flow-To-Disk-Monitoring"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text- [...]
+ of the amount of utilized direct memory by the enqueued messages.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The total amount of allocated direct memory by the <fo:inline font-family="monospace">Broker</fo:inline> can be determined by
+ checking <fo:inline font-family="monospace">Broker</fo:inline> statistics <fo:inline font-family="monospace">usedDirectMemorySize</fo:inline>. There is another
+ <fo:inline font-family="monospace">Broker</fo:inline> level statistics <fo:inline font-family="monospace">directMemoryTotalCapacity</fo:inline> to get the total amount
+ of allocated direct memory. Usually, the values reported by both statistics attributes
+ <fo:inline font-family="monospace">usedDirectMemorySize</fo:inline> and <fo:inline font-family="monospace">directMemoryTotalCapacity</fo:inline> are the same
+ or do not differ much.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The direct memory consumed by the <fo:inline font-family="monospace">VirtualHost</fo:inline> messages is reported as
+ <fo:inline font-family="monospace">VirtualHost</fo:inline> statistics <fo:inline font-family="monospace">inMemoryMessageSize</fo:inline>. The current value of
+ <fo:inline font-family="monospace">VirtualHost</fo:inline> direct memory threshold is exposed with statistics attribute
+ <fo:inline font-family="monospace">inMemoryMessageThreshold</fo:inline>. When the value of <fo:inline font-family="monospace">inMemoryMessageSize</fo:inline> is
+ greater than <fo:inline font-family="monospace">inMemoryMessageThreshold</fo:inline>, the flow to disk is triggered to bring the amount of
+ direct memory consumed by the <fo:inline font-family="monospace">VirtualHost</fo:inline> messages in-line with the
+ <fo:inline font-family="monospace">inMemoryMessageThreshold</fo:inline>.
+ </fo:block></fo:block><fo:block id="Java-Broker-Runtime-Flow-To-Disk-Logging"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent=" [...]
+ <fo:inline font-family="monospace">INFO</fo:inline> logs due to quite frequent triggering of <fo:inline font-family="monospace">Flow to Disk</fo:inline>
+ for messaging use cases requiring holding messages on the <fo:inline font-family="monospace">Broker</fo:inline> side for some time.
+ As result, the <fo:inline font-family="monospace">Flow to Disk</fo:inline> logs can quickly dominate the broker logs and cause unnecessary
+ disk consumption.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Though, if required, the <fo:inline font-family="monospace">Flow to Disk</fo:inline> DEBUG logs can be enabled by adding
+ the following logging rule into the corresponding <fo:inline font-family="monospace">Broker</fo:inline> logger.
+ <fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e9189"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within- [...]
+ {
+ "name" : "DirectMemory",
+ "type" : "NameAndLevel",
+ "level" : "DEBUG",
+ "loggerName" : "org.apache.qpid.server.directMemory.*"
+ }
+ </fo:block></fo:block></fo:block>
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Please note, that the logger <fo:inline font-family="monospace">org.apache.qpid.server.directMemory.broker</fo:inline>
+ is used by the <fo:inline font-family="monospace">Broker</fo:inline> to report conditions when direct memory utilization exceeds the pred-defined
+ <fo:inline font-family="monospace">Broker</fo:inline> threshold, whilst the logger <fo:inline font-family="monospace">org.apache.qpid.server.directMemory.virtualhost</fo:inline>
+ is used to report conditions when direct memory utilization by the <fo:inline font-family="monospace">VirtualHost</fo:inline>
+ messages exceeds the current value of the <fo:inline font-family="monospace">VirtualHost</fo:inline> threshold.
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Consumers"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent=" [...]
+ Queue). The standard behaviours of consumers are defined by the respective AMQP specification, however in addition
+ to the standard behaviours a number of Qpid specific enhancements are available</fo:block><fo:block id="Java-Broker-Runtime-Consumers-Prioirty"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0 [...]
+ attempts to distribute messages from the queue in a "fair" manner. Some use cases require allocation of messages
+ to consumers to be based on the "priority" of the consumer. Where there are multiple consumers having differing
+ priorities, the Broker will always attempt to deliver a message to a higher priority consumer before attempting
+ delivery to a lower priority consumer. That is, a lower priority consumer will only receive a message if no
+ higher priority consumers currently have credit available to consume the message, or those consumers have declined
+ to accept the message (for instance because it does not meet the criteria of any selectors associated with the
+ consumer).</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Where a consumer is created with no explicit priority provided, the consumer is given the highest possible
+ priority.</fo:block><fo:block id="d0e9228"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.3999 [...]
+ In AMQP 0-9 and 0-9-1 the priority of the consumer can be set by adding an entry into the table provided as the
+ <fo:inline font-family="monospace">arguments</fo:inline> field (known as the <fo:inline font-family="monospace">filter</fo:inline> field on AMQP 0-9) of the
+ <fo:inline font-family="monospace">basic.consume</fo:inline> method. The key for the entry must be the literal short string
+ <fo:inline font-family="monospace">x-priority</fo:inline>, and the value of the entry must be an integral number in the range
+ -2<fo:inline font-size="75%" baseline-shift="super">31</fo:inline> to 2<fo:inline font-size="75%" baseline-shift="super">31</fo:inline>-1.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ In AMQP 0-10 the priority of the consumer can be set in the map provided as the <fo:inline font-family="monospace">arguments</fo:inline>
+ field of the <fo:inline font-family="monospace">message.subscribe</fo:inline> method. The key for the entry must be the literal string
+ <fo:inline font-family="monospace">x-priority</fo:inline>, and the value of the entry must be an integral number in the range
+ -2<fo:inline font-size="75%" baseline-shift="super">31</fo:inline> to 2<fo:inline font-size="75%" baseline-shift="super">31</fo:inline>-1.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ In AMQP 1.0 the priority of the consumer is set in the <fo:inline font-family="monospace">properties</fo:inline> map of the
+ <fo:inline font-family="monospace">attach</fo:inline> frame where the broker side of the link represents the sending side of the link.
+ The key for the entry must be the literal string <fo:inline font-family="monospace">priority</fo:inline>, and the value of the entry must
+ be an integral number in the range -2<fo:inline font-size="75%" baseline-shift="super">31</fo:inline> to 2<fo:inline font-size="75%" baseline-shift="super">31</fo:inline>-1.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ When using the Qpid JMS client for AMQP 0-9/0-9-1/0-10 the consumer priority can be set in the address being
+ used for the Destination object.
+
+ <fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e9287"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-aft [...]
+ </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Background-Recovery"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align [...]
+ queues and their messages from disk. In the Broker's default mode the Virtualhosts do not become
+ active until this recovery process completes. If queues have a large number of entries, this may
+ take considerable time. During this time no messaging can be performed.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Broker has a background recovery feature allows the system to return to operation
+ sooner. If enabled the recovery process takes place in the background allow producers and
+ consumers to begin work earlier.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The feature respects the message delivery order requirements of standard queues, that is any
+ messages arriving whilst the background recovery is in flight won't overtake older messages
+ still to be recovered from disk. There is an exception for the out of order queue types whilst
+ background recovery is in flight. For instance, with priority queues older lower priority
+ messages may be delivered before newer, higher priority.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">To activate the feature, set a <fo:basic-link internal-destination="Java-Broker-Management-Managing-Entities-General"><fo:inline>context variable</fo:inline></fo:basic-link>
+ <fo:inline font-family="monospace">use_async_message_store_recovery</fo:inline> at the desired Virtualhost, or at Broker or
+ higher to enable the feature broker-wide.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e9329"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The background recovery feature does not write operational log [...]
+ progress. This means messages <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-MST-1004"><fo:inline>MST-1004</fo:inline></fo:basic-link> and <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-MST-1005"><fo:inline>MST-1005</fo:inline></fo:basic-link> will not
+ be seen.</fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Message-Compression"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" te [...]
+ protocol.</fo:block></fo:footnote-body></fo:footnote> message compression. This feature works in co-operation with Qpid
+ Clients implementing the same feature.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Once the feature is enabled (using Broker context variable
+ <fo:inline font-style="italic">broker.messageCompressionEnabled</fo:inline>), the Broker will advertise support for the
+ message compression feature to the client at connection time. This allows clients to opt to turn
+ on message compression, allowing message payload sizes to be reduced.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If the Broker has connections from clients who have message compression enabled and others who
+ do not, it will internally, on-the-fly, decompress compressed messages when sending to clients
+ without support and conversely, compress uncomressed messages when sending to clients who do.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The Broker has a threshold below which it will not consider compressing a message, this is
+ controlled by Broker content variable
+ (<fo:inline font-family="monospace">connection.messageCompressionThresholdSize</fo:inline>) and expresses a size in bytes.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This feature <fo:inline font-style="italic">may</fo:inline> have a beneficial effect on performance by:</fo:block><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum=" [...]
+ in the HA case, Broker to Broker, for replication purposes.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9369"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Reducing storage space when data is at rest within the Broker, both on disk and in
+ memory.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Of course, compression and decompression is computationally expensive. Turning on the feature
+ may have a negative impact on CPU utilization on Broker and/or Client. Also for small messages
+ payloads, message compression may increase the message size. It is recommended to test the feature
+ with representative data.</fo:block></fo:block><fo:block id="Java-Broker-Runtime-Connection-Limit"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="st [...]
+ Each connection to the Broker consumes resources while it is connected. In order to protect
+ the Broker against malfunctioning (or malicious) client processes, it is possible to limit the
+ number of connections that can be active on any given port.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Connection limits on AMQP ports are controlled by an attribute "maxOpenConnections" on
+ the port. By default this takes the value of the context variable
+ <fo:inline font-family="monospace">qpid.port.max_open_connections</fo:inline> which in itself is defaulted to the
+ value <fo:inline font-family="monospace">-1</fo:inline> meaning there is no limit.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ If the interpolated value of <fo:inline font-family="monospace">maxOpenConnections</fo:inline> on an AMQP port is a
+ positive integer, then when that many active connections have been established no new
+ connections will be allowed (until an existing connection has been closed). Any such
+ rejection of a connection will be accompanied by the operational log message
+ <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-PRT-1005"><fo:inline>PRT-1005</fo:inline></fo:basic-link>.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The context variable <fo:inline font-family="monospace">qpid.port.open_connections_warn_percent</fo:inline> can be
+ used to control when a warning log message is generated as the number of open connections
+ approaches the limit for the port. The default value of this variable is
+ <fo:inline font-family="monospace">80</fo:inline> meaning that if more the number of open connections to the port
+ has exceeded 80% of the given limit then the operatinal log message
+ <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-PRT-1004"><fo:inline>PRT-1004</fo:inline></fo:basic-link>
+ will be generated.
+ </fo:block></fo:block><fo:block id="Java-Broker-Runtime-Memory"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:marker [...]
+ Understanding how the Qpid broker uses memory is essential to running a high performing and reliable service.
+ A wrongly configured broker can exhibit poor performance or even crash with an <fo:inline font-family="monospace">OutOfMemoryError</fo:inline>.
+ Unfortunately, memory usage is not a simple topic and thus requires some in depth explanations.
+ This page should give the required background information to make informed decisions on how to configure your broker.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ <fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Types"><fo:inline>Section 9.11.2, “Types of Memory”</fo:inline></fo:basic-link> explains the two different kinds of Java memory most relevant to the broker.
+ <fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Usage"><fo:inline>Section 9.11.3, “Memory Usage in the Broker”</fo:inline></fo:basic-link> goes on to explain which parts of the broker use what kind of memory.
+ <fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Low-Memory"><fo:inline>Section 9.11.4, “Low Memory Conditions”</fo:inline></fo:basic-link> explains what happens when the system runs low on memory.
+ <fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Defaults"><fo:inline>Section 9.11.5, “Defaults”</fo:inline></fo:basic-link> lays out the default settings of the Qpid broker.
+ Finally, <fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Tuning"><fo:inline>Section 9.11.6, “Memory Tuning the Broker”</fo:inline></fo:basic-link> gives some advice on tuning your broker.
+ </fo:block></fo:block><fo:block id="Java-Broker-Runtime-Memory-Types"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo [...]
+ While Java has a couple of different internal memory types we will focus on the two types that are relevant to the Qpid broker.
+ Both of these memory types are taken from the same physical memory (RAM).
+ </fo:block><fo:block id="d0e9436"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999 [...]
+ Normally, all objects are allocated from Java's heap memory.
+ Once, nothing references an object it is cleaned up by the Java Garbage Collector and it's memory returned to the heap.
+ This works fine for most use cases.
+ However, when interacting with other parts of the operating system using Java's heap is not ideal.
+ This is where the so called direct memory comes into play.
+ </fo:block></fo:block><fo:block id="d0e9441"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.39 [...]
+ The world outside of the JVM, in particular the operating system (OS), does not know about Java heap memory and uses other structures like C arrays.
+ In order to interact with these systems Java needs to copy data between its own heap memory and these native structures.
+ This can become a bottle neck when there is a lot of exchange between Java and the OS like in I/O (both disk and network) heavy applications.
+ Java's solution to this is to allow programmers to request <fo:inline font-family="monospace">ByteBuffer</fo:inline>s from so called direct memory.
+ This is an opaque structure that <fo:inline font-style="italic">might</fo:inline> have an underlying implementation that makes it efficient to interact with the OS.
+ Unfortunately, the GC is not good at tracking direct memory and in general it is inadvisable to use direct memory for regular objects.
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Memory-Usage"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-ind [...]
+ This section lists some note worthy users of memory within the broker and where possible lists their usage of heap and direct memory.
+ Note that to ensure smooth performance some heap memory should remain unused by the application and be reserved for the JVM to do house keeping and garbage collection.
+ <fo:basic-link external-destination="url(https://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/util/DbCacheSize.html)"><fo:inline>Some guides</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(https://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/util/DbCacheSize.html)">https://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/util/DbCacheSize.html</fo:basic-link>]</fo:inline> advise to reserve up to 30% of h [...]
+ </fo:block><fo:block id="d0e9460"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.399999999999999 [...]
+ The broker itself uses a moderate amount of heap memory (≈15 MB).
+ However, each connection and session comes with a heap overhead of about 17 kB and 15 kB respectively.
+ In addition, each connection reserves 512 kB direct memory for network I/O.
+ </fo:block></fo:block><fo:block id="d0e9465"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.39 [...]
+ The amount of memory a Virtual Host uses depends on its type.
+ For a JSON Virtual Host Node with a BDB Virtual Host the heap memory usage is approximately 2 MB.
+ However, each BDB Virtual Hosts has a mandatory cache in heap memory which has an impact on performance.
+ See <fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Usage-BDB"><fo:inline>below</fo:inline></fo:basic-link> for more information.
+ </fo:block></fo:block><fo:block id="d0e9473"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.39 [...]
+ Messages and their headers are kept in direct memory and have an additional overhead of approximately 1 kB heap memory each.
+ This means that most brokers will want to have more direct memory than heap memory.
+ When many small messages accumulate on the broker the 1 kB heap memory overhead can become a <fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Low-Memory-Heap"><fo:inline>limiting factor</fo:inline></fo:basic-link>.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ When the broker is <fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Low-Memory-Direct"><fo:inline>running low on direct memory</fo:inline></fo:basic-link>
+ it will evict enqueued messages from memory and <fo:basic-link internal-destination="Java-Broker-Runtime-Flow-To-Disk"><fo:inline>flow them to disk</fo:inline></fo:basic-link>.
+ For persistent messages this only means freeing the direct memory representation because they always have an on-disk representation to guard against unexpected failure (e.g., a power cut).
+ For transient messages this implies additional disk I/O.
+ After being flowed to disk messages need to be re-read from disk before delivery.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Please, note that messages from uncommitted transactions are not
+ <fo:basic-link internal-destination="Java-Broker-Runtime-Flow-To-Disk"><fo:inline>flowed to disk</fo:inline></fo:basic-link> as part of
+ <fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Low-Memory-Direct"><fo:inline>running into low direct memory conditions</fo:inline></fo:basic-link>,
+ as they are not enqueued yet. The <fo:inline font-family="monospace">Connection</fo:inline> has its own threshold for
+ keeping messages from uncommitted transactions in memory. Only when <fo:inline font-family="monospace">Connection</fo:inline> threshold
+ is breached, the uncommitted messages on the connection are
+ <fo:basic-link internal-destination="Java-Broker-Runtime-Flow-To-Disk"><fo:inline>flowed to disk</fo:inline></fo:basic-link>.</fo:block></fo:block><fo:block id="Java-Broker-Runtime-Memory-Usage-BDB"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="alw [...]
+ The broker can use Oracle's BDB JE (BDB) as a message store to persist messages by writing them to a database.
+ BDB uses a mandatory cache for navigating and organising its database structure.
+ Sizing and tuning this cache is a topic of its own and would go beyond the scope of this guide.
+ Suffice to say that by default Qpid uses 5% of heap memory for BDB caches (each Virtual Host uses a separate cache) or 10 MB per BDB store, whichever is greater.
+ See the <fo:basic-link external-destination="url(http://www.oracle.com/us/products/database/berkeley-db/je)"><fo:inline>official webpage</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://www.oracle.com/us/products/database/berkeley-db/je)">http://www.oracle.com/us/products/database/berkeley-db/je</fo:basic-link>]</fo:inline> especially <fo:basic-link external-destination="url(http://docs.oracle.com/cd/E17277_02/html/java/c [...]
+ For those interested, Qpid uses <fo:basic-link external-destination="url(http://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/CacheMode.html#EVICT_LN)"><fo:inline>EVICT_LN</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/CacheMode.html#EVICT_LN)">http://docs.oracle.com/cd/E17277_02/html/java/com/sleepycat/je/CacheMode.html#EVICT_LN</fo:basic-link>]</fo:inli [...]
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Note that due to licensing concerns Qpid does not ship the BDB JE jar files.
+ </fo:block></fo:block><fo:block id="d0e9525"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="12p [...]
+ TODO
+ </fo:block></fo:block></fo:block><fo:block id="d0e9530"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block fon [...]
+ Qpid uses Jetty for the HTTP Management (both REST and Web Management Console).
+ When the management plugin is loaded it will allocate the memory it needs and should not require more memory during operation and can thus be largely ignored.
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Memory-Low-Memory"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" star [...]
+ When the broker runs low on heap memory performance will degrade because the JVM will trigger full garbage collection (GC) events in a struggle to free memory.
+ These full GC events are also called stop-the-world events as they completely halt the execution of the Java application.
+ Stop-the-world-events may take any where from a couple of milliseconds up to several minutes.
+ Should the heap memory demands rise even further the JVM will eventually throw an OutOfMemoryError which will cause the broker to shut down.
+ </fo:block></fo:block><fo:block id="Java-Broker-Runtime-Memory-Low-Memory-Direct"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-in [...]
+ When the broker detects that it uses 75% of available direct memory it will start flowing incoming transient messages to disk and reading them back before delivery.
+ This will prevent the broker from running out of direct memory but may degrade performance by requiring disk I/O.
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Memory-Defaults"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start- [...]
+ By default Qpid uses these settings:
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e9553"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9554"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-i [...]
+ 0.5 GB heap memory
+ </fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9556"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>
+ 1.5 GB direct memory
+ </fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9558"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>
+ 5% of heap reserved for the BDB JE cache.
+ </fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9560"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>
+ Start flow-to-disk at 75% direct memory utilisation.
+ </fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ As an example, this would accommodate a broker with 50 connections, each serving 5 sessions, and each session having 1000 messages of 1 kB on queues in the broker.
+ This means a total of 250 concurrent sessions and a total of 250000 messages without flowing messages to disk.
+ </fo:block></fo:block><fo:block id="Java-Broker-Runtime-Memory-Tuning"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><f [...]
+ Most of these options are implementation specific. It is assumed you are using Oracle Java 11.
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e9571"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9572"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list [...]
+ Heap and direct memory can be configured through the <fo:basic-link internal-destination="Java-Broker-Appendix-Environment-Variables-Qpid-Java-Mem"><fo:inline><fo:inline font-family="monospace">QPID_JAVA_MEM</fo:inline> environment variable</fo:inline></fo:basic-link>.
+ </fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block></fo:block><fo:block id="d0e9580"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="14.39 [...]
+ The system property <fo:inline font-family="monospace">qpid.broker.bdbTotalCacheSize</fo:inline> sets the total amount of heap memory (in bytes) allocated to BDB caches.
+ </fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9589"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>
+ The system property <fo:inline font-family="monospace">broker.flowToDiskThreshold</fo:inline> sets the threshold (in bytes) for flowing transient messages to disk.
+ Should the broker use more than direct memory it will flow incoming messages to disk.
+ Should utilisation fall beneath the threshold it will stop flowing messages to disk.
+ </fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9594"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>
+ The system property <fo:inline font-family="monospace">connection.maxUncommittedInMemorySize</fo:inline> sets the threshold (in bytes)
+ for total messages sizes (in bytes) from connection uncommitted transactions when messages are hold in memory.
+ If threshold is exceeded, all messages from connection in-flight transactions are flowed to disk including
+ those arriving after breaching the threshold.
+ </fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block id="d0e9599"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align= [...]
+ We developed a simple formula which estimates the <fo:inline font-style="italic">minimum</fo:inline> memory usage of the broker under certain usage.
+ These are rough estimate so we strongly recommend testing your configuration extensively.
+ Also, if your machine has more memory available by all means use more memory as it can only improve the performance and stability of your broker.
+ However, remember that both heap and direct memory are served from your computer's physical memory so their sum should never exceed the physically available RAM (minus what other processes use).
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ <fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" id="d0e9609"><fo:inline>
+ memory<fo:inline font-size="75%" baseline-shift="sub">heap</fo:inline> = 15 MB + 20 kB * N<fo:inline font-size="75%" baseline-shift="sub">sessions</fo:inline> + (1.7 kB + (120 + averageSize<fo:inline font-size="75%" baseline-shift="sub">headerNameAndValue</fo:inline> ) * averageNumber<fo:inline font-size="75%" baseline-shift="sub">headers</fo:inline>)* N<fo:inline font-size="75%" baseline-shift="sub">messages</fo:inline> + 100 kB * N<fo:inline font-size="75%" baseline-shift=" [...]
+ </fo:inline></fo:block>
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ <fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" id="d0e9633"><fo:inline>
+ memory<fo:inline font-size="75%" baseline-shift="sub">direct</fo:inline> = 2 MB + (200 B + averageSize<fo:inline font-size="75%" baseline-shift="sub">msg</fo:inline> *2)* N<fo:inline font-size="75%" baseline-shift="sub">messages</fo:inline> + 1MB * N<fo:inline font-size="75%" baseline-shift="sub">connections</fo:inline>
+ </fo:inline></fo:block>
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Where <fo:inline>N</fo:inline> denotes the total number of connections/sessions/messages on the broker. Furthermore, for direct memory only the messages that have not been flowed to disk are relevant.
+ </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e9654"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The formulae assume the worst case in terms of memory usage: persistent messages and TLS connections. [...]
+ connections.
+ </fo:block></fo:block></fo:block></fo:block><fo:block id="d0e9657"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><f [...]
+ Choosing a smaller direct memory size will lower the threshold for flowing transient messages to disk when messages accumulate on a queue.
+ This can have impact on performance in the transient case where otherwise no disk I/O would be involved.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Having too little heap memory will result in poor performance due to frequent garbage collection events. See <fo:basic-link internal-destination="Java-Broker-Runtime-Memory-Low-Memory"><fo:inline>Section 9.11.4, “Low Memory Conditions”</fo:inline></fo:basic-link> for more details.
+ </fo:block></fo:block><fo:block id="d0e9669"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-indent="0pt"><fo:block font-size="12p [...]
+ Choosing too low heap memory can cause an OutOfMemoryError which will force the broker to shut down.
+ In this sense the available heap memory puts a hard limit on the number of messages you can have in the broker at the same time.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ If the Java runs out of direct memory it also throws a OutOfMemoryError resulting the a broker shutdown.
+ Under normal circumstances this should not happen but needs to be considered when deviating from the default configuration, especially when changing the flowToDiskThreshold.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ If you are sending very large messages you should accommodate for this by making sure you have enough direct memory.
+ </fo:block></fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Runtime-Instrumentation"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" t [...]
+ can be used to replace <fo:inline font-family="monospace">method.invoke()</fo:inline> reflection calls with static final
+ <fo:inline font-family="monospace">MethodHandle.invokeExact()</fo:inline>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">To use instrumentation agent following JVM argument should be added to the broker start parameters:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" [...]
+ service such as a Message Broker available so that should a service unexpectedly fail, or
+ requires to be shutdown for maintenance, users may quickly connect to another instance and
+ continue their work with minimal interruption. HA is one way to make a overall system more
+ resilient by eliminating a single point of failure from a system.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">HA offerings are usually categorised as <fo:inline font-weight="bold">Active/Active</fo:inline> or
+ <fo:inline font-weight="bold">Active/Passive</fo:inline>. An Active/Active system is one where all
+ nodes within the group are usually available for use by clients all of the time. In an
+ Active/Passive system, one only node within the group is available for use by clients at any
+ one time, whilst the others are in some kind of standby state, awaiting to quickly step-in in
+ the event the active node becomes unavailable. </fo:block></fo:block><fo:block id="Java-Broker-High-Availability-OverviewOfHA"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-befor [...]
+ When using HA, many instances of the Broker work together to form an high availability group of two or more nodes.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The remainder of this section now talks about the specifics of how HA is achieved in terms
+ of the <fo:basic-link internal-destination="Java-Broker-Concepts"><fo:inline>concepts</fo:inline></fo:basic-link> introduced earlier in this
+ book.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:basic-link internal-destination="Java-Broker-Concepts-Virtualhosts"><fo:inline>Virtualhost</fo:inline></fo:basic-link> is the unit of
+ replication. This means that any <fo:inline font-style="italic">durable</fo:inline> queues, exchanges, and bindings
+ belonging to that virtualhost, any <fo:inline font-style="italic">persistent</fo:inline> messages contained within
+ the queues and any attribute settings applied to the virtualhost itself are automatically
+ replicated to all nodes within the group.<fo:footnote><fo:inline><fo:inline font-family="serif,Symbol,ZapfDingbats" font-size="75%" font-weight="normal" font-style="normal" baseline-shift="super">1</fo:inline></fo:inline><fo:footnote-body font-family="serif,Symbol,ZapfDingbats" font-size="8pt" font-weight="normal" font-style="normal" text-align="justify" start-indent="0pt" end-indent="0pt" text-indent="0pt" hyphenate="true" wrap-option="wrap" linefeed-treatment="treat-as-space"><fo [...]
+ (from different Broker instances) that join together to form a group. The virtualhost nodes
+ collectively to coordinate the group: they organise replication between the master and
+ replicas and conduct elections to determine who becomes the new master in the event of the old
+ failing.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When a virtualhost node is in the <fo:inline font-style="italic">master</fo:inline> role, the virtualhost
+ beneath it is available for messaging work. Any write operations sent to the virtualhost are
+ automatically replicated to all other nodes in group.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When a virtualhost node is in the <fo:inline font-style="italic">replica</fo:inline> role, the virtualhost
+ beneath it is always unavailable for message work. Any attempted connections to a virtualhost
+ in this state are automatically turned away, allowing a messaging client to discover where the
+ master currently resides. When in replica role, the node sole responsibility is to consume a
+ replication stream in order that it remains up to date with the master.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Messaging clients discover the active virtualhost.This can be achieved using a static
+ technique (for instance, a failover url (a feature of the Apache Qpid JMS and Apache Qpid JMS AMQP 0-x clients),
+ or a dynamic one utilising some kind of proxy or virtual IP (VIP).</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The figure that follows illustrates a group formed of three virtualhost nodes from three
+ separate Broker instances. A client is connected to the virtualhost node that is in the master
+ role. The two virtualhost nodes <fo:inline font-family="monospace">weather1</fo:inline> and <fo:inline font-family="monospace">weather3</fo:inline>
+ are replicas and are receiving a stream of updates.</fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="Java-Broker-High-Availability-OverviewOfHA-Figure"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-afte [...]
+ this leverages the HA capabilities of the Berkeley DB JE edition.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e9784"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The HA solution from the Apache Qpid [...]
+ Broker. It is not possible to co-locate Qpid Broker-J and CPP Brokers within the same group.</fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-High-Availability-CreatingGroup"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" [...]
+ first creating the first node standalone, then creating subsequent nodes referencing the first
+ node so the nodes can introduce themselves and gradually the group is built up.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A group is created through either <fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console"><fo:inline>Web Management</fo:inline></fo:basic-link>
+ or the <fo:basic-link internal-destination="Java-Broker-Management-Channel-REST-API"><fo:inline>REST API</fo:inline></fo:basic-link>
+ or the initial configuration (<fo:basic-link internal-destination="Java-Broker-Appendix-BDB-HA-initial-configuration"><fo:inline>Appendix H, <fo:inline font-style="italic">BDB HA initial configuration</fo:inline></fo:inline></fo:basic-link>
+ illustrates how to use initial configuration for BDB HA group creation).
+ These instructions presume you are using Web Management. To illustrate the example it builds the group
+ illustrated in figure <fo:basic-link internal-destination="Java-Broker-High-Availability-OverviewOfHA-Figure"><fo:inline>Figure 10.1, “3-node group deployed across three Brokers.”</fo:inline></fo:basic-link></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum [...]
+ clients will need to be able to connect to and authentication to all Brokers, it usually
+ makes sense to choose a common authentication mechanism e.g. Simple LDAP Authentication,
+ External with SSL client authentication or Kerberos.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9808"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Select one Broker instance to host the first node instance. This choice is an
+ arbitrary one. The node is special only whilst creating group. Once creation is
+ complete, all nodes will be considered equal.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9811"><fo:list-item-label end-indent="label-end()"><fo:block>3.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Click the <fo:inline font-family="monospace">Add</fo:inline> button on the Virtualhost Panel on the Broker
+ tab.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ <fo:list-block provisional-label-separation="0.2em" provisional-distance-between-starts="1.2em" id="d0e9819"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9820"><fo:list-item-label end-indent="label-end()"><fo:block>a.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Give the Virtualhost node a unique name e.g. <fo:inline font-family="monospace">weather1</fo:inline>. The
+ name must be unique within the group and unique to that Broker. It is best if the
+ node names are chosen from a different nomenclature than the machine names
+ themselves.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9826"><fo:list-item-label end-indent="label-end()"><fo:block>b.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Choose <fo:inline font-family="monospace">BDB_HA</fo:inline> and select <fo:inline font-family="monospace">New group</fo:inline>
+ </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9835"><fo:list-item-label end-indent="label-end()"><fo:block>c.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Give the group a name e.g. <fo:inline font-family="monospace">weather</fo:inline>. The group name must be
+ unique and will be the name also given to the virtualhost, so this is the name the
+ messaging clients will use in their connection url.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9841"><fo:list-item-label end-indent="label-end()"><fo:block>d.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Give the address of this node. This is an address on this node's host that
+ will be used for replication purposes. The hostname <fo:inline font-style="italic">must</fo:inline> be
+ resolvable by all the other nodes in the group. This is separate from the address
+ used by messaging clients to connect to the Broker. It is usually best to choose a
+ symbolic name, rather than an IP address.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9847"><fo:list-item-label end-indent="label-end()"><fo:block>e.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Now add the node addresses of all the other nodes that will form the group. In
+ our example we are building a three node group so we give the node addresses of
+ <fo:inline font-family="monospace">chaac:5000</fo:inline> and <fo:inline font-family="monospace">indra:5000</fo:inline>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9856"><fo:list-item-label end-indent="label-end()"><fo:block>f.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Click Add to create the nod [...]
+ virtualhost. As there is only one node at this stage, the role will be
+ master.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ <fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e9860"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-co [...]
+ </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9870"><fo:list-item-label end-indent="label-end()"><fo:block>4.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Now move to the second Broker to be the group. Click the <fo:inline font-family="monospace">Add</fo:inline>
+ button on the Virtualhost Panel on the Broker tab of the second Broker.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ <fo:list-block provisional-label-separation="0.2em" provisional-distance-between-starts="1.2em" id="d0e9878"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9879"><fo:list-item-label end-indent="label-end()"><fo:block>a.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Give the Virtualhost node a unique name e.g.
+ <fo:inline font-family="monospace">weather2</fo:inline>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9885"><fo:list-item-label end-indent="label-end()"><fo:block>b.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Choose <fo:inline font-family="monospace">BDB_HA</fo:inline> and choose <fo:inline font-famil [...]
+ </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9894"><fo:list-item-label end-indent="label-end()"><fo:block>c.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Give the details of the <fo:inline font-style="italic">existing node</fo:inline>. Following our
+ example, specify <fo:inline font-family="monospace">weather</fo:inline>, <fo:inline font-family="monospace">weather1</fo:inline> and
+ <fo:inline font-family="monospace">thor:5000</fo:inline></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9908"><fo:list-item-label end-indent="label-end()"><fo:block>d.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Give the address of this node.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo: [...]
+ contact it and introduce itself into the group. At this stage, the group will have
+ two nodes, with the second node in the replica role.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9914"><fo:list-item-label end-indent="label-end()"><fo:block>f.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>Repeat these steps until you have added all the nodes to the group.</fo:block></fo:block></fo:lis [...]
+ <fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e9918"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maximum="0.8em" keep-with-next.within-co [...]
+ </fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The group is now formed and is ready for us. Looking at the virtualhost node of any of the
+ nodes shows a complete view of the whole group. <fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="always" id="d0e9930"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-afte [...]
+ then goes on to talk about the various controls that are available to override it. It
+ describes the controls available that affect the <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/ACID#Durability)"><fo:inline>durability</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/ACID#Durability)">http://en.wikipedia.org/wiki/ACID#Durability</fo:basic-link>]</fo:inline> of transactions and
+ the data consistency between the master and replicas and thus make trade offs between
+ performance and reliability.</fo:block><fo:block id="Java-Broker-High-Availability-Behaviour-Default-Behaviour"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2e [...]
+ <fo:inline font-style="italic">quorum</fo:inline> nodes present. This means for example, in a three node group,
+ this means there must be at least two nodes available.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When a messaging client sends a transaction, it can be assured that, before the control
+ returns back to his application after the commit call that the following is true:</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e9960"><fo:list-item space-b [...]
+ are flushed</fo:inline> meaning the data is on the storage device.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9967"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>At least quorum minus 1 replicas, <fo:inline font-style="italic">acknowledge the receipt of
+ transaction</fo:inline>. The replicas will write the data to the storage device
+ sometime later.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If there were to be a master failure immediately after the transaction was committed,
+ the transaction would be held by at least quorum minus one replicas. For example, if we had
+ a group of three, then we would be assured that at least one replica held the
+ transaction.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In the event of a master failure, if quorum nodes remain, those nodes hold an election.
+ The nodes will elect master the node with the most recent transaction. If two or more nodes
+ have the most recent transaction the group makes an arbitrary choice. If quorum number of
+ nodes does not remain, the nodes cannot elect a new master and will wait until nodes rejoin.
+ You will see later that manual controls are available allow service to be restored from
+ fewer than quorum nodes and to influence which node gets elected in the event of a
+ tie.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Whenever a group has fewer than quorum nodes present, the virtualhost will be
+ unavailable and messaging connections will be refused. If quorum disappears at the very
+ moment a messaging client sends a transaction that transaction will fail.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">You will have noticed the difference in the synchronization policies applied the master
+ and the replicas. The replicas send the acknowledgement back before the data is written to
+ disk. The master synchronously writes the transaction to storage. This is an example of a
+ trade off between durability and performance. We will see more about how to control this
+ trade off later.</fo:block></fo:block><fo:block id="Java-Broker-High-Availability-Behaviour-SynchronizationPolicy"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum= [...]
+ receives a transaction before it acknowledges that transaction to the rest of the
+ group.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following options are available: <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e9991"><fo:list-item space-before.optimum="1em" space-before.minim [...]
+ any OS level buffers before sending the acknowledgement. SYNC is offers the highest
+ durability but offers the least performance.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e9997"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">WRITE_NO_SYNC</fo:inline>. The node must write the transaction to disk
+ before sending the acknowledgement. OS level buffers will be flush as some point
+ later. This typically provides an assurance against failure of the application but not
+ the operating system or hardware.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10002"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">NO_SYNC</fo:inline>. The node immediately sends the acknowledgement. The
+ transaction will be written and OS level buffers flushed as some point later. NO_SYNC
+ offers the highest performance but the lowest durability level. This synchronization
+ policy is sometimes known as <fo:inline font-style="italic">commit to the network</fo:inline>. Flushing
+ behavior can be influenced by virtual host context parameters "qpid.broker.bdbCommiterNotifyThreshold"
+ (defines threshold for amount of messages triggering BDB log flush to the disk) and
+ "qpid.broker.bdbCommiterWaitTimeout" (defines timeout for BDB log flush to the disk).</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">It is possible to assign a one policy to the master and a different policy to the
+ replicas. These are configured as <fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhost-Attributes"><fo:inline>
+ attributes <fo:inline font-style="italic">localTransactionSynchronizationPolicy</fo:inline> and
+ <fo:inline font-style="italic">remoteTransactionSynchronizationPolicy</fo:inline> on the virtualhost</fo:inline></fo:basic-link>.
+ By default the master uses <fo:inline font-style="italic">SYNC</fo:inline> and replicas use
+ <fo:inline font-style="italic">NO_SYNC</fo:inline>.</fo:block></fo:block><fo:block id="Java-Broker-High-Availability-Behaviour-NodePriority"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1. [...]
+ useful in the case were you want to favour some nodes over others. For instance, if you wish
+ to favour nodes located in a particular data centre over those in a remote site. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ A new master is elected among nodes with the most current set of log files. When there is a tie,
+ the priority is used as a tie-breaker to select amongst these nodes.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The node priority is set as an integer value. A priority of zero is used to ensure that a node cannot
+ be elected master, even if it has the most current set of files.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For convenience, the Web Management Console uses user friendly names for the priority integer values
+ in range from 0 to 3 inclusive. The following priority options are available: <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e10038"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10039"><fo:list-item-la [...]
+ the event of two or more nodes having the most recent transaction, the node with this
+ priority will be elected master. If two or more nodes have this priority the algorithm
+ will make an arbitrary choice. The priority value for option <fo:inline font-style="italic">Highest</fo:inline> is <fo:inline font-style="italic">3</fo:inline>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10050"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo [...]
+ much so as those with Highest. The priority value for this option is <fo:inline font-style="italic">2</fo:inline>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10058"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Normal</ [...]
+ The priority value for this option is <fo:inline font-style="italic">1</fo:inline>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10066"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Never</fo:inline>. The node will never [...]
+ node has the most recent transaction</fo:inline>. The node will still keep up to date
+ with the replication stream and will still vote itself, but can just never be
+ elected. The priority value for this option is <fo:inline font-style="italic">0</fo:inline>.</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block>
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Node priority is configured as an <fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhost-Nodes-Attributes"><fo:inline>
+ attribute <fo:inline font-style="italic">priority</fo:inline> on the virtualhost node</fo:inline></fo:basic-link> and can be changed
+ at runtime and is effective immediately.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e10086"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Important</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Use of the Never priority can lead to transaction loss [...]
+ of three where replica-2 is marked as Never. If a transaction were to arrive and it be
+ acknowledged only by Master and Replica-2, the transaction would succeed. Replica 1 is
+ running behind for some reason (perhaps a full-GC). If a Master failure were to occur at
+ that moment, the replicas would elect Replica-1 even though Replica-2 had the most recent
+ transaction.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Transaction loss is reported by message <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-HA-1014"><fo:inline>HA-1014</fo:inline></fo:basic-link>.</fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-High-Availability-Behaviour-MinimumNumberOfNodes"><fo:block><fo:block><fo:block keep-together.within-column="alway [...]
+ elect a new master. By default, the required number of nodes is set to
+ <fo:inline font-style="italic">Default</fo:inline> (which signifies quorum).</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">It is possible to reduce the required minimum number of nodes. The rationale for doing
+ this is normally to temporarily restore service from fewer than quorum nodes following an
+ extraordinary failure.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For example, consider a group of three. If one node were to fail, as quorum still
+ remained, the system would continue work without any intervention. If the failing node were
+ the master, a new master would be elected.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">What if a further node were to fail? Quorum no longer remains, and the remaining node
+ would just wait. It cannot elect itself master. What if we wanted to restore service from
+ just this one node?</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In this case, Required Number of Nodes can be reduced to 1 on the remain node, allowing
+ the node to elect itself and service to be restored from the singleton. Required minimum
+ number of nodes is configured as an <fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhost-Nodes-Attributes"><fo:inline>
+ attribute <fo:inline font-style="italic">quorumOverride</fo:inline> on the virtualhost node</fo:inline></fo:basic-link> and can be changed
+ at runtime and is effective immediately.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e10116"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Important</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The attribute must be used cautiously. Careless use wi [...]
+ can lead to a <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/Split-brain_(computing))"><fo:inline>split-brain</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/Split-brain_(computing))">http://en.wikipedia.org/wiki/Split-brain_(computing)</fo:basic-link>]</fo:inline> in the event of a network partition. If used to temporarily restore
+ service from fewer than quorum nodes, it is <fo:inline font-style="italic">imperative</fo:inline> to revert it
+ to the Default value as the failed nodes are restored.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Transaction loss is reported by message <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-HA-1014"><fo:inline>HA-1014</fo:inline></fo:basic-link>.</fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-High-Availability-Behaviour-DesignatedPrimary"><fo:block><fo:block><fo:b [...]
+ as quorum no longer exists. A single node cannot elect itself master. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:inline font-family="monospace">allow to operate solo</fo:inline> flag allows a node in a two node group to elect itself master and
+ to operate sole. It is configured as an <fo:basic-link internal-destination="Java-Broker-Management-Managing-Virtualhost-Nodes-Attributes"><fo:inline>
+ attribute <fo:inline font-style="italic">designatedPrimary</fo:inline> on the virtualhost node</fo:inline></fo:basic-link> and can be changed
+ at runtime and is effective immediately.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For example, consider a group of two where the master fails. Service will be interrupted
+ as the remaining node cannot elect itself master. To allow it to become master, apply the
+ <fo:inline font-family="monospace">allow to operate solo</fo:inline> flag to it. It will elect itself master and work can continue, albeit
+ from one node.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e10153"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Important</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">It is imperative not to allow the <fo:inline font-family="monospace">allow to op [...]
+ do so will mean, in the event of a network partition, a <fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/Split-brain_(computing))"><fo:inline>split-brain</fo:inline></fo:basic-link><fo:inline hyphenate="false"> [<fo:basic-link external-destination="url(http://en.wikipedia.org/wiki/Split-brain_(computing))">http://en.wikipedia.org/wiki/Split-brain_(computing)</fo:basic-link>]</fo:inline> will
+ occur.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Transaction loss is reported by message <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Message-HA-1014"><fo:inline>HA-1014</fo:inline></fo:basic-link>.</fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-High-Availability-Behaviour-MaximumMessageSize"><fo:block><fo:block><fo:block keep-together.within-column="always" mar [...]
+ Internally, BDB JE HA restricts the maximum size of replication stream records passed from the master
+ to the replica(s). This helps prevent DOS attacks.
+ If expected application maximum message size is greater than 5MB, the BDB JE setting
+ <fo:inline font-family="monospace">je.rep.maxMessageSize</fo:inline> and Qpid context variable <fo:inline font-family="monospace">qpid.max_message_size</fo:inline>
+ needs to be adjusted to reflect this in order to avoid running into the BDB HA JE limit.
+ </fo:block></fo:block></fo:block><fo:block id="Java-Broker-High-Availability-NodeOperations"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="star [...]
+ messaging clients will be disconnected and any in-flight transaction rollbacked. The
+ remaining nodes will elect a new master if quorum number of nodes still remains.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Stopping a replica node will cause the node to temporarily leave the group too.
+ Providing quorum still exists, the current master will continue without interruption. If
+ by leaving the group, quorum no longer exists, all the nodes will begin waiting,
+ disconnecting any messaging clients, and the virtualhost will become unavailable.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A stopped virtualhost node is still considered to be a member of the group.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10197"><fo:list-item-label end-indent="label-end()"><fo [...]
+ become a replica once it has done so.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If the group did not have quorum and so had no master, but the rejoining of this
+ node means quorum now exists, an election will take place. The node with the most up to
+ date transaction will become master unless influenced by the priority rules described
+ above.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e10207"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The length of time taken to catch up will depend on how long the node has been
+ stopped. The worst case is where the node has been stopped for more than one hour. In
+ this case, the master will perform an automated <fo:inline font-family="monospace">network restore</fo:inline>.
+ This involves streaming all the data held by the master over to the replica. This
+ could take considerable time.</fo:block></fo:block></fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10213"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-style="italic">Delete</fo:inline></fo:block><fo:block space-before.optimum="1em" space [...]
+ the group. The data stored locally is removed but this does not affect the data held by
+ the remainder of the group.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" margin-left="0.25in" margin-right="0.25in" id="d0e10219"><fo:block font-size="14pt" font-weight="bold" hyphenate="false" keep-with-next.within-column="always">Note</fo:block><fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The names of deleted virtualhost node cannot be reused within a grou [...]
+ above.</fo:block></fo:block><fo:block id="Java-Broker-High-Availability-NodeOperations-TransferMaster"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text [...]
+ restoring a business as usual state after a failure.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When using this function, the following occurs. <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.2em" id="d0e10231">< [...]
+ date. </fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10235"><fo:list-item-label end-indent="label-end()"><fo:block>2.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>It then suspends transactions on the old master and allows the chosen node to
+ become up to date.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10238"><fo:list-item-label end-indent="label-end()"><fo:block>3.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>The suspended transactions are aborted and any messaging clients connected to the
+ old master are disconnected.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10241"><fo:list-item-label end-indent="label-end()"><fo:block>4.</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block>The chosen master becomes the new master. The old master becomes a replica.</fo:block></fo:block></fo:list-item-body></fo:li [...]
+ virtualhost within the group.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Clients can do this using a static technique, for example , utilising the failover feature of the Apache Qpid
+ JMS and Apache Qpid JMS AMQP 0-x clients where the client has a list of all the nodes, and tries each node in
+ sequence until it discovers the node with the active virtualhost.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Another possibility is a dynamic technique utilising a proxy or Virtual IP (VIP). These
+ require other software and/or hardware and are outside the scope of this document.</fo:block></fo:block><fo:block id="Java-Broker-High-Availability-DiskSpace"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-be [...]
+ for them to allow them to return to the replica role quickly.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">By default, the master will retain up to 1hour of missed transactions. In a busy
+ production system, the disk space occupied could be considerable.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This setting is controlled by virtualhost context variable
+ <fo:inline font-family="monospace">je.rep.repStreamTimeout</fo:inline>.</fo:block></fo:block><fo:block id="Java-Broker-High-Availability-Network-Requirements"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space- [...]
+ and quality of service.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In order to achieve the best performance it is recommended to use a separate network
+ infrastructure for the Qpid HA Nodes which might include installation of dedicated network
+ hardware on Broker hosts, assigning a higher priority to replication ports, installing a group
+ in a separate network not impacted by any other traffic.</fo:block></fo:block><fo:block id="Java-Broker-High-Availability-Security"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space- [...]
+ intercepted by anyone having access to the replication network.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In order to reduce the security risks the entire HA group is recommended to run in a
+ separate network protected from general access and/or utilise SSH-tunnels/IPsec.</fo:block></fo:block><fo:block id="Java-Broker-High-Availability-Backup"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before. [...]
+ group. <fo:basic-link internal-destination="Java-Broker-Backup-And-Recovery-Virtualhost-Node-BDB-HA"><fo:inline>Section 11.2.2, “BDB-HA”</fo:inline></fo:basic-link>.</fo:block></fo:block><fo:block id="Java-Broker-High-Availability-Reset-Group-Infomational"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingba [...]
+ circumstances when resetting this information is useful.<fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e10294"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10295"><fo:list-item-label end-indent="label-en [...]
+ hardware</fo:block></fo:block></fo:list-item-body></fo:list-item></fo:list-block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This is not an normal operation and is not usually required</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following command replaces the group table contained within the JE logs files with the
+ provided information. </fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e10305"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum="0.4em" space-after.optimum="0.6em" space-after.maxi [...]
+ <fo:inline font-family="monospace">${QPID_WORK}/<nodename>/config</fo:inline> directory of a target Broker. Then
+ start the Broker, and add a BDB HA Virtualhost node specify the same group name, node name and
+ node address. You will then have a group with a single node, ready to start re-adding
+ additional nodes as described above. </fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="body" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfD [...]
+ exist beneath <fo:inline font-family="monospace">${QPID_WORK}</fo:inline>, assuming all virtualhost nodes and virtualhost
+ are in their standard location, this will copy all configuration and persistent message data. </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">There is currently no safe mechanism to take a complete copy of the entire Broker whilst
+ it is running.</fo:block></fo:block><fo:block id="Java-Broker-Backup-And-Recovery-Virtualhost-Node"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-alig [...]
+ simply copy all the files the exist beneath
+ <fo:inline font-family="monospace">${QPID_WORK}/<nodename>/config</fo:inline>, assuming the virtualhost node is in
+ the standard location. This will copy all configuration that belongs to that virtualhost
+ node.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The technique for backing up a virtualhost node whilst it is running depends on its
+ type.</fo:block><fo:block id="Java-Broker-Backup-And-Recovery-Virtualhost-Node-BDB"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start- [...]
+ This utility can perform the backup when the broker is running.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">You can run this class from command line like in an example below:</fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e10373"><fo:bl [...]
+ directly</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"><fo:inline font-family="monospace">java</fo:inline> -cp <fo:inline font-family="monospace" font-style="italic">"${QPID_HOME}/lib/*"</fo:inline> org.apache.qpid.server.store.berkeleydb.BDBBackup \ <fo:block/> -fromdir <fo:inline font-family="monospace" font-style="italic">${QPID_WORK}/<nodename>/config</fo:inline> -todir <fo:inline font-family="monospace [...]
+ <fo:inline font-family="monospace">${QPID_WORK}/<nodename>/config</fo:inline> and copy store logs into
+ <fo:inline font-family="monospace">path/to/backup/folder</fo:inline>.</fo:block></fo:block><fo:block id="Java-Broker-Backup-And-Recovery-Virtualhost-Node-BDB-HA"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" s [...]
+ documentation accompanying it. Any technique that takes a consistent snapshot of the
+ database is acceptable.</fo:block></fo:block><fo:block id="Java-Broker-Backup-And-Recovery-Virtualhost-Node-JSON"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum=" [...]
+ command line tools.</fo:block></fo:block></fo:block><fo:block id="Java-Broker-Backup-And-Recovery-Virtualhost"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2 [...]
+ simply copy all the files the exist beneath
+ <fo:inline font-family="monospace">${QPID_WORK}/<name>/messages</fo:inline>, assuming the virtualhost is in the
+ standard location. This will copy all messages that belongs to that virtualhost.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The technique for backing up a virtualhost whilst it is running depends on its
+ type.</fo:block><fo:block id="Java-Broker-Backup-And-Recovery-Virtualhost-BDB"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-inden [...]
+ <fo:inline font-family="monospace">${QPID_WORK}/<name>/messages</fo:inline> instead.</fo:block></fo:block><fo:block id="Java-Broker-Backup-And-Recovery-Virtualhost-Derby"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.mi [...]
+ documentation accompanying it. Any technique that takes a consistent snapshot of the
+ database is acceptable.</fo:block></fo:block><fo:block id="Java-Broker-Backup-And-Recovery-Virtualhost-Provided"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1 [...]
+ contains it.</fo:block></fo:block><fo:block id="Java-Broker-Backup-And-Recovery-Virtualhost-BDBHA"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-ali [...]
+ contains it.</fo:block></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="back" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" mar [...]
+ contained within the <fo:inline font-family="monospace">/bin</fo:inline> directory within the Broker distribution.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">To take effect, these variables must be set within the shell (and exported - if using Unix)
+ before invoking the script.</fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e10478"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" s [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">None</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The variable used to tell the Broker its installation directory. It must be an
+ absolute path. This is used to determine the location of Qpid's dependency JARs and
+ some configuration files.</fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Typically the value of this variable will look similar to
+ <fo:inline font-family="monospace">c:\qpid\qpid-broker\\9.0.0</fo:inline> (Windows) or
+ <fo:inline font-family="monospace">/usr/local/qpid/qpid-broker/9.0.0</fo:inline> (Unix). The
+ installation prefix will differ from installation to installation. </fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If not set, a value for <fo:inline font-family="monospace">QPID_HOME</fo:inline> is derived from the location
+ of the script itself.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Environment-Variables-Qpid-Work"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>QPID_WORK</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">User's home directory</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Used as the default root directory for any data written by the Broker. This is the
+ default location for any message data written to persistent stores and the Broker's
+ log file.</fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For example, <fo:inline font-family="monospace">QPID_WORK=/var/qpidwork</fo:inline>.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Environment-Variables-Qpid-Opts"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>QPID_OPTS</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">None</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This is the preferred mechanism for passing <fo:basic-link internal-destination="Java-Broker-Appendix-System-Properties"><fo:inline>Java system properties</fo:inline></fo:basic-link> to the
+ Broker. The value must be a list of system properties each separate by a space.
+ <fo:inline font-family="monospace">-D<fo:inline font-family="monospace" font-style="italic">name1</fo:inline>=<fo:inline font-family="monospace" font-style="italic">value1</fo:inline>
+ -D<fo:inline font-family="monospace" font-style="italic">name2</fo:inline>=<fo:inline font-family="monospace" font-style="italic">value2</fo:inline></fo:inline>.
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Environment-Variables-Qpid-Java-Gc"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>QPID_JAVA_GC</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top= [...]
+ <fo:inline font-family="monospace">-XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC</fo:inline>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This is the preferred mechanism for customising garbage collection behaviour. The
+ value should contain valid garbage collection options(s) for the target JVM.</fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Refer to the JVM's documentation for details.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Environment-Variables-Qpid-Java-Mem"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>QPID_JAVA_MEM</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-to [...]
+ <fo:inline font-family="monospace">-Xmx512m -XX:MaxDirectMemorySize=1536m</fo:inline>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This is the preferred mechanism for customising the size of the JVM's heap and
+ direct memory.
+ The value should contain valid memory option(s) for the target JVM. Oracle JVMs
+ understand <fo:inline font-family="monospace">-Xmx</fo:inline> to specify a maximum heap size,
+ <fo:inline font-family="monospace">-Xms</fo:inline> an initial size, and
+ <fo:inline font-family="monospace">-XX:MaxDirectMemorySize</fo:inline> for the maximum amount of direct
+ memory.</fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For example, <fo:inline font-family="monospace">QPID_JAVA_MEM="-Xmx6g -XX:MaxDirectMemorySize=12g"</fo:inline> would
+ set a maximum heap size of 6GB and 12GB of direct memory.</fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Refer to the JVM's documentation for details.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Environment-Variables-Java-Opts"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>JAVA_OPTS</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-co [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This is the preferred mechanism for passing any other JVM options. This variable is
+ commonly used to pass options for diagnostic purposes, for instance to turn on verbose
+ GC. <fo:inline font-family="monospace">-verbose:gc</fo:inline>.</fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Refer to the JVM's documentation for details.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="back" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:b [...]
+ various optional behaviours.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The preferred method of enabling these system properties is using the <fo:basic-link internal-destination="Java-Broker-Appendix-Environment-Variables-Qpid-Opts"><fo:inline><fo:inline font-family="monospace">QPID_OPTS</fo:inline></fo:inline></fo:basic-link> environment variable described in the previous
+ section.</fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e10646"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after.minimum= [...]
+ received from the peer before a connection is deemed to have been broken.</fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-System-Properties-Broker-Status-Updates"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>qpid.broker_status_updat [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If set true, the Broker will produce operational logging messages.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-System-Properties-Broker-Disabled-Features"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>qpid.broker_disabled_features</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border- [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Allows optional Broker features to be disabled. Currently understood feature
+ names are: <fo:inline font-family="monospace">qpid.jms-selector</fo:inline></fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Feature names should be comma separated.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="back" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:b [...]
+ the lives of objects within the Broker. These concise messages are designed to allow the user to
+ understand the actions of the Broker in retrospect. This is valuable for problem diagnosis and
+ provides a useful audit trail.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Each log message includes details of the entity causing the action (e.g. a management user
+ or messaging client connection), the entity receiving the action (e.g. a queue or connection)
+ and a description of operation itself.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The log messages have the following format:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-tr [...]
+ [<fo:inline font-family="monospace">Actor</fo:inline>] {[<fo:inline font-family="monospace">Subject</fo:inline>]} [<fo:inline font-family="monospace">Message Id</fo:inline>] [<fo:inline font-family="monospace">Message Text</fo:inline>]
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Where:</fo:block><fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e10720"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum [...]
+ <fo:inline font-style="italic">performing</fo:inline> the action. There are actors corresponding to the Broker
+ itself, Management, Connection, and Channels. Their format is described in the <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Actor-Format"><fo:inline>table</fo:inline></fo:basic-link> below.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10732"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:li [...]
+ <fo:inline font-style="italic">receiving</fo:inline> the action. There are subjects corresponding to the
+ Connections, Channels, Queues, Exchanges, Subscriptions, and Message Stores. Their format is
+ described in the <fo:basic-link internal-destination="Java-Broker-Appendix-Operation-Logging-Subject-Format"><fo:inline>table</fo:inline></fo:basic-link> below.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Some actions are reflexive, in these cases the Actor and Subject will be equal.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before [...]
+ three alphas and four digits separated by a hyphen <fo:inline font-family="monospace">AAA-9999</fo:inline>.</fo:block></fo:block></fo:list-item-body></fo:list-item><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e10753"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block><fo:block><fo:inline font-family="monospace">Message Text</fo: [...]
+ connection actor (<fo:inline font-family="monospace">con</fo:inline>) provides us with details of the peer's connection: the
+ user id used by the client (myapp1), their IP, ephemeral port number and the name of the virtual
+ host. The message text itself gives us further details about the connection: the client id, the
+ protocol version in used, and details of the client's qpid library.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e10768">[con:8(myapp1@/127.0.0.1:52851/default)] CON [...]
+ <fo:inline font-family="monospace">con</fo:inline> tells us details of the connection performing the queue creation: the
+ user id used by the client (myapp1), the IP, ephemeral port number and the name of the virtual
+ host. The queue subject tells use the queue's name (myqueue) and the virtualhost. The message
+ itself tells us more information about the queue that is being created. </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e10778">[con:8(myapp1@/127.0.0.1:52851/default) [...]
+ provide a complete catalogue of all supported messages.</fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Actor-Format"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before. [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Used during startup and shutdown</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>Management</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-botto [...]
+ [mng:<fo:inline font-family="monospace" font-style="italic">userid</fo:inline>(<fo:inline font-family="monospace" font-style="italic">clientip</fo:inline>:<fo:inline font-family="monospace" font-style="italic">ephemeralport</fo:inline>)] </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Used for operations performed by the Web Management interfaces.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>Connection</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-botto [...]
+ [con:<fo:inline font-family="monospace" font-style="italic">connectionnumber</fo:inline>(<fo:inline font-family="monospace" font-style="italic">userid</fo:inline>@/<fo:inline font-family="monospace" font-style="italic">clientip</fo:inline>:<fo:inline font-family="monospace" font-style="italic">ephemeralport</fo:inline>/<fo:inline font-family="monospace" font-style="italic">virtualhostname</fo:inline>)]</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell pa [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Used for operations performed by a client connection. Note that connections are
+ numbered by a sequence number that begins at 1.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>Channel</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-w [...]
+ [con:<fo:inline font-family="monospace" font-style="italic">connectionnumber</fo:inline>(<fo:inline font-family="monospace" font-style="italic">userid</fo:inline>@/<fo:inline font-family="monospace" font-style="italic">clientip</fo:inline>:<fo:inline font-family="monospace" font-style="italic">ephemeralport</fo:inline>/<fo:inline font-family="monospace" font-style="italic">virtualhostname</fo:inline>/ch:<fo:inline font-family="monospace" font-style="italic">channelnumber</f [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Used for operations performed by a client's channel (corresponds to the JMS
+ concept of Session). Note that channels are numbered by a sequence number that is
+ scoped by the owning connection.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>Group</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> [grp(/ [...]
+ name</fo:inline>)]</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Used for HA. Used for operations performed by the system itself often as a result
+ of actions performed on another node..</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Subject-Format"><fo:block space-before.optimum="1em" space-bef [...]
+ [con:<fo:inline font-family="monospace" font-style="italic">connectionnumber</fo:inline>(<fo:inline font-family="monospace" font-style="italic">userid</fo:inline>@/<fo:inline font-family="monospace" font-style="italic">clientip</fo:inline>:<fo:inline font-family="monospace" font-style="italic">ephemeralport</fo:inline>/<fo:inline font-family="monospace" font-style="italic">virtualhostname</fo:inline>)]</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell pa [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A connection to the Broker.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>Channel</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-w [...]
+ [con:<fo:inline font-family="monospace" font-style="italic">connectionnumber</fo:inline>(<fo:inline font-family="monospace" font-style="italic">userid</fo:inline>@/<fo:inline font-family="monospace" font-style="italic">clientip</fo:inline>:<fo:inline font-family="monospace" font-style="italic">ephemeralport</fo:inline>/<fo:inline font-family="monospace" font-style="italic">virtualhostname</fo:inline>/ch:<fo:inline font-family="monospace" font-style="italic">channelnumber</f [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A client's channel within a connection.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>Subscription</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bot [...]
+ [sub:<fo:inline font-family="monospace" font-style="italic">subscriptionnumber</fo:inline>(vh(/<fo:inline font-family="monospace" font-style="italic">virtualhostname</fo:inline>)/qu(<fo:inline font-family="monospace" font-style="italic">queuename</fo:inline>)]</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom- [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A subscription to a queue. This corresponds to the JMS concept of a
+ Consumer.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>Queue</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-wid [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A queue on a virtualhost</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>Exchange</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom- [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">An exchange on a virtualhost</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>Binding</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-w [...]
+ [vh(/<fo:inline font-family="monospace" font-style="italic">virtualhostname</fo:inline>)/ex(<fo:inline font-family="monospace" font-style="italic">exchangetype</fo:inline>/<fo:inline font-family="monospace" font-style="italic">exchangename</fo:inline>)/qu(<fo:inline font-family="monospace" font-style="italic">queuename</fo:inline>)/rk(<fo:inline font-family="monospace" font-style="italic">bindingkey</fo:inline>)]</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:ta [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A binding between a queue and exchange with the giving binding key.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>Message Store</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bo [...]
+ [vh(/<fo:inline font-family="monospace" font-style="italic">virtualhostname</fo:inline>)/ms(<fo:inline font-family="monospace" font-style="italic">messagestorename</fo:inline>)]</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A virtualhost/message store on the Broker.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>HA Group</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block> [gr [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A HA group</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The following tables lists all the operation log messages that can be produced by the
+ Broker, and the describes the circumstances under which each may be seen.</fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-Broker"><fo:block space-before.optimum="1em" space-before.mini [...]
+ <fo:inline font-family="monospace" font-style="italic">build</fo:inline>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the Broker is starting up</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BRK-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:inline font-family="monospace" font-style="italic">portnumber</fo:inline>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the Broker has begun listening on a port.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1003"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BRK-1003</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:inline font-family="monospace" font-style="italic">portnumber</fo:inline>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the Broker has stopped listening on a port.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1004"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BRK-1004</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the Broker is ready for normal operations.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1005"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BRK-1005</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the Broker is stopped.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1006"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BRK-1006</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates the name of the configuration store in use by the Broker.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1008"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BRK-1008</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ kB/s peak : <fo:inline font-family="monospace" font-style="italic">size</fo:inline> bytes total</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Statistic - bytes delivered or received by the Broker.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1009"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BRK-1009</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ msg/s peak : <fo:inline font-family="monospace" font-style="italic">size</fo:inline> msgs total</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Statistic - messages delivered or received by the Broker.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1010"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BRK-1010</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ </fo:inline> OS : <fo:inline font-family="monospace" font-style="italic">operating system vendor</fo:inline> version:
+ <fo:inline font-family="monospace" font-style="italic">operating system version</fo:inline>} arch: <fo:inline font-family="monospace" font-style="italic">processor
+ architecture</fo:inline> cores: <fo:inline font-family="monospace" font-style="italic">number of CPU cores</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Key information about the environment hosting the Broker</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1011"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BRK-1011</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ bytes</fo:inline> size</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Configured memory paramters for the Broker.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1012"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BRK-1012</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:inline font-family="monospace" font-style="italic">management mode password</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Used when Broker is started in management mode to indicate the
+ management credentials that may be used connect to the Broker.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1016"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BRK-1016</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that broker was shut down due to fatal error.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1017"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BRK-1017</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Process identifier (PID) of the Broker process.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1018"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BRK-1018</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bo [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the named operation has been invoked</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-Management"><fo:block space-before.optimum="1em" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a Management plugin is starting up. Supported by Web management plugin.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MNG-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MNG-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:inline font-family="monospace" font-style="italic">port</fo:inline>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a Management plugin is listening on the given port.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MNG-1003"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MNG-1003</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:inline font-family="monospace" font-style="italic">port</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a Management plugin is ceasing to listen on the given port.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MNG-1004"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MNG-1004</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a Management plugin is ready for work.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MNG-1005"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MNG-1005</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a Management plugin is stopped.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MNG-1007"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MNG-1007</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates the opening of a connection to Management has by the given
+ username.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MNG-1008"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MNG-1008</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bo [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates the closing of a connection to Management has by the given
+ username.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-VirtualHost"><fo:block space-before.optimum="1em" [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a virtualhost has been created.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-VHT-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>VHT-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a virtualhost has been closed. This occurs on Broker
+ shutdown.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-VHT-1005"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>VHT-1005</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Virtualhost has suffered an unexpected fatal error, check the logs for more
+ details.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-VHT-1006"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>VHT-1006</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that virtual host flow control is activated
+ when the usage of file system containing Virtualhost message store exceeded predefined limit.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-VHT-1007"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>VHT-1007</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that virtual host flow control is deactivated
+ when the usage of file system containing Virtualhost message falls under predefined limit.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-VHT-1008"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>VHT-1008</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bo [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the named operation has been invoked</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-Queue"><fo:block space-before.optimum="1em" space [...]
+ <fo:inline font-family="monospace" font-style="italic">AutoDelete</fo:inline> [<fo:inline font-family="monospace" font-style="italic">Durable</fo:inline>]
+ <fo:inline font-family="monospace" font-style="italic">Transient</fo:inline> Priority:
+ <fo:inline font-family="monospace" font-style="italic">numberofpriorities</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a queue has been created.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-QUE-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>QUE-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a queue has been deleted.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-QUE-1003"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>QUE-1003</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ Overfull : Size : <fo:inline font-family="monospace" font-style="italic">size in bytes</fo:inline>, Capacity : <fo:inline font-family="monospace" font-style="italic">resumesize in bytes</fo:inline>,
+ Messages : <fo:inline font-family="monospace" font-style="italic">size in messages</fo:inline>, Message Capacity : <fo:inline font-family="monospace" font-style="italic">resumesize in messages</fo:inline>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a queue has exceeded its permitted capacity when
+ <fo:inline font-style="italic">Producer Flow Control</fo:inline> overflow policy is used.
+ See <fo:basic-link internal-destination="Java-Broker-Concepts-Queue-OverflowPolicy"><fo:inline>Section 4.7.5, “Controlling Queue Size”</fo:inline></fo:basic-link> for details.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-QUE-1004"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>QUE-1004</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ Underfull : Size : <fo:inline font-family="monospace" font-style="italic">size in bytes</fo:inline>, Capacity : <fo:inline font-family="monospace" font-style="italic">resumesize in bytes</fo:inline>,
+ Messages : <fo:inline font-family="monospace" font-style="italic">size in messages</fo:inline>, Message Capacity : <fo:inline font-family="monospace" font-style="italic">resumesize in messages</fo:inline>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Indicates that a queue has fallen to its resume capacity when
+ <fo:inline font-style="italic">Producer Flow Control</fo:inline> overflow policy is used.
+ See <fo:basic-link internal-destination="Java-Broker-Concepts-Queue-OverflowPolicy"><fo:inline>Section 4.7.5, “Controlling Queue Size”</fo:inline></fo:basic-link> for details.
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-QUE-1005"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>QUE-1005</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ Dropped : <fo:inline font-family="monospace" font-style="italic">number</fo:inline> messages, Depth : <fo:inline font-family="monospace" font-style="italic">size</fo:inline> bytes,
+ <fo:inline font-family="monospace" font-style="italic">size</fo:inline> messages, Capacity : <fo:inline font-family="monospace" font-style="italic">limit</fo:inline> bytes,
+ <fo:inline font-family="monospace" font-style="italic">limit</fo:inline> messages
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Indicates that a given number of messages is deleted when <fo:inline font-style="italic">Ring</fo:inline> overflow policy is
+ used and any of queue capacity limits is breached .
+ See <fo:basic-link internal-destination="Java-Broker-Concepts-Queue-OverflowPolicy"><fo:inline>Section 4.7.5, “Controlling Queue Size”</fo:inline></fo:basic-link> for details.
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-QUE-1016"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>QUE-1016</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bo [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the named operation has been invoked</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-Exchange"><fo:block space-before.optimum="1em" sp [...]
+ Name: <fo:inline font-family="monospace" font-style="italic">exchange name</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that an exchange has been created.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-EXH-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>EXH-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that an exchange has been deleted.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-EXH-1003"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>EXH-1003</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:inline font-family="monospace" font-style="italic">routing key</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that an exchange received a message that could not be routed to at least
+ one queue. queue has exceeded its permitted capacity. See <fo:basic-link internal-destination="Java-Broker-Concepts-Exchanges-UnroutableMessage"><fo:inline>Section 4.6.4, “Unrouteable Messages”</fo:inline></fo:basic-link> for details.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-EXH-1004"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>EXH-1004</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bo [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the named operation has been invoked</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-Binding"><fo:block space-before.optimum="1em" spa [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a binding has been made between an exchange and a queue.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-BND-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>BND-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bo [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a binding has been deleted</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-Connection"><fo:block space-before.optimum="1em" [...]
+ <fo:inline font-family="monospace" font-style="italic">protocol version</fo:inline> : Client ID : <fo:inline font-family="monospace" font-style="italic">clientid</fo:inline> :
+ Client Version : <fo:inline font-family="monospace" font-style="italic">client version</fo:inline> :
+ Client Product : <fo:inline font-family="monospace" font-style="italic">client product</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a connection has been opened. The Broker logs one of these message
+ each time it learns more about the client as the connection is negotiated.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CON-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CON-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a connection has been closed. This message is logged regardless of
+ if the connection is closed normally, or if the connection is somehow lost e.g network
+ error. </fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CON-1003"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CON-1003</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Used when heart beating is in-use. Indicates that the connection has not received
+ a heartbeat for too long and is therefore closed as being inactive. </fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CON-1004"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CON-1004</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a connection has been unexpectedly closed by the peer. This usually
+ occurs if a machine hosting an application fails or the application's process is
+ abruptly terminated.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CON-1005"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CON-1005</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a connection has been received from client with a version number
+ that is configured to be logged. This feature may help teams manage software currency.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CON-1006"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CON-1006</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a connection attempt has been received from client with a version number
+ that is configured to be rejected. This feature may help manage software currency.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CON-1007"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CON-1007</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a connection has been closed by the actions of an
+ Operator using manangement.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CON-1009"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CON-1009</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ exceeding <fo:inline font-family="monospace" font-style="italic">size</fo:inline> bytes limit. Messages will be flowed to disk.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Warns that the transactions associated with this connection contain so much uncommitted data that
+ a threshold has been breached. The connection responds by flowing the messages already associated with the
+ transactions and any new messages to disk. The connection reverts to normal behaviour once the
+ quantity of uncommitted data falls beneath the threshold. Normally this happens when the transactions
+ commit or rollback.
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CON-1010"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CON-1010</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a messaging transaction has been open for longer than that
+ permitted. See <fo:basic-link internal-destination="Java-Broker-Runtime-Transaction-Timeout"><fo:inline>Section 9.3, “Transaction Timeout”</fo:inline></fo:basic-link> for
+ more details.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CON-1011"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CON-1011</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bo [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a messaging transaction has been idle for longer than that
+ permitted. See <fo:basic-link internal-destination="Java-Broker-Runtime-Transaction-Timeout"><fo:inline>Section 9.3, “Transaction Timeout”</fo:inline></fo:basic-link> for
+ more details.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-Channel"><fo:block space-before.optimum="1em" spa [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a channel (corresponds to the JMS concept of Session) has been
+ created.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CHN-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates message flow to a session has begun.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1003"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CHN-1003</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a channel has been closed.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1004"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CHN-1004</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ of messages</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates the prefetch size in use by a channel.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1005"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CHN-1005</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that producer flow control has been imposed on a channel owning to
+ excessive queue depth in the indicated queue. Produces using the channel will be
+ requested to pause the sending of messages.
+ See <fo:basic-link internal-destination="Java-Broker-Concepts-Queue-OverflowPolicy"><fo:inline>Section 4.7.5, “Controlling Queue Size”</fo:inline></fo:basic-link> for more details.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1006"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CHN-1006</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that producer flow control has been removed from a channel.
+ See <fo:basic-link internal-destination="Java-Broker-Concepts-Queue-OverflowPolicy"><fo:inline>Section 4.7.5, “Controlling Queue Size”</fo:inline></fo:basic-link> for more details.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1009"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CHN-1009</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ exchange configured for queue : <fo:inline font-family="monospace" font-style="italic">queue name</fo:inline>{1} routing key :
+ <fo:inline font-family="monospace" font-style="italic">routing key</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a channel has discarded a message as the maximum delivery count has
+ been exceeded but the queue defines no alternate exchange. See <fo:basic-link internal-destination="Java-Broker-Runtime-Handling-Undeliverable-Messages-Maximum-Delivery-Count"><fo:inline>Section 9.4.2, “Maximum Delivery Count”</fo:inline></fo:basic-link> for more details. Note that <fo:inline font-family="monospace" font-style="italic">message number</fo:inline> is an
+ internal message reference.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1010"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CHN-1010</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ alternate exchange : <fo:inline font-family="monospace" font-style="italic">exchange name</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a channel has discarded a message as the maximum delivery count has
+ been exceeded but the queue's alternate exchange has no binding to a queue. See <fo:basic-link internal-destination="Java-Broker-Runtime-Handling-Undeliverable-Messages-Maximum-Delivery-Count"><fo:inline>Section 9.4.2, “Maximum Delivery Count”</fo:inline></fo:basic-link> for more details. Note that <fo:inline font-family="monospace" font-style="italic">message number</fo:inline> is an
+ internal message reference.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1011"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CHN-1011</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:inline font-family="monospace" font-style="italic">queue name</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a channel has moved a message to the named dead letter queue
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1012"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CHN-1012</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a channel violating the imposed flow control has been closed
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1014"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CHN-1014</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bo [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the named operation has been invoked</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-Subscription"><fo:block space-before.optimum="1em [...]
+ <fo:inline font-family="monospace" font-style="italic">arguments</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a subscription (corresponds to JMS concept of a MessageConsumer)
+ has been created.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-SUB-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>SUB-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a subscription has been closed.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-SUB-1003"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>SUB-1003</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a subscription has been in a suspened state for an unusual length
+ of time. This may be indicative of an consuming application that has stopped taking
+ messages from the consumer (i.e. a JMS application is not calling receive() or its
+ asynchronous message listener onMessage() is blocked in application code). It may also
+ indicate a generally overloaded system.
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-SUB-1004"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>SUB-1004</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bo [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the named operation has been invoked</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-MessageStore"><fo:block space-before.optimum="1em [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a message store has been created. The message store is responsible
+ for the storage of the messages themselves, including the message body and any
+ headers.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MST-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MST-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the message store is using <fo:inline font-family="monospace" font-style="italic">path</fo:inline> for the
+ location of the message store.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MST-1003"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MST-1003</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the message store has been closed.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MST-1004"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MST-1004</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that message recovery has begun.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MST-1005"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MST-1005</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that recovery recovered the given number of messages from the
+ store.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MST-1006"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MST-1006</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the message recovery is concluded.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MST-1007"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MST-1007</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The store is entering a passive state where is it unavailable for normal
+ operations. Currently this message is used by HA when the node is in replica
+ state.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MST-1008"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MST-1008</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The store has breached is maximum configured size.
+ See <fo:basic-link internal-destination="Java-Broker-Runtime-Disk-Space-Management-Producer-Flow-Control"><fo:inline>Section 9.2.1, “Disk quota-based flow control”</fo:inline></fo:basic-link> for details.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MST-1009"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MST-1009</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bo [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The store size has fallen beneath its resume capacity and therefore flow control
+ has been rescinded. See <fo:basic-link internal-destination="Java-Broker-Runtime-Disk-Space-Management-Producer-Flow-Control"><fo:inline>Section 9.2.1, “Disk quota-based flow control”</fo:inline></fo:basic-link>
+ for details. </fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-TransactionStore"><fo:block space-before.optimum= [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a transaction store has been created. The transaction store is
+ responsible for the storage of messages instances, that is, the presence of a message
+ on a queue.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-TXN-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>TXN-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the transaction store is using <fo:inline font-family="monospace" font-style="italic">path</fo:inline> for
+ the location of the store.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-TXN-1003"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>TXN-1003</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the transaction store has been closed.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-TXN-1004"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>TXN-1004</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that transaction recovery has begun.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-MST-TXN"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>TXN-1005</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end [...]
+ <fo:inline font-family="monospace" font-style="italic">name</fo:inline>.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that recovery recovered the given number of message instances for the
+ given queue.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-TXN-1006"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>TXN-1006</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bo [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the message recovery is concluded.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-ConfigurationStore"><fo:block space-before.optimu [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a configuration store has been created. The configuration store is
+ responsible for the storage of the definition of objects such as queues, exchanges,
+ and bindings.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CFG-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CFG-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the configuration store is using <fo:inline font-family="monospace" font-style="italic">path</fo:inline>
+ for the location of the store.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CFG-1003"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CFG-1003</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the configuration store has been closed.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CFG-1004"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CFG-1004</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that configuration recovery has begun.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-CFG-1005"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>CFG-1005</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bo [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the configuration recovery is concluded.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-HA"><fo:block space-before.optimum="1em" space-be [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This HA node has been created.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>HA-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end= [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This HA node has been deleted</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1003"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>HA-1003</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end= [...]
+ (<fo:inline font-family="monospace" font-style="italic">host:port</fo:inline>)</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A new node has been added to the group.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1004"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>HA-1004</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end= [...]
+ (<fo:inline font-family="monospace" font-style="italic">host:port</fo:inline>)</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The node has been removed from the group. This removal is permanent.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1005"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>HA-1005</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end= [...]
+ (<fo:inline font-family="monospace" font-style="italic">host:port</fo:inline>)</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The node has become reachable. This may be as a result of the node being
+ restarted, or a network problem may have been resolved.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1006"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>HA-1006</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end= [...]
+ (<fo:inline font-family="monospace" font-style="italic">host:port</fo:inline>)</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The node is no longer reachable. This may be as a result of the node being stopped
+ or a network partition may be preventing it from being connected. The node is still a
+ member of the group.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1007"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>HA-1007</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end= [...]
+ (<fo:inline font-family="monospace" font-style="italic">host:port</fo:inline>)</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that a master transfer operation has been requested.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1008"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>HA-1008</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end= [...]
+ (<fo:inline font-family="monospace" font-style="italic">host:port</fo:inline>)</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that an unexpected node has joined the group. The virtualhost node will
+ go into the ERROR state in response to the condition.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1009"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>HA-1009</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end= [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This node (which was in the master role) no longer has sufficient replica in
+ contact in order to complete transactions.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1010"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>HA-1010</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end= [...]
+ (<fo:inline font-family="monospace" font-style="italic">host:port</fo:inline>) : from <fo:inline font-family="monospace" font-style="italic">role</fo:inline> to
+ <fo:inline font-family="monospace" font-style="italic">role</fo:inline></fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the node has changed role within the group.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1011"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>HA-1011</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end= [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The quorum requirements from completing elections or transactions has been
+ changed.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1012"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>HA-1012</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end= [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The priority of the object node has been changed. Zero indicates that the node
+ cannot be elected master.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1013"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>HA-1013</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end= [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This node has been designated primary and can now operate solo. Applies to two
+ node groups only. See <fo:basic-link internal-destination="Java-Broker-High-Availability-Behaviour-DesignatedPrimary"><fo:inline>Section 10.4.5, “Allow to Operate Solo”</fo:inline></fo:basic-link></fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-HA-1014"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>HA-1014</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bott [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This node is in the process of rejoining the group but has discovered that some
+ of its transactions differ from those of the current master. The node will
+ automatically roll-back (i.e. discard) the diverging transactions in order to be
+ allowed to rejoin the group. This situation can only usually occur as a result of use
+ of the weak durability options. These allow the group to operate with fewer than
+ quorum nodes and therefore allow the inconsistencies to develop. </fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">On encountering this condition, it is <fo:inline font-style="italic">strongly</fo:inline> recommendend
+ to run an application level reconcilation to determine the data that has been
+ lost.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-Port"><fo:block space-before.optimum="1em" space- [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Port has been created.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>PRT-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Port has been open</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1003"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>PRT-1003</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Port has been closed</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1004"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>PRT-1004</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Warns that number of open connections approaches maximum allowed limit</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1005"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>PRT-1005</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Connection from given host is rejected because of reaching the maximum allowed limit</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1007"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>PRT-1007</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Ususualy indicates an attempt to make an non-AMQP connection on an AMQP port, for instance,
+ with a web browser.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1008"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>PRT-1008</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Incoming connection is rejected because the port's connection limits are
+ already reached.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1009"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>PRT-1009</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The given port number could not be bound because it is already in-use.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1010"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>PRT-1010</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bo [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Indicates that the named operation has been invoked</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-ResourceLimit"><fo:block space-before.optimum="1e [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Connection has been accepted.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-RL-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>RL-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end= [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Connection has been rejected.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-RL-1003"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>RL-1003</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bott [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">An informational message regarding connection limits.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Operation-Logging-Message-List-User"><fo:block space-before.optimum="1em" space- [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">User has been created.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-USR-1002"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>USR-1002</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-en [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">User has been updated.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Operation-Logging-Message-USR-1003"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>USR-1003</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bo [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">User has been deleted.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="back" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:b [...]
+ the log. Statistics reporting can be configured for a single entity (e.g. a queue) or for all entities of a
+ particular category (e.g. for all queues). The system can be configured dynamically at runtime without the need
+ for the system to be restarted.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">This feature helps allow the behaviour of the overall system to be understood and can aid real-time problem
+ diagnosis.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">It can be configured Broker-wide or separately for each virtual host.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The format of the statistics report is configurable.</fo:block><fo:block id="d0e12949"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,S [...]
+ in seconds. By default the statistics report period is zero, meaning the system is disabled. To enable the
+ statistics report set the <fo:inline font-style="italic">statistics reporting period</fo:inline> on either the Broker or virtualhost to
+ a non-zero value.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Once the period is defined, the system will respond to the statistic report patterns defined described next.</fo:block></fo:block><fo:block id="d0e12959"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-ser [...]
+ content variables</fo:inline></fo:basic-link>. The place where the context variable is defined governs the scope i.e. the entities to
+ which the pattern will be applied.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For instance, to define a statistics reporting pattern for a single queue,
+ <fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console-Managing-Context-Variables"><fo:inline>set the contextvariable
+ </fo:inline></fo:basic-link> on the queue itself. If you want the same statistics report pattern for apply to all queues, set the pattern on a
+ suitable ancestor of the queue. For instance, if set on virtualhost, the pattern will applied to all queues defined
+ on that virtualhost. If set on Broker, the pattern will be applied to all queues on the Broker.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The context variable name is formed as follows:
+ <fo:inline font-family="monospace">qpid.<category-name>.statisticsReportPattern</fo:inline>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For instance, for queue: <fo:inline font-family="monospace">qpid.queue.statisticsReportPattern</fo:inline> and virtualhost:
+ <fo:inline font-family="monospace">qpid.virtualhost.statisticsReportPattern</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The value of the context variable is a free text string containing reference(s) to the statistic names that
+ are to appear in the report. References are made by surrounding the name of the statistic with '$' and curly braces,
+ thus <fo:inline font-family="monospace">${<statistic-name>}</fo:inline>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Statistics references allow an optional formatters. The supported formatters are: <fo:inline font-family="monospace">:byteunit</fo:inline>
+ (produces a human readable byte value e.g. 3 MiB), <fo:inline font-family="monospace">:duration</fo:inline> (produces a ISO-8601 duration)and
+ <fo:inline font-family="monospace">:datetime</fo:inline> (produces a ISO-8601 date/time).</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For example, a statistic report pattern for the <fo:inline font-family="monospace">queue</fo:inline> category specifying two queue
+ statistic values: <fo:inline font-family="monospace">queueDepthMessages=${queueDepthMessages},queueDepthBytes=${queueDepthBytes:byteunit}</fo:inline></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Like all context variables, the statistic report pattern can also reference the attributes of the entity
+ or even its ancestors. This feature can be exploited to include things like the name of the entity within the
+ report.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">These points are illustrated in the examples in the next section.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">A catalogue of statistics names and descriptions is available from the REST API documentation available
+ through the <fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console"><fo:inline>Web Management Console</fo:inline></fo:basic-link>.</fo:block></fo:block><fo:block id="d0e13018"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="alw [...]
+ cURL. This example uses <fo:inline font-family="monospace">ancestor</fo:inline> references to include entity names:</fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e13029"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12 [...]
+"value" : "${ancestor:virtualhost:name}/${ancestor:queue:name}: queueDepthMessages=${queueDepthMessages},
+queueDepthBytes=${queueDepthBytes:byteunit}"}' https://localhost:8080/api/latest/queue/default/default/myqueue/setContextVariable</fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Once enabled, an example statistic report output written to the log might look like this:
+ <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13036">INFO [virtualhost-default-pool-0] (q.s.Queue)- Statistics: default/myqueue: queueDepthMessages=0, queueDepthBytes=0 B
+ INFO [virtualhost-default-pool-2] (q.s.Queue)- Statistics: default/myqueue: queueDepthMessages=3, queueDepthBytes=345 B
+ INFO [virtualhost-default-pool-2] (q.s.Queue)- Statistics: default/myqueue: queueDepthMessages=3, queueDepthBytes=345 B</fo:block>
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Removing a statistic report pattern from the same queue:</fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="d0e13041"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maxi [...]
+curl --user admin --data '{"name" : "qpid.queue.statisticsReportPattern"}' https://localhost:8080/api/latest/queue/default/default/myqueue/setContextVariable</fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Adding a statistic reporting pattern to all queues:</fo:block><fo:block><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.op [...]
+"value" : "${ancestor:virtualhost:name}/${ancestor:queue:name}:
+oldestMessageAge=${oldestMessageAge:duration}"}' https://localhost:8080/api/latest/virtualhost/default/default/setContextVariable</fo:block></fo:block></fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ Once enabled, an example statistic report for a virtualhost with two queues might look like this:
+ <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13055">INFO [virtualhost-default-pool-1] (q.s.Queue)- Statistics: default/myqueue1: oldestMessageAge=PT1M24S
+ INFO [virtualhost-default-pool-1] (q.s.Queue)- Statistics: default/myqueue2: oldestMessageAge=PT0S</fo:block>
+ </fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="back" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:block font-family="serif,Symbol,ZapfDingbats" margin-left="0pt"><fo:table ta [...]
+ these limits will be periodically written to the log if these limits are breached, until the
+ condition is rectified.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">For example, if queue <fo:inline font-family="monospace">myqueue</fo:inline> is configured with a message count alert of
+ 1000, and then owing to a failure of a downstream system messages begin to accumulate on the
+ queue, the following alerts will be written periodically to the log. </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13069">INFO [default:VirtualHostHouseKeepingTask] [...]
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Note that queue alerts are <fo:inline font-style="italic">soft</fo:inline> in nature; breaching the limit will
+ merely cause the alerts to be generated but messages will still be accepted to the queue.</fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" start-indent="0pt"><fo:block space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Queue-Alerts-Alerting-Messages"><fo:block space-before.optimum="1em" space-be [...]
+ <fo:inline font-family="monospace" font-style="italic">number of messages</fo:inline>: Maximum count on queue threshold
+ (<fo:inline font-family="monospace" font-style="italic">limit</fo:inline>) breached. </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The number of messages on the given queue has breached its configured
+ limit.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MESSAGE_SIZE_ALERT</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" bord [...]
+ -<fo:inline font-family="monospace" font-style="italic">message size</fo:inline> : Maximum message size threshold
+ (<fo:inline font-family="monospace" font-style="italic">limit</fo:inline>) breached. [Message ID=<fo:inline font-family="monospace" font-style="italic">message
+ id</fo:inline>]</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The size of an individual messages has breached its configured limit.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>QUEUE_DEPTH_ALERT</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" borde [...]
+ <fo:inline font-family="monospace" font-style="italic">total size of all messages on queue</fo:inline> : Maximum queue depth
+ threshold (<fo:inline font-family="monospace" font-style="italic">limit</fo:inline>) breached.</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The total size of all messages on the queue has breached its configured
+ limit.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black" number-rows-spanned="2"><fo:block>MESSAGE_AGE_ALERT</fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:b [...]
+ of message</fo:inline> : Maximum age on queue threshold
+ (<fo:inline font-family="monospace" font-style="italic">limit</fo:inline>) breached. </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The age of a message on the given queue has breached its configured limit.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="back" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:b [...]
+ following at the command prompt: </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13184">echo %JAVA_HOME%</fo:block><fo:block space-before.optimum="1em" space-befo [...]
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Then confirm that a Java installation (11 or higher) is available: </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="pr [...]
+ Java(TM) SE Runtime Environment 18.9 (build 11.0.13+10-LTS-370)
+ Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.13+10-LTS-370, mixed mode</fo:block></fo:block><fo:block id="Java-Broker-Miscellaneous-JVM-Verification-Unix"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" spac [...]
+ following at the command prompt: </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13203">echo $JAVA_HOME</fo:block><fo:block space-before.optimum="1em" space-befor [...]
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em"> Then confirm that a Java installation (11 or higher) is available: </fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="pr [...]
+ Java(TM) SE Runtime Environment 18.9 (build 11.0.13+10-LTS-370)
+ Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.13+10-LTS-370, mixed mode</fo:block></fo:block></fo:block><fo:block id="Java-Broker-Miscellaneous-Installing-External-JDBC-Driver"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before [...]
+ Database's JDBC 4.0 compatible drivers available on the Broker's classpath. To do this copy
+ the driver's JAR file into the <fo:inline font-family="monospace">${QPID_HOME}/lib</fo:inline> folder.</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13225">Unix:
+cp <fo:inline font-family="monospace">driver</fo:inline>.jar qpid-broker-9.0.0/lib</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13230">Windows:
+copy <fo:inline font-family="monospace">driver</fo:inline>.jar qpid-broker-9.0.0\lib</fo:block></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="back" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"> [...]
+ <fo:inline font-style="italic">Qpid Broker-J</fo:inline>
+ supports a number of custom arguments which can be specified as part of <fo:inline font-style="italic">queue.declare</fo:inline>
+ commands for AMQP 0-x protocols. This section provides an overview of the supported arguments.
+ </fo:block><fo:block xmlns:rx="http://www.renderx.com/XSL/Extensions" space-before.minimum="0.5em" space-before.optimum="1em" space-before.maximum="2em" space-after.minimum="0.5em" space-after.optimum="1em" space-after.maximum="2em" keep-together.within-column="auto" id="Java-Broker-Appendix-Supported-Queue-Declare-Arguments"><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" font-weight="bold" font-size="12pt" hyphenate="false" space-after [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Declaration of overflow policy.
+ See
+ <fo:basic-link internal-destination="Java-Broker-Concepts-Queue-OverflowPolicy"><fo:inline>Section 4.7.5, “Controlling Queue Size”</fo:inline></fo:basic-link>
+ for more details.
+ </fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" text-align="center" display-align="center" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block/></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Queue-Declare-Arguments-Policy-Type"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-wi [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">qpid.policy_type</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Defines queue overflow policy.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Queue-Declare-Arguments-Max-Count"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">qpid.max_count</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Defines <fo:inline font-style="italic">maximum number of messages</fo:inline>.
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Queue-Declare-Arguments-Max-Size"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">qpid.max_size</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Defines <fo:inline font-style="italic">maximum number of bytes</fo:inline>.
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:inline font-style="italic">Overflow Policy</fo:inline> and the limits can be specified using
+ <fo:inline font-style="italic">Address</fo:inline>
+ based syntax as in the example below:
+ <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13319">
+my-queue; {create: always, node:
+{x-declare: {arguments:
+{'qpid.max_count': 10000,
+'qpid.max_size': 102400,
+'qpid.policy_type: 'ring'}}}}
+</fo:block>
+ </fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" text-align="center" display-align="center" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block/></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Queue-Declare-Arguments-Overflow-Policy-Producer-Flow-Control"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bot [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Alternative declaration of <fo:inline font-style="italic">Producer Flow Control</fo:inline> overflow policy.
+ See
+ <fo:basic-link internal-destination="Java-Broker-Concepts-Queue-OverflowPolicy"><fo:inline>Section 4.7.5, “Controlling Queue Size”</fo:inline></fo:basic-link>
+ for more details.
+ </fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" text-align="center" display-align="center" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block/></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Queue-Declare-Arguments-Capacity"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">x-qpid-capacity</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Defines <fo:inline font-style="italic">maximum number of bytes</fo:inline>.
+ </fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Queue-Declare-Arguments-Flow-Resume-Capacity"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">x-qpid-flow-resume-capacity</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Defines flow resume threshold in bytes</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The <fo:inline font-style="italic">Producer Flow Control</fo:inline> can be specified using
+ <fo:inline font-style="italic">Address</fo:inline> based syntax as in the example below:
+ <fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-option="no-wrap" white-space-collapse="false" white-space-treatment="preserve" linefeed-treatment="preserve" text-align="start" font-family="monospace" id="d0e13370">
+my-queue; {create: always, node:
+{x-declare: {arguments:
+{'x-qpid-capacity': 102400,
+'x-qpid-flow-resume-capacity': 8192000}}}}
+</fo:block>
+ </fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" text-align="center" display-align="center" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block/></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Queue-Declare-Arguments-X-Qpid-Priorities"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bot [...]
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">x-qpid-priorities</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Specifies a priority queue with given number priorities</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Queue-Declare-Arguments-Qpid-Sort-Key"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">qpid.queue_sort_key</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Specifies sorted queue with given message property used to sort the entries</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Queue-Declare-Arguments-Qpid-Last-Value-Key"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">qpid.last_value_queue_key</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Specifies lvq queue with given message property used to conflate the entries</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Queue-Declare-Arguments-Qpid-Ensure-Nondestructive-Consumers"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">qpid.ensure_nondestructive_consumers</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Set to true if the queue should make all consumers attached to it behave
+ non-destructively. (Default is false).</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Queue-Declare-Arguments-X-Qpid-Maximum-Delivery-Count"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">x-qpid-maximum-delivery-count</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-bottom-width="0.5pt" border-bottom-style="solid" border-bottom-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Specifies this queue's maximum delivery count.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row><fo:table-row id="Java-Broker-Appendix-Queue-Declare-Arguments-X-Single-Active-Consumer"><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt" border-end-width="0.5pt" border-end-style="solid" border-end-color="black"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">x-single-active-consumer</fo:block>
+ </fo:block></fo:table-cell><fo:table-cell padding-start="2pt" padding-end="2pt" padding-top="2pt" padding-bottom="2pt"><fo:block>
+ <fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">If set <fo:inline font-family="monospace">true</fo:inline>, then of all consumers attached to a queue, only one will
+ be designated as <fo:inline font-style="italic">active</fo:inline>, and eligible to receive messages. If the active
+ consumer is detached, and other consumers are attached, one of these other consumers is selected
+ to become the single active consumer.</fo:block>
+ </fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:flow></fo:page-sequence><fo:page-sequence xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions" hyphenate="true" master-reference="back" language="en" format="1" initial-page-number="auto" force-page-count="no-force" hyphenation-character="-" hyphenation-push-character-count="2" hyphenation-remain-character-count="2"><fo:static-content flow-name="xsl-region-before-first"><fo:bl [...]
+ provides an introduction into Broker-J initial configuration and how broker configuration can be created from
+ initial configuration on first broker start-up. This appendix illustrates how to create a BDB HA group from an
+ initial configuration file. For creation of BDB HA group using Web Management Console please refer <fo:basic-link internal-destination="Java-Broker-Management-Channel-Web-Console"><fo:inline>Section 6.2, “Web Management Console”</fo:inline></fo:basic-link>.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The BDB HA group usually consists of two or more nodes hosting a distributed virtual host.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">When BDB HA node is created the following attributes has to be provided
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e13460"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e13461"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-i [...]
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ A node priority can be optionally specified for the node to influence master election among nodes with the most current set of data.
+ An attribute <fo:inline font-style="italic">priority</fo:inline> is used to specify a priority as an integer number.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Apart from a group name and permitted nodes, the rest of node attribute values varies from node to node.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">In order to use the same initial configuration for creation of BDB HA nodes, the context variable can be used for varying attribute values.</fo:block><fo:block space-before.o [...]
+ <fo:list-block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" space-after.optimum="1em" space-after.minimum="0.8em" space-after.maximum="1.2em" provisional-label-separation="0.2em" provisional-distance-between-starts="1.0em" id="d0e13503"><fo:list-item space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em" id="d0e13504"><fo:list-item-label end-indent="label-end()"><fo:block>•</fo:block></fo:list-item-label><fo:list-i [...]
+ </fo:block><fo:block id="Java-Broker-Appendix-BDB-HA-initial-configuration-example"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum="1.2em" text-align="start" start-inde [...]
+{
+ "name": "${broker.name}",
+ "modelVersion" : "9.0",
+ "authenticationproviders" : [ {
+ "name" : "plain",
+ "type" : "Plain",
+ "users" : [ {
+ "name" : "guest",
+ "type" : "managed",
+ "password" : "guest"
+ } ]
+ } ],
+ "brokerloggers" : [ {
+ "name" : "logfile",
+ "type" : "File",
+ "fileName" : "${qpid.work_dir}${file.separator}log${file.separator}qpid.log",
+ "brokerloginclusionrules" : [ {
+ "name" : "Root",
+ "type" : "NameAndLevel",
+ "level" : "WARN",
+ "loggerName" : "ROOT"
+ }, {
+ "name" : "Qpid",
+ "type" : "NameAndLevel",
+ "level" : "INFO",
+ "loggerName" : "org.apache.qpid.*"
+ }, {
+ "name" : "Operational",
+ "type" : "NameAndLevel",
+ "level" : "INFO",
+ "loggerName" : "qpid.message.*"
+ }, {
+ "name" : "Statistics",
+ "type" : "NameAndLevel",
+ "level" : "INFO",
+ "loggerName" : "qpid.statistics.*"
+ } ]
+ }, {
+ "name" : "memory",
+ "type" : "Memory",
+ "brokerloginclusionrules" : [ {
+ "name" : "Root",
+ "type" : "NameAndLevel",
+ "level" : "WARN",
+ "loggerName" : "ROOT"
+ }, {
+ "name" : "Qpid",
+ "type" : "NameAndLevel",
+ "level" : "INFO",
+ "loggerName" : "org.apache.qpid.*"
+ }, {
+ "name" : "Operational",
+ "type" : "NameAndLevel",
+ "level" : "INFO",
+ "loggerName" : "qpid.message.*"
+ }, {
+ "name" : "Statistics",
+ "type" : "NameAndLevel",
+ "level" : "INFO",
+ "loggerName" : "qpid.statistics.*"
+ } ]
+ } ],
+ "ports" : [ {
+ "name" : "AMQP",
+ "port" : "${qpid.amqp_port}",
+ "authenticationProvider" : "plain",
+ "virtualhostaliases" : [ {
+ "name" : "nameAlias",
+ "type" : "nameAlias"
+ }, {
+ "name" : "defaultAlias",
+ "type" : "defaultAlias"
+ }, {
+ "name" : "hostnameAlias",
+ "type" : "hostnameAlias"
+ } ]
+ }, {
+ "name" : "HTTP",
+ "port" : "${qpid.http_port}",
+ "authenticationProvider" : "plain",
+ "protocols" : [ "HTTP" ]
+ }],
+ "virtualhostnodes" : [ {
+ "name" : "${ha.node_name}",
+ "type" : "BDB_HA",
+ "address" : "${ha.node_address}",
+ "groupName" : "${ha.group_name}",
+ "helperAddress" : "${ha.helper_address}",
+ "helperNodeName" : "${ha.helper_node_name}",
+ "permittedNodes" : "${ha.permitted_nodes}",
+ "priority" : "${ha.priority}",
+ "defaultVirtualHostNode" : "true",
+ "virtualHostInitialConfiguration" : "${qpid.initial_config_virtualhost_config}"
+ } ],
+ "plugins" : [ {
+ "type" : "MANAGEMENT-HTTP",
+ "name" : "httpManagement"
+ } ]
+}
+ </fo:block></fo:block></fo:block></fo:block><fo:block id="Java-Broker-Appendix-BDB-HA-initial-configuration-creation"><fo:block><fo:block><fo:block keep-together.within-column="always" margin-left="0pt" font-family="sans-serif,Symbol,ZapfDingbats"><fo:block keep-with-next.within-column="always"><fo:block font-family="sans-serif,Symbol,ZapfDingbats" font-weight="bold" keep-with-next.within-column="always" space-before.minimum="0.8em" space-before.optimum="1.0em" space-before.maximum [...]
+ consisting of tree nodes <fo:inline font-family="monospace">weather1</fo:inline>, <fo:inline font-family="monospace">weather2</fo:inline>, and <fo:inline font-family="monospace">weather3</fo:inline>
+ using the initial configuration above. We start node <fo:inline font-family="monospace">weather1</fo:inline> on host/port
+ <fo:inline font-family="monospace">chaac:5000</fo:inline>, node <fo:inline font-family="monospace">weather2</fo:inline> on host/port <fo:inline font-family="monospace">indra:5000</fo:inline>
+ and node <fo:inline font-family="monospace">weather3</fo:inline> on host/port <fo:inline font-family="monospace">thor:5000</fo:inline>.</fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The node <fo:inline font-family="monospace">weather1</fo:inline> can be created with the following command</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space [...]
+$ ./qpid-server -icp ./initial-config.json -prop ha.node_name=weather1 -prop ha.node_address=chaac:5000 \
+-prop ha.group_name=weather -prop ha.helper_address=chaac:5000 -prop ha.helper_node_name=weather1 \
+-prop ha.permitted_nodes="[\"chaac:5000\",\"indra:5000\",\"thor:5000\"]" -prop ha.priority=3 \
+-prop qpid.amqp_port=10000 -prop qpid.http_port=20000
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">Please note, the broker is started with initial configuration at file <fo:inline font-family="monospace">./initial-config.json</fo:inline>.
+ The context variable for node name <fo:inline font-family="monospace">ha.node_name</fo:inline> is set to <fo:inline font-family="monospace">weather1</fo:inline>.
+ The node address context variable <fo:inline font-family="monospace">ha.node_address</fo:inline> is set to <fo:inline font-family="monospace">chaac:5000</fo:inline>.
+ As it is a first node, the helper address is set to the same address as a node address (<fo:inline font-family="monospace">ha.helper_address=chaac:5000</fo:inline>)
+ and the helper node name is to itself (<fo:inline font-family="monospace">ha.helper_node_name=weather1</fo:inline>). The group name is set to <fo:inline font-family="monospace">weather</fo:inline>
+ with <fo:inline font-family="monospace">ha.group_name=weather</fo:inline>. The group nodes are listed in <fo:inline font-family="monospace">ha.permitted_nodes</fo:inline>.
+ The amqp and http ports are overridden to 10000 and 20000 accordingly. The node priority is set to <fo:inline font-family="monospace">3</fo:inline>.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The node <fo:inline font-family="monospace">weather2</fo:inline> can be created on host<fo:inline font-family="monospace">indra</fo:inline> with the following command:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-opti [...]
+ $ ./qpid-server -icp ./initial-config.json -prop ha.node_name=weather2 -prop ha.node_address=indra:5000 \
+-prop ha.group_name=weather -prop ha.helper_address=chaac:5000 -prop ha.helper_node_name=weather1 \
+-prop ha.permitted_nodes="[\"chaac:5000\",\"indra:5000\",\"thor:5000\"]" -prop ha.priority=2 \
+-prop qpid.amqp_port=10001 -prop qpid.http_port=20001
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The context variable for node name <fo:inline font-family="monospace">ha.node_name</fo:inline> is set to <fo:inline font-family="monospace">weather2</fo:inline>.
+ The node address context variable <fo:inline font-family="monospace">ha.node_address</fo:inline> is set <fo:inline font-family="monospace">indra:5000</fo:inline>.
+ The amqp and http ports are overridden to 10001 and 20001 accordingly. The node <fo:inline font-family="monospace">weather2</fo:inline>
+ priority is set to <fo:inline font-family="monospace">2</fo:inline>. The rest of the context variables have
+ the same values as for node <fo:inline font-family="monospace">weather1</fo:inline>. The latter is used as a helper node for creation of
+ <fo:inline font-family="monospace">weather2</fo:inline>.
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">The node <fo:inline font-family="monospace">weather3</fo:inline> can be created on host<fo:inline font-family="monospace">thor</fo:inline> with the following command:</fo:block><fo:block space-before.minimum="0.8em" space-before.optimum="1em" space-before.maximum="1.2em" space-after.minimum="0.8em" space-after.optimum="1em" space-after.maximum="1.2em" hyphenate="false" wrap-optio [...]
+$ ./qpid-server -icp ./initial-config.json -prop ha.node_name=weather3 -prop ha.node_address=thor:5000 \
+-prop ha.group_name=weather -prop ha.helper_address=chaac:5000 -prop ha.helper_node_name=weather1 \
+-prop ha.permitted_nodes="[\"chaac:5000\",\"indra:5000\",\"thor:5000\"]" -prop ha.priority=1 \
+-prop qpid.amqp_port=10002 -prop qpid.http_port=20002
+ </fo:block><fo:block space-before.optimum="1em" space-before.minimum="0.8em" space-before.maximum="1.2em">
+ The context variable for node name <fo:inline font-family="monospace">ha.node_name</fo:inline> is set to <fo:inline font-family="monospace">weather3</fo:inline>.
+ The node address context variable <fo:inline font-family="monospace">ha.node_address</fo:inline> is set <fo:inline font-family="monospace">thor:5000</fo:inline>.
+ The amqp and http ports are overridden to 10002 and 20002 accordingly. The node <fo:inline font-family="monospace">weather3</fo:inline>
+ priority is set to <fo:inline font-family="monospace">1</fo:inline>. The rest of the context variables have
+ the same values as for node <fo:inline font-family="monospace">weather1</fo:inline> which is used as a helper node for creation of
+ <fo:inline font-family="monospace">weather3</fo:inline>.
+ </fo:block></fo:block></fo:flow></fo:page-sequence></fo:root>
\ No newline at end of file
diff --git a/content/releases/qpid-broker-j-9.0.0/book/Apache-Qpid-Broker-J-Book.html b/content/releases/qpid-broker-j-9.0.0/book/Apache-Qpid-Broker-J-Book.html
new file mode 100644
index 000000000..b110871a3
--- /dev/null
+++ b/content/releases/qpid-broker-j-9.0.0/book/Apache-Qpid-Broker-J-Book.html
@@ -0,0 +1,159 @@
+<!DOCTYPE html>
+<!--
+ -
+ - Licensed to the Apache Software Foundation (ASF) under one
+ - or more contributor license agreements. See the NOTICE file
+ - distributed with this work for additional information
+ - regarding copyright ownership. The ASF licenses this file
+ - to you under the Apache License, Version 2.0 (the
+ - "License"); you may not use this file except in compliance
+ - with the License. You may obtain a copy of the License at
+ -
+ - http://www.apache.org/licenses/LICENSE-2.0
+ -
+ - Unless required by applicable law or agreed to in writing,
+ - software distributed under the License is distributed on an
+ - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ - KIND, either express or implied. See the License for the
+ - specific language governing permissions and limitations
+ - under the License.
+ -
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+ <head>
+ <title>Apache Qpid Broker-J - Apache Qpid™</title>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+ <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
+ <link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
+ <script type="text/javascript">var _deferredFunctions = [];</script>
+ <script type="text/javascript" src="/deferred.js" defer="defer"></script>
+ <!--[if lte IE 8]>
+ <link rel="stylesheet" href="/ie.css" type="text/css"/>
+ <script type="text/javascript" src="/html5shiv.js"></script>
+ <![endif]-->
+
+ <!-- Redirects for `go get` and godoc.org -->
+ <meta name="go-import"
+ content="qpid.apache.org git https://gitbox.apache.org/repos/asf/qpid-proton.git"/>
+ <meta name="go-source"
+ content="qpid.apache.org
+https://github.com/apache/qpid-proton/blob/go1/README.md
+https://github.com/apache/qpid-proton/tree/go1{/dir}
+https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
+ </head>
+ <body>
+ <div id="-content">
+ <div id="-top" class="panel">
+ <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>
+
+ <a id="-search-link"><img width="22" height="16" src="" alt="Search"/></a>
+
+ <ul id="-global-navigation">
+ <li><a id="-logotype" href="/index.html">Apache Qpid<sup>™</sup></a></li>
+ <li><a href="/documentation.html">Documentation</a></li>
+ <li><a href="/download.html">Download</a></li>
+ <li><a href="/discussion.html">Discussion</a></li>
+ </ul>
+ </div>
+
+ <div id="-menu" class="panel" style="display: none;">
+ <div class="flex">
+ <section>
+ <h3>Project</h3>
+
+ <ul>
+ <li><a href="/overview.html">Overview</a></li>
+ <li><a href="/components/index.html">Components</a></li>
+ <li><a href="/releases/index.html">Releases</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Messaging APIs</h3>
+
+ <ul>
+ <li><a href="/proton/index.html">Qpid Proton</a></li>
+ <li><a href="/components/jms/index.html">Qpid JMS</a></li>
+ <li><a href="/components/messaging-api/index.html">Qpid Messaging API</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Servers and tools</h3>
+
+ <ul>
+ <li><a href="/components/broker-j/index.html">Broker-J</a></li>
+ <li><a href="/components/cpp-broker/index.html">C++ broker</a></li>
+ <li><a href="/components/dispatch-router/index.html">Dispatch router</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Resources</h3>
+
+ <ul>
+ <li><a href="/dashboard.html">Dashboard</a></li>
+ <li><a href="https://cwiki.apache.org/confluence/display/qpid/Index">Wiki</a></li>
+ <li><a href="/resources.html">More resources</a></li>
+ </ul>
+ </section>
+ </div>
+ </div>
+
+ <div id="-search" class="panel" style="display: none;">
+ <form action="http://www.google.com/search" method="get">
+ <input type="hidden" name="sitesearch" value="qpid.apache.org"/>
+ <input type="text" name="q" maxlength="255" autofocus="autofocus" tabindex="1"/>
+ <button type="submit">Search</button>
+ <a href="/search.html">More ways to search</a>
+ </form>
+ </div>
+
+ <div id="-middle" class="panel">
+ <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.0.0/index.html">Qpid Broker-J 9.0.0</a></li><li><a href="/releases/qpid-broker-j-9.0.0/book/index.html">Apache Qpid Broker-J</a></li><li>Apache Qpid Broker-J</li></ul>
+
+ <div id="-middle-content">
+ <div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Apache Qpid Broker-J</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="Java-Broker-Introduction.html">Next</a></td></tr></table><hr /></div><div class="book"><div class="titlepage"><div><div><h1 class="title"><a id="d0e2"></a>Apache Qpid Broker-J</h1></div></div><hr [...]
+ ACL Rules
+ </a></span></dt><dt><span class="section"><a href="Java-Broker-Security-AccessControlProviders.html#Java-Broker-Security-AccessControlProviders-Syntax">8.3.3.
+ Syntax
+ </a></span></dt><dt><span class="section"><a href="Java-Broker-Security-AccessControlProviders.html#Java-Broker-Security-AccessControlProviders-WorkedExamples">8.3.4.
+ Worked Examples
+ </a></span></dt></dl></dd><dt><span class="section"><a href="Java-Broker-Security-ConnectionLimitProviders.html">8.4. Connection Limit Providers</a></span></dt><dd><dl><dt><span class="section"><a href="Java-Broker-Security-ConnectionLimitProviders.html#Java-Broker-Security-ConnectionLimitProviders-Types">8.4.1. Types</a></span></dt><dt><span class="section"><a href="Java-Broker-Security-ConnectionLimitProviders.html#Java-Broker-Security-ConnectionLimitProviders-Rules">8.4.2.
+ Connection Limit Rules
+ </a></span></dt><dt><span class="section"><a href="Java-Broker-Security-ConnectionLimitProviders.html#Java-Broker-Security-ConnectionLimitProviders-Syntax">8.4.3.
+ Syntax
+ </a></span></dt><dt><span class="section"><a href="Java-Broker-Security-ConnectionLimitProviders.html#Java-Broker-Security-ConnectionLimitProviders-WorkedExample">8.4.4.
+ Worked Example
+ </a></span></dt></dl></dd><dt><span class="section"><a href="Java-Broker-Security-Configuration-Encryption.html">8.5. Configuration Encryption</a></span></dt><dd><dl><dt><span class="section"><a href="Java-Broker-Security-Configuration-Encryption.html#Java-Broker-Security-Configuration-Encryption-Configuration">8.5.1. Configuration</a></span></dt><dt><span class="section"><a href="Java-Broker-Security-Configuration-Encryption.html#Java-Broker-Security-Configuration-Encryption-Alt [...]
+ <span class="emphasis"><em>closeWhenNoRoute</em></span>
+ </a></span></dt></dl></dd><dt><span class="section"><a href="Java-Broker-Runtime-Flow-To-Disk.html">9.6. Flow to Disk</a></span></dt><dd><dl><dt><span class="section"><a href="Java-Broker-Runtime-Flow-To-Disk.html#Java-Broker-Runtime-Flow-To-Disk-Monitoring">9.6.1. Flow to Disk Monitoring</a></span></dt><dt><span class="section"><a href="Java-Broker-Runtime-Flow-To-Disk.html#Java-Broker-Runtime-Flow-To-Disk-Logging">9.6.2. Flow to Disk Logging</a></span></dt></dl></dd><dt><span class [...]
+ directly</a></dt><dt>D.1. <a href="apds03.html#d0e13029">Enabling statistics for a single queue using the REST API and cURL</a></dt><dt>D.2. <a href="apds03.html#d0e13041">Disabling statistics for a single queue using the REST API and cURL</a></dt><dt>D.3. <a href="apds03.html#d0e13048">Enabling statistics for all queues using the REST API and cURL</a></dt><dt>H.1. <a href="Java-Broker-Appendix-BDB-HA-initial-configuration.html#d0e13545">BDB HA 'Initial configuration'</a></dt>< [...]
+
+ <hr/>
+
+ <ul id="-apache-navigation">
+ <li><a href="http://www.apache.org/">Apache</a></li>
+ <li><a href="http://www.apache.org/licenses/">License</a></li>
+ <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+ <li><a href="http://www.apache.org/foundation/thanks.html">Thanks!</a></li>
+ <li><a href="/security.html">Security</a></li>
+ <li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="" alt="Apache"/></a></li>
+ </ul>
+
+ <p id="-legal">
+ Apache Qpid, Messaging built on AMQP; Copyright © 2015
+ The Apache Software Foundation; Licensed under
+ the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
+ License, Version 2.0</a>; Apache Qpid, Qpid, Qpid Proton,
+ Proton, Apache, the Apache feather logo, and the Apache Qpid
+ project logo are trademarks of The Apache Software
+ Foundation; All other marks mentioned may be trademarks or
+ registered trademarks of their respective owners
+ </p>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/content/releases/qpid-broker-j-9.0.0/book/Apache-Qpid-Broker-J-Book.pdf b/content/releases/qpid-broker-j-9.0.0/book/Apache-Qpid-Broker-J-Book.pdf
new file mode 100755
index 000000000..f4597d691
Binary files /dev/null and b/content/releases/qpid-broker-j-9.0.0/book/Apache-Qpid-Broker-J-Book.pdf differ
diff --git a/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Appendix-BDB-HA-initial-configuration-creation.html b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Appendix-BDB-HA-initial-configuration-creation.html
new file mode 100644
index 000000000..b4c8d201e
--- /dev/null
+++ b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Appendix-BDB-HA-initial-configuration-creation.html
@@ -0,0 +1,184 @@
+<!DOCTYPE html>
+<!--
+ -
+ - Licensed to the Apache Software Foundation (ASF) under one
+ - or more contributor license agreements. See the NOTICE file
+ - distributed with this work for additional information
+ - regarding copyright ownership. The ASF licenses this file
+ - to you under the Apache License, Version 2.0 (the
+ - "License"); you may not use this file except in compliance
+ - with the License. You may obtain a copy of the License at
+ -
+ - http://www.apache.org/licenses/LICENSE-2.0
+ -
+ - Unless required by applicable law or agreed to in writing,
+ - software distributed under the License is distributed on an
+ - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ - KIND, either express or implied. See the License for the
+ - specific language governing permissions and limitations
+ - under the License.
+ -
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+ <head>
+ <title>H.2. Creation of BDB HA group using an initial configuration. - Apache Qpid™</title>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+ <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
+ <link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
+ <script type="text/javascript">var _deferredFunctions = [];</script>
+ <script type="text/javascript" src="/deferred.js" defer="defer"></script>
+ <!--[if lte IE 8]>
+ <link rel="stylesheet" href="/ie.css" type="text/css"/>
+ <script type="text/javascript" src="/html5shiv.js"></script>
+ <![endif]-->
+
+ <!-- Redirects for `go get` and godoc.org -->
+ <meta name="go-import"
+ content="qpid.apache.org git https://gitbox.apache.org/repos/asf/qpid-proton.git"/>
+ <meta name="go-source"
+ content="qpid.apache.org
+https://github.com/apache/qpid-proton/blob/go1/README.md
+https://github.com/apache/qpid-proton/tree/go1{/dir}
+https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
+ </head>
+ <body>
+ <div id="-content">
+ <div id="-top" class="panel">
+ <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>
+
+ <a id="-search-link"><img width="22" height="16" src="" alt="Search"/></a>
+
+ <ul id="-global-navigation">
+ <li><a id="-logotype" href="/index.html">Apache Qpid<sup>™</sup></a></li>
+ <li><a href="/documentation.html">Documentation</a></li>
+ <li><a href="/download.html">Download</a></li>
+ <li><a href="/discussion.html">Discussion</a></li>
+ </ul>
+ </div>
+
+ <div id="-menu" class="panel" style="display: none;">
+ <div class="flex">
+ <section>
+ <h3>Project</h3>
+
+ <ul>
+ <li><a href="/overview.html">Overview</a></li>
+ <li><a href="/components/index.html">Components</a></li>
+ <li><a href="/releases/index.html">Releases</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Messaging APIs</h3>
+
+ <ul>
+ <li><a href="/proton/index.html">Qpid Proton</a></li>
+ <li><a href="/components/jms/index.html">Qpid JMS</a></li>
+ <li><a href="/components/messaging-api/index.html">Qpid Messaging API</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Servers and tools</h3>
+
+ <ul>
+ <li><a href="/components/broker-j/index.html">Broker-J</a></li>
+ <li><a href="/components/cpp-broker/index.html">C++ broker</a></li>
+ <li><a href="/components/dispatch-router/index.html">Dispatch router</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Resources</h3>
+
+ <ul>
+ <li><a href="/dashboard.html">Dashboard</a></li>
+ <li><a href="https://cwiki.apache.org/confluence/display/qpid/Index">Wiki</a></li>
+ <li><a href="/resources.html">More resources</a></li>
+ </ul>
+ </section>
+ </div>
+ </div>
+
+ <div id="-search" class="panel" style="display: none;">
+ <form action="http://www.google.com/search" method="get">
+ <input type="hidden" name="sitesearch" value="qpid.apache.org"/>
+ <input type="text" name="q" maxlength="255" autofocus="autofocus" tabindex="1"/>
+ <button type="submit">Search</button>
+ <a href="/search.html">More ways to search</a>
+ </form>
+ </div>
+
+ <div id="-middle" class="panel">
+ <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.0.0/index.html">Qpid Broker-J 9.0.0</a></li><li><a href="/releases/qpid-broker-j-9.0.0/book/index.html">Apache Qpid Broker-J</a></li><li>H.2. Creation of BDB HA group using an initial configuration.</li></ul>
+
+ <div id="-middle-content">
+ <div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">H.2. Creation of BDB HA group using an initial configuration.</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Java-Broker-Appendix-BDB-HA-initial-configuration.html">Prev</a> </td><th width="60%" align="center">Appendix H. BDB HA initial configuration</th><td width="20%" align="right"> </td></tr></table><hr /></div><div class="section"> [...]
+ consisting of tree nodes <code class="literal">weather1</code>, <code class="literal">weather2</code>, and <code class="literal">weather3</code>
+ using the initial configuration above. We start node <code class="literal">weather1</code> on host/port
+ <code class="literal">chaac:5000</code>, node <code class="literal">weather2</code> on host/port <code class="literal">indra:5000</code>
+ and node <code class="literal">weather3</code> on host/port <code class="literal">thor:5000</code>.</p><p>The node <code class="literal">weather1</code> can be created with the following command</p><pre class="screen">
+$ ./qpid-server -icp ./initial-config.json -prop ha.node_name=weather1 -prop ha.node_address=chaac:5000 \
+-prop ha.group_name=weather -prop ha.helper_address=chaac:5000 -prop ha.helper_node_name=weather1 \
+-prop ha.permitted_nodes="[\"chaac:5000\",\"indra:5000\",\"thor:5000\"]" -prop ha.priority=3 \
+-prop qpid.amqp_port=10000 -prop qpid.http_port=20000
+ </pre><p>Please note, the broker is started with initial configuration at file <code class="literal">./initial-config.json</code>.
+ The context variable for node name <code class="literal">ha.node_name</code> is set to <code class="literal">weather1</code>.
+ The node address context variable <code class="literal">ha.node_address</code> is set to <code class="literal">chaac:5000</code>.
+ As it is a first node, the helper address is set to the same address as a node address (<code class="literal">ha.helper_address=chaac:5000</code>)
+ and the helper node name is to itself (<code class="literal">ha.helper_node_name=weather1</code>). The group name is set to <code class="literal">weather</code>
+ with <code class="literal">ha.group_name=weather</code>. The group nodes are listed in <code class="literal">ha.permitted_nodes</code>.
+ The amqp and http ports are overridden to 10000 and 20000 accordingly. The node priority is set to <code class="literal">3</code>.
+ </p><p>The node <code class="literal">weather2</code> can be created on host<code class="literal">indra</code> with the following command:</p><pre class="screen">
+ $ ./qpid-server -icp ./initial-config.json -prop ha.node_name=weather2 -prop ha.node_address=indra:5000 \
+-prop ha.group_name=weather -prop ha.helper_address=chaac:5000 -prop ha.helper_node_name=weather1 \
+-prop ha.permitted_nodes="[\"chaac:5000\",\"indra:5000\",\"thor:5000\"]" -prop ha.priority=2 \
+-prop qpid.amqp_port=10001 -prop qpid.http_port=20001
+ </pre><p>
+ The context variable for node name <code class="literal">ha.node_name</code> is set to <code class="literal">weather2</code>.
+ The node address context variable <code class="literal">ha.node_address</code> is set <code class="literal">indra:5000</code>.
+ The amqp and http ports are overridden to 10001 and 20001 accordingly. The node <code class="literal">weather2</code>
+ priority is set to <code class="literal">2</code>. The rest of the context variables have
+ the same values as for node <code class="literal">weather1</code>. The latter is used as a helper node for creation of
+ <code class="literal">weather2</code>.
+ </p><p>The node <code class="literal">weather3</code> can be created on host<code class="literal">thor</code> with the following command:</p><pre class="screen">
+$ ./qpid-server -icp ./initial-config.json -prop ha.node_name=weather3 -prop ha.node_address=thor:5000 \
+-prop ha.group_name=weather -prop ha.helper_address=chaac:5000 -prop ha.helper_node_name=weather1 \
+-prop ha.permitted_nodes="[\"chaac:5000\",\"indra:5000\",\"thor:5000\"]" -prop ha.priority=1 \
+-prop qpid.amqp_port=10002 -prop qpid.http_port=20002
+ </pre><p>
+ The context variable for node name <code class="literal">ha.node_name</code> is set to <code class="literal">weather3</code>.
+ The node address context variable <code class="literal">ha.node_address</code> is set <code class="literal">thor:5000</code>.
+ The amqp and http ports are overridden to 10002 and 20002 accordingly. The node <code class="literal">weather3</code>
+ priority is set to <code class="literal">1</code>. The rest of the context variables have
+ the same values as for node <code class="literal">weather1</code> which is used as a helper node for creation of
+ <code class="literal">weather3</code>.
+ </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Java-Broker-Appendix-BDB-HA-initial-configuration.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="Java-Broker-Appendix-BDB-HA-initial-configuration.html">Up</a></td><td width="40%" align="right"> </td></tr><tr><td width="40%" align="left" valign="top">Appendix H. BDB HA initial configuration </td><td width="20%" align [...]
+
+ <hr/>
+
+ <ul id="-apache-navigation">
+ <li><a href="http://www.apache.org/">Apache</a></li>
+ <li><a href="http://www.apache.org/licenses/">License</a></li>
+ <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+ <li><a href="http://www.apache.org/foundation/thanks.html">Thanks!</a></li>
+ <li><a href="/security.html">Security</a></li>
+ <li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="" alt="Apache"/></a></li>
+ </ul>
+
+ <p id="-legal">
+ Apache Qpid, Messaging built on AMQP; Copyright © 2015
+ The Apache Software Foundation; Licensed under
+ the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
+ License, Version 2.0</a>; Apache Qpid, Qpid, Qpid Proton,
+ Proton, Apache, the Apache feather logo, and the Apache Qpid
+ project logo are trademarks of The Apache Software
+ Foundation; All other marks mentioned may be trademarks or
+ registered trademarks of their respective owners
+ </p>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Appendix-BDB-HA-initial-configuration.html b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Appendix-BDB-HA-initial-configuration.html
new file mode 100644
index 000000000..7a156bba8
--- /dev/null
+++ b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Appendix-BDB-HA-initial-configuration.html
@@ -0,0 +1,255 @@
+<!DOCTYPE html>
+<!--
+ -
+ - Licensed to the Apache Software Foundation (ASF) under one
+ - or more contributor license agreements. See the NOTICE file
+ - distributed with this work for additional information
+ - regarding copyright ownership. The ASF licenses this file
+ - to you under the Apache License, Version 2.0 (the
+ - "License"); you may not use this file except in compliance
+ - with the License. You may obtain a copy of the License at
+ -
+ - http://www.apache.org/licenses/LICENSE-2.0
+ -
+ - Unless required by applicable law or agreed to in writing,
+ - software distributed under the License is distributed on an
+ - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ - KIND, either express or implied. See the License for the
+ - specific language governing permissions and limitations
+ - under the License.
+ -
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+ <head>
+ <title>Appendix H. BDB HA initial configuration - Apache Qpid™</title>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+ <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
+ <link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
+ <script type="text/javascript">var _deferredFunctions = [];</script>
+ <script type="text/javascript" src="/deferred.js" defer="defer"></script>
+ <!--[if lte IE 8]>
+ <link rel="stylesheet" href="/ie.css" type="text/css"/>
+ <script type="text/javascript" src="/html5shiv.js"></script>
+ <![endif]-->
+
+ <!-- Redirects for `go get` and godoc.org -->
+ <meta name="go-import"
+ content="qpid.apache.org git https://gitbox.apache.org/repos/asf/qpid-proton.git"/>
+ <meta name="go-source"
+ content="qpid.apache.org
+https://github.com/apache/qpid-proton/blob/go1/README.md
+https://github.com/apache/qpid-proton/tree/go1{/dir}
+https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
+ </head>
+ <body>
+ <div id="-content">
+ <div id="-top" class="panel">
+ <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>
+
+ <a id="-search-link"><img width="22" height="16" src="" alt="Search"/></a>
+
+ <ul id="-global-navigation">
+ <li><a id="-logotype" href="/index.html">Apache Qpid<sup>™</sup></a></li>
+ <li><a href="/documentation.html">Documentation</a></li>
+ <li><a href="/download.html">Download</a></li>
+ <li><a href="/discussion.html">Discussion</a></li>
+ </ul>
+ </div>
+
+ <div id="-menu" class="panel" style="display: none;">
+ <div class="flex">
+ <section>
+ <h3>Project</h3>
+
+ <ul>
+ <li><a href="/overview.html">Overview</a></li>
+ <li><a href="/components/index.html">Components</a></li>
+ <li><a href="/releases/index.html">Releases</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Messaging APIs</h3>
+
+ <ul>
+ <li><a href="/proton/index.html">Qpid Proton</a></li>
+ <li><a href="/components/jms/index.html">Qpid JMS</a></li>
+ <li><a href="/components/messaging-api/index.html">Qpid Messaging API</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Servers and tools</h3>
+
+ <ul>
+ <li><a href="/components/broker-j/index.html">Broker-J</a></li>
+ <li><a href="/components/cpp-broker/index.html">C++ broker</a></li>
+ <li><a href="/components/dispatch-router/index.html">Dispatch router</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Resources</h3>
+
+ <ul>
+ <li><a href="/dashboard.html">Dashboard</a></li>
+ <li><a href="https://cwiki.apache.org/confluence/display/qpid/Index">Wiki</a></li>
+ <li><a href="/resources.html">More resources</a></li>
+ </ul>
+ </section>
+ </div>
+ </div>
+
+ <div id="-search" class="panel" style="display: none;">
+ <form action="http://www.google.com/search" method="get">
+ <input type="hidden" name="sitesearch" value="qpid.apache.org"/>
+ <input type="text" name="q" maxlength="255" autofocus="autofocus" tabindex="1"/>
+ <button type="submit">Search</button>
+ <a href="/search.html">More ways to search</a>
+ </form>
+ </div>
+
+ <div id="-middle" class="panel">
+ <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.0.0/index.html">Qpid Broker-J 9.0.0</a></li><li><a href="/releases/qpid-broker-j-9.0.0/book/index.html">Apache Qpid Broker-J</a></li><li>Appendix H. BDB HA initial configuration</li></ul>
+
+ <div id="-middle-content">
+ <div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix H. BDB HA initial configuration</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Java-Broker-Appendix-Queue-Declare-Arguments.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="Java-Broker-Appendix-BDB-HA-initial-configuration-creation.html">Next</a></td></tr></table><h [...]
+ provides an introduction into Broker-J initial configuration and how broker configuration can be created from
+ initial configuration on first broker start-up. This appendix illustrates how to create a BDB HA group from an
+ initial configuration file. For creation of BDB HA group using Web Management Console please refer <a class="xref" href="Java-Broker-Management-Channel-Web-Console.html" title="6.2. Web Management Console">Section 6.2, “Web Management Console”</a>.
+ </p><p>The BDB HA group usually consists of two or more nodes hosting a distributed virtual host.</p><p>When BDB HA node is created the following attributes has to be provided
+ </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><span class="emphasis"><em>groupName</em></span>; a name of BDB HA group</p></li><li class="listitem"><p><span class="emphasis"><em>nodeName</em></span>; a name of BDB HA node</p></li><li class="listitem"><p><span class="emphasis"><em>address</em></span>; a node address as colon-separated pair of host name and port</p></li><li class="listitem"><p><span class="emphasis"><em>h [...]
+ </p><p>
+ A node priority can be optionally specified for the node to influence master election among nodes with the most current set of data.
+ An attribute <span class="emphasis"><em>priority</em></span> is used to specify a priority as an integer number.
+ </p><p>Apart from a group name and permitted nodes, the rest of node attribute values varies from node to node.</p><p>In order to use the same initial configuration for creation of BDB HA nodes, the context variable can be used for varying attribute values.</p><p>In the example of initial configuration illustrated in this apendix, the following context variables are defined.
+ </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><span class="emphasis"><em>${ha.group_name}</em></span>; used to pass an HA group name</p></li><li class="listitem"><p><span class="emphasis"><em>${ha.node_name}</em></span>; used to pass a node name</p></li><li class="listitem"><p><span class="emphasis"><em>${ha.node_address}</em></span>; used to pass a node address</p></li><li class="listitem"><p><span class="emphasis"><em [...]
+ </p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="Java-Broker-Appendix-BDB-HA-initial-configuration-example"></a>H.1. Example of BDB HA 'Initial Configuration'</h2></div></div></div><p> An example of 'Initial Configuration' for BDB HA:</p><div class="example"><a id="d0e13545"></a><p class="title"><strong>Example H.1. BDB HA 'Initial configuration'</strong></p><div class="example-contents"><pre class="programlisting">
+{
+ "name": "${broker.name}",
+ "modelVersion" : "9.0",
+ "authenticationproviders" : [ {
+ "name" : "plain",
+ "type" : "Plain",
+ "users" : [ {
+ "name" : "guest",
+ "type" : "managed",
+ "password" : "guest"
+ } ]
+ } ],
+ "brokerloggers" : [ {
+ "name" : "logfile",
+ "type" : "File",
+ "fileName" : "${qpid.work_dir}${file.separator}log${file.separator}qpid.log",
+ "brokerloginclusionrules" : [ {
+ "name" : "Root",
+ "type" : "NameAndLevel",
+ "level" : "WARN",
+ "loggerName" : "ROOT"
+ }, {
+ "name" : "Qpid",
+ "type" : "NameAndLevel",
+ "level" : "INFO",
+ "loggerName" : "org.apache.qpid.*"
+ }, {
+ "name" : "Operational",
+ "type" : "NameAndLevel",
+ "level" : "INFO",
+ "loggerName" : "qpid.message.*"
+ }, {
+ "name" : "Statistics",
+ "type" : "NameAndLevel",
+ "level" : "INFO",
+ "loggerName" : "qpid.statistics.*"
+ } ]
+ }, {
+ "name" : "memory",
+ "type" : "Memory",
+ "brokerloginclusionrules" : [ {
+ "name" : "Root",
+ "type" : "NameAndLevel",
+ "level" : "WARN",
+ "loggerName" : "ROOT"
+ }, {
+ "name" : "Qpid",
+ "type" : "NameAndLevel",
+ "level" : "INFO",
+ "loggerName" : "org.apache.qpid.*"
+ }, {
+ "name" : "Operational",
+ "type" : "NameAndLevel",
+ "level" : "INFO",
+ "loggerName" : "qpid.message.*"
+ }, {
+ "name" : "Statistics",
+ "type" : "NameAndLevel",
+ "level" : "INFO",
+ "loggerName" : "qpid.statistics.*"
+ } ]
+ } ],
+ "ports" : [ {
+ "name" : "AMQP",
+ "port" : "${qpid.amqp_port}",
+ "authenticationProvider" : "plain",
+ "virtualhostaliases" : [ {
+ "name" : "nameAlias",
+ "type" : "nameAlias"
+ }, {
+ "name" : "defaultAlias",
+ "type" : "defaultAlias"
+ }, {
+ "name" : "hostnameAlias",
+ "type" : "hostnameAlias"
+ } ]
+ }, {
+ "name" : "HTTP",
+ "port" : "${qpid.http_port}",
+ "authenticationProvider" : "plain",
+ "protocols" : [ "HTTP" ]
+ }],
+ "virtualhostnodes" : [ {
+ "name" : "${ha.node_name}",
+ "type" : "BDB_HA",
+ "address" : "${ha.node_address}",
+ "groupName" : "${ha.group_name}",
+ "helperAddress" : "${ha.helper_address}",
+ "helperNodeName" : "${ha.helper_node_name}",
+ "permittedNodes" : "${ha.permitted_nodes}",
+ "priority" : "${ha.priority}",
+ "defaultVirtualHostNode" : "true",
+ "virtualHostInitialConfiguration" : "${qpid.initial_config_virtualhost_config}"
+ } ],
+ "plugins" : [ {
+ "type" : "MANAGEMENT-HTTP",
+ "name" : "httpManagement"
+ } ]
+}
+ </pre></div></div><br class="example-break" /></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Java-Broker-Appendix-Queue-Declare-Arguments.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="Java-Broker-Appendix-BDB-HA-initial-configuration-creation.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix G [...]
+
+ <hr/>
+
+ <ul id="-apache-navigation">
+ <li><a href="http://www.apache.org/">Apache</a></li>
+ <li><a href="http://www.apache.org/licenses/">License</a></li>
+ <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+ <li><a href="http://www.apache.org/foundation/thanks.html">Thanks!</a></li>
+ <li><a href="/security.html">Security</a></li>
+ <li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="" alt="Apache"/></a></li>
+ </ul>
+
+ <p id="-legal">
+ Apache Qpid, Messaging built on AMQP; Copyright © 2015
+ The Apache Software Foundation; Licensed under
+ the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
+ License, Version 2.0</a>; Apache Qpid, Qpid, Qpid Proton,
+ Proton, Apache, the Apache feather logo, and the Apache Qpid
+ project logo are trademarks of The Apache Software
+ Foundation; All other marks mentioned may be trademarks or
+ registered trademarks of their respective owners
+ </p>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Appendix-Environment-Variables.html b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Appendix-Environment-Variables.html
new file mode 100644
index 000000000..9c28144b3
--- /dev/null
+++ b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Appendix-Environment-Variables.html
@@ -0,0 +1,197 @@
+<!DOCTYPE html>
+<!--
+ -
+ - Licensed to the Apache Software Foundation (ASF) under one
+ - or more contributor license agreements. See the NOTICE file
+ - distributed with this work for additional information
+ - regarding copyright ownership. The ASF licenses this file
+ - to you under the Apache License, Version 2.0 (the
+ - "License"); you may not use this file except in compliance
+ - with the License. You may obtain a copy of the License at
+ -
+ - http://www.apache.org/licenses/LICENSE-2.0
+ -
+ - Unless required by applicable law or agreed to in writing,
+ - software distributed under the License is distributed on an
+ - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ - KIND, either express or implied. See the License for the
+ - specific language governing permissions and limitations
+ - under the License.
+ -
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+ <head>
+ <title>Appendix A. Environment Variables - Apache Qpid™</title>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+ <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
+ <link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
+ <script type="text/javascript">var _deferredFunctions = [];</script>
+ <script type="text/javascript" src="/deferred.js" defer="defer"></script>
+ <!--[if lte IE 8]>
+ <link rel="stylesheet" href="/ie.css" type="text/css"/>
+ <script type="text/javascript" src="/html5shiv.js"></script>
+ <![endif]-->
+
+ <!-- Redirects for `go get` and godoc.org -->
+ <meta name="go-import"
+ content="qpid.apache.org git https://gitbox.apache.org/repos/asf/qpid-proton.git"/>
+ <meta name="go-source"
+ content="qpid.apache.org
+https://github.com/apache/qpid-proton/blob/go1/README.md
+https://github.com/apache/qpid-proton/tree/go1{/dir}
+https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
+ </head>
+ <body>
+ <div id="-content">
+ <div id="-top" class="panel">
+ <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>
+
+ <a id="-search-link"><img width="22" height="16" src="" alt="Search"/></a>
+
+ <ul id="-global-navigation">
+ <li><a id="-logotype" href="/index.html">Apache Qpid<sup>™</sup></a></li>
+ <li><a href="/documentation.html">Documentation</a></li>
+ <li><a href="/download.html">Download</a></li>
+ <li><a href="/discussion.html">Discussion</a></li>
+ </ul>
+ </div>
+
+ <div id="-menu" class="panel" style="display: none;">
+ <div class="flex">
+ <section>
+ <h3>Project</h3>
+
+ <ul>
+ <li><a href="/overview.html">Overview</a></li>
+ <li><a href="/components/index.html">Components</a></li>
+ <li><a href="/releases/index.html">Releases</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Messaging APIs</h3>
+
+ <ul>
+ <li><a href="/proton/index.html">Qpid Proton</a></li>
+ <li><a href="/components/jms/index.html">Qpid JMS</a></li>
+ <li><a href="/components/messaging-api/index.html">Qpid Messaging API</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Servers and tools</h3>
+
+ <ul>
+ <li><a href="/components/broker-j/index.html">Broker-J</a></li>
+ <li><a href="/components/cpp-broker/index.html">C++ broker</a></li>
+ <li><a href="/components/dispatch-router/index.html">Dispatch router</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Resources</h3>
+
+ <ul>
+ <li><a href="/dashboard.html">Dashboard</a></li>
+ <li><a href="https://cwiki.apache.org/confluence/display/qpid/Index">Wiki</a></li>
+ <li><a href="/resources.html">More resources</a></li>
+ </ul>
+ </section>
+ </div>
+ </div>
+
+ <div id="-search" class="panel" style="display: none;">
+ <form action="http://www.google.com/search" method="get">
+ <input type="hidden" name="sitesearch" value="qpid.apache.org"/>
+ <input type="text" name="q" maxlength="255" autofocus="autofocus" tabindex="1"/>
+ <button type="submit">Search</button>
+ <a href="/search.html">More ways to search</a>
+ </form>
+ </div>
+
+ <div id="-middle" class="panel">
+ <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.0.0/index.html">Qpid Broker-J 9.0.0</a></li><li><a href="/releases/qpid-broker-j-9.0.0/book/index.html">Apache Qpid Broker-J</a></li><li>Appendix A. Environment Variables</li></ul>
+
+ <div id="-middle-content">
+ <div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix A. Environment Variables</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Java-Broker-Backup-And-Recovery-Virtualhost.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="Java-Broker-Appendix-System-Properties.html">Next</a></td></tr></table><hr /></div><div class="append [...]
+ contained within the <code class="literal">/bin</code> directory within the Broker distribution.</p><p>To take effect, these variables must be set within the shell (and exported - if using Unix)
+ before invoking the script.</p><div class="table"><a id="d0e10478"></a><p class="title"><strong>Table A.1. Environment variables</strong></p><div class="table-contents"><table summary="Environment variables" width="100%" border="1"><colgroup><col class="envvar" /><col class="default" /><col class="purpose" /></colgroup><thead><tr><th>Environment variable</th><th>Default</th><th>Purpose</th></tr></thead><tbody><tr><td><a id="Java-Broker-Appendix-Environment-Variables-Qpid-Home"></a>QP [...]
+ <p>None</p>
+ </td><td>
+ <p>The variable used to tell the Broker its installation directory. It must be an
+ absolute path. This is used to determine the location of Qpid's dependency JARs and
+ some configuration files.</p>
+ <p>Typically the value of this variable will look similar to
+ <code class="literal">c:\qpid\qpid-broker\\9.0.0</code> (Windows) or
+ <code class="literal">/usr/local/qpid/qpid-broker/9.0.0</code> (Unix). The
+ installation prefix will differ from installation to installation. </p>
+ <p>If not set, a value for <code class="literal">QPID_HOME</code> is derived from the location
+ of the script itself.</p>
+ </td></tr><tr><td><a id="Java-Broker-Appendix-Environment-Variables-Qpid-Work"></a>QPID_WORK</td><td>
+ <p>User's home directory</p>
+ </td><td>
+ <p>Used as the default root directory for any data written by the Broker. This is the
+ default location for any message data written to persistent stores and the Broker's
+ log file.</p>
+ <p>For example, <code class="literal">QPID_WORK=/var/qpidwork</code>.</p>
+ </td></tr><tr><td><a id="Java-Broker-Appendix-Environment-Variables-Qpid-Opts"></a>QPID_OPTS</td><td>
+ <p>None</p>
+ </td><td>
+ <p>This is the preferred mechanism for passing <a class="link" href="Java-Broker-Appendix-System-Properties.html" title="Appendix B. System Properties">Java system properties</a> to the
+ Broker. The value must be a list of system properties each separate by a space.
+ <code class="literal">-D<em class="replaceable"><code>name1</code></em>=<em class="replaceable"><code>value1</code></em>
+ -D<em class="replaceable"><code>name2</code></em>=<em class="replaceable"><code>value2</code></em></code>.
+ </p>
+ </td></tr><tr><td><a id="Java-Broker-Appendix-Environment-Variables-Qpid-Java-Gc"></a>QPID_JAVA_GC</td><td>
+ <code class="literal">-XX:+HeapDumpOnOutOfMemoryError -XX:+UseG1GC</code>
+ </td><td>
+ <p>This is the preferred mechanism for customising garbage collection behaviour. The
+ value should contain valid garbage collection options(s) for the target JVM.</p>
+ <p>Refer to the JVM's documentation for details.</p>
+ </td></tr><tr><td><a id="Java-Broker-Appendix-Environment-Variables-Qpid-Java-Mem"></a>QPID_JAVA_MEM</td><td>
+ <code class="literal">-Xmx512m -XX:MaxDirectMemorySize=1536m</code>
+ </td><td>
+ <p>This is the preferred mechanism for customising the size of the JVM's heap and
+ direct memory.
+ The value should contain valid memory option(s) for the target JVM. Oracle JVMs
+ understand <code class="literal">-Xmx</code> to specify a maximum heap size,
+ <code class="literal">-Xms</code> an initial size, and
+ <code class="literal">-XX:MaxDirectMemorySize</code> for the maximum amount of direct
+ memory.</p>
+ <p>For example, <code class="code">QPID_JAVA_MEM="-Xmx6g -XX:MaxDirectMemorySize=12g"</code> would
+ set a maximum heap size of 6GB and 12GB of direct memory.</p>
+ <p>Refer to the JVM's documentation for details.</p>
+ </td></tr><tr><td><a id="Java-Broker-Appendix-Environment-Variables-Java-Opts"></a>JAVA_OPTS</td><td>None</td><td>
+ <p>This is the preferred mechanism for passing any other JVM options. This variable is
+ commonly used to pass options for diagnostic purposes, for instance to turn on verbose
+ GC. <code class="literal">-verbose:gc</code>.</p>
+ <p>Refer to the JVM's documentation for details.</p>
+ </td></tr></tbody></table></div></div><br class="table-break" /></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Java-Broker-Backup-And-Recovery-Virtualhost.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="Java-Broker-Appendix-System-Properties.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">11.3. Virtualho [...]
+
+ <hr/>
+
+ <ul id="-apache-navigation">
+ <li><a href="http://www.apache.org/">Apache</a></li>
+ <li><a href="http://www.apache.org/licenses/">License</a></li>
+ <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+ <li><a href="http://www.apache.org/foundation/thanks.html">Thanks!</a></li>
+ <li><a href="/security.html">Security</a></li>
+ <li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="" alt="Apache"/></a></li>
+ </ul>
+
+ <p id="-legal">
+ Apache Qpid, Messaging built on AMQP; Copyright © 2015
+ The Apache Software Foundation; Licensed under
+ the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
+ License, Version 2.0</a>; Apache Qpid, Qpid, Qpid Proton,
+ Proton, Apache, the Apache feather logo, and the Apache Qpid
+ project logo are trademarks of The Apache Software
+ Foundation; All other marks mentioned may be trademarks or
+ registered trademarks of their respective owners
+ </p>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Appendix-Operation-Logging.html b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Appendix-Operation-Logging.html
new file mode 100644
index 000000000..4f004bfff
--- /dev/null
+++ b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Appendix-Operation-Logging.html
@@ -0,0 +1,572 @@
+<!DOCTYPE html>
+<!--
+ -
+ - Licensed to the Apache Software Foundation (ASF) under one
+ - or more contributor license agreements. See the NOTICE file
+ - distributed with this work for additional information
+ - regarding copyright ownership. The ASF licenses this file
+ - to you under the Apache License, Version 2.0 (the
+ - "License"); you may not use this file except in compliance
+ - with the License. You may obtain a copy of the License at
+ -
+ - http://www.apache.org/licenses/LICENSE-2.0
+ -
+ - Unless required by applicable law or agreed to in writing,
+ - software distributed under the License is distributed on an
+ - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ - KIND, either express or implied. See the License for the
+ - specific language governing permissions and limitations
+ - under the License.
+ -
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+ <head>
+ <title>Appendix C. Operational Logging - Apache Qpid™</title>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+ <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
+ <link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
+ <script type="text/javascript">var _deferredFunctions = [];</script>
+ <script type="text/javascript" src="/deferred.js" defer="defer"></script>
+ <!--[if lte IE 8]>
+ <link rel="stylesheet" href="/ie.css" type="text/css"/>
+ <script type="text/javascript" src="/html5shiv.js"></script>
+ <![endif]-->
+
+ <!-- Redirects for `go get` and godoc.org -->
+ <meta name="go-import"
+ content="qpid.apache.org git https://gitbox.apache.org/repos/asf/qpid-proton.git"/>
+ <meta name="go-source"
+ content="qpid.apache.org
+https://github.com/apache/qpid-proton/blob/go1/README.md
+https://github.com/apache/qpid-proton/tree/go1{/dir}
+https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
+ </head>
+ <body>
+ <div id="-content">
+ <div id="-top" class="panel">
+ <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>
+
+ <a id="-search-link"><img width="22" height="16" src="" alt="Search"/></a>
+
+ <ul id="-global-navigation">
+ <li><a id="-logotype" href="/index.html">Apache Qpid<sup>™</sup></a></li>
+ <li><a href="/documentation.html">Documentation</a></li>
+ <li><a href="/download.html">Download</a></li>
+ <li><a href="/discussion.html">Discussion</a></li>
+ </ul>
+ </div>
+
+ <div id="-menu" class="panel" style="display: none;">
+ <div class="flex">
+ <section>
+ <h3>Project</h3>
+
+ <ul>
+ <li><a href="/overview.html">Overview</a></li>
+ <li><a href="/components/index.html">Components</a></li>
+ <li><a href="/releases/index.html">Releases</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Messaging APIs</h3>
+
+ <ul>
+ <li><a href="/proton/index.html">Qpid Proton</a></li>
+ <li><a href="/components/jms/index.html">Qpid JMS</a></li>
+ <li><a href="/components/messaging-api/index.html">Qpid Messaging API</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Servers and tools</h3>
+
+ <ul>
+ <li><a href="/components/broker-j/index.html">Broker-J</a></li>
+ <li><a href="/components/cpp-broker/index.html">C++ broker</a></li>
+ <li><a href="/components/dispatch-router/index.html">Dispatch router</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Resources</h3>
+
+ <ul>
+ <li><a href="/dashboard.html">Dashboard</a></li>
+ <li><a href="https://cwiki.apache.org/confluence/display/qpid/Index">Wiki</a></li>
+ <li><a href="/resources.html">More resources</a></li>
+ </ul>
+ </section>
+ </div>
+ </div>
+
+ <div id="-search" class="panel" style="display: none;">
+ <form action="http://www.google.com/search" method="get">
+ <input type="hidden" name="sitesearch" value="qpid.apache.org"/>
+ <input type="text" name="q" maxlength="255" autofocus="autofocus" tabindex="1"/>
+ <button type="submit">Search</button>
+ <a href="/search.html">More ways to search</a>
+ </form>
+ </div>
+
+ <div id="-middle" class="panel">
+ <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.0.0/index.html">Qpid Broker-J 9.0.0</a></li><li><a href="/releases/qpid-broker-j-9.0.0/book/index.html">Apache Qpid Broker-J</a></li><li>Appendix C. Operational Logging</li></ul>
+
+ <div id="-middle-content">
+ <div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix C. Operational Logging</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Java-Broker-Appendix-System-Properties.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="Java-Broker-Appendix-Statistics-Reporting.html">Next</a></td></tr></table><hr /></div><div class="appendix"> [...]
+ the lives of objects within the Broker. These concise messages are designed to allow the user to
+ understand the actions of the Broker in retrospect. This is valuable for problem diagnosis and
+ provides a useful audit trail.</p><p>Each log message includes details of the entity causing the action (e.g. a management user
+ or messaging client connection), the entity receiving the action (e.g. a queue or connection)
+ and a description of operation itself.</p><p>The log messages have the following format:</p><pre class="screen">
+ [<code class="literal">Actor</code>] {[<code class="literal">Subject</code>]} [<code class="literal">Message Id</code>] [<code class="literal">Message Text</code>]
+ </pre><p>Where:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="literal">Actor</code> is the entity within the Broker that is
+ <span class="emphasis"><em>performing</em></span> the action. There are actors corresponding to the Broker
+ itself, Management, Connection, and Channels. Their format is described in the <a class="link" href="Java-Broker-Appendix-Operation-Logging.html#Java-Broker-Appendix-Operation-Logging-Actor-Format" title="Table C.1. Actors Entities">table</a> below.</p></li><li class="listitem"><p><code class="literal">Subject</code> (optional) is the entity within the Broker that is
+ <span class="emphasis"><em>receiving</em></span> the action. There are subjects corresponding to the
+ Connections, Channels, Queues, Exchanges, Subscriptions, and Message Stores. Their format is
+ described in the <a class="link" href="Java-Broker-Appendix-Operation-Logging.html#Java-Broker-Appendix-Operation-Logging-Subject-Format" title="Table C.2. Subject Entities">table</a> below.</p><p>Some actions are reflexive, in these cases the Actor and Subject will be equal.</p></li><li class="listitem"><p><code class="literal">Message Id</code> is an identifier for the type of message. It has the form
+ three alphas and four digits separated by a hyphen <code class="literal">AAA-9999</code>.</p></li><li class="listitem"><p><code class="literal">Message Text</code> is a textual description</p></li></ul></div><p>To illustrate, let's look at two examples.</p><p><code class="literal"><a class="link" href="Java-Broker-Appendix-Operation-Logging.html#Java-Broker-Appendix-Operation-Logging-Message-CON-1001">CON-1001</a></code> is used when a messages client makes an AMQP connection. The
+ connection actor (<code class="literal">con</code>) provides us with details of the peer's connection: the
+ user id used by the client (myapp1), their IP, ephemeral port number and the name of the virtual
+ host. The message text itself gives us further details about the connection: the client id, the
+ protocol version in used, and details of the client's qpid library.</p><pre class="screen">[con:8(myapp1@/127.0.0.1:52851/default)] CON-1001 : Open : Destination : AMQP(127.0.0.1:5672) : Protocol Version : 0-10 : Client ID : myapp1 : Client Version : 9.0.0 : Client Product : qpid</pre><p><code class="literal"><a class="link" href="Java-Broker-Appendix-Operation-Logging.html#Java-Broker-Appendix-Operation-Logging-Message-QUE-1001">QUE-1001</a></code> is used when a queue is created. T [...]
+ <code class="literal">con</code> tells us details of the connection performing the queue creation: the
+ user id used by the client (myapp1), the IP, ephemeral port number and the name of the virtual
+ host. The queue subject tells use the queue's name (myqueue) and the virtualhost. The message
+ itself tells us more information about the queue that is being created. </p><pre class="screen">[con:8(myapp1@/127.0.0.1:52851/default)/ch:0] [vh(/default)/qu(myqueue)] QUE-1001 : Create : Owner: myapp1 Transient</pre><p>The first two tables that follow describe the actor and subject entities, then the later
+ provide a complete catalogue of all supported messages.</p><div class="table"><a id="Java-Broker-Appendix-Operation-Logging-Actor-Format"></a><p class="title"><strong>Table C.1. Actors Entities</strong></p><div class="table-contents"><table summary="Actors Entities" width="100%" border="1"><colgroup><col class="actortype" /><col class="purpose" /></colgroup><thead><tr><th>Actor Type</th><th>Format and Purpose</th></tr></thead><tbody><tr><td rowspan="2">Broker</td><td>[Broker]</td></t [...]
+ <p>Used during startup and shutdown</p>
+ </td></tr><tr><td rowspan="2">Management</td><td>
+ [mng:<em class="replaceable"><code>userid</code></em>(<em class="replaceable"><code>clientip</code></em>:<em class="replaceable"><code>ephemeralport</code></em>)] </td></tr><tr><td>
+ <p>Used for operations performed by the Web Management interfaces.</p>
+ </td></tr><tr><td rowspan="2">Connection</td><td>
+ [con:<em class="replaceable"><code>connectionnumber</code></em>(<em class="replaceable"><code>userid</code></em>@/<em class="replaceable"><code>clientip</code></em>:<em class="replaceable"><code>ephemeralport</code></em>/<em class="replaceable"><code>virtualhostname</code></em>)]</td></tr><tr><td>
+ <p>Used for operations performed by a client connection. Note that connections are
+ numbered by a sequence number that begins at 1.</p>
+ </td></tr><tr><td rowspan="2">Channel</td><td>
+ [con:<em class="replaceable"><code>connectionnumber</code></em>(<em class="replaceable"><code>userid</code></em>@/<em class="replaceable"><code>clientip</code></em>:<em class="replaceable"><code>ephemeralport</code></em>/<em class="replaceable"><code>virtualhostname</code></em>/ch:<em class="replaceable"><code>channelnumber</code></em>)]</td></tr><tr><td>
+ <p>Used for operations performed by a client's channel (corresponds to the JMS
+ concept of Session). Note that channels are numbered by a sequence number that is
+ scoped by the owning connection.</p>
+ </td></tr><tr><td rowspan="2">Group</td><td> [grp(/<em class="replaceable"><code>groupname</code></em>)/vhn(/<em class="replaceable"><code>virtualhostnode
+ name</code></em>)]</td></tr><tr><td>
+ <p>Used for HA. Used for operations performed by the system itself often as a result
+ of actions performed on another node..</p>
+ </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="Java-Broker-Appendix-Operation-Logging-Subject-Format"></a><p class="title"><strong>Table C.2. Subject Entities</strong></p><div class="table-contents"><table summary="Subject Entities" width="100%" border="1"><colgroup><col class="subjtype" /><col class="purpose" /></colgroup><thead><tr><th>Subject Type</th><th>Format and Purpose</th></tr></thead><tbody><tr><td rowspan="2">Connection</td><td>
+ [con:<em class="replaceable"><code>connectionnumber</code></em>(<em class="replaceable"><code>userid</code></em>@/<em class="replaceable"><code>clientip</code></em>:<em class="replaceable"><code>ephemeralport</code></em>/<em class="replaceable"><code>virtualhostname</code></em>)]</td></tr><tr><td>
+ <p>A connection to the Broker.</p>
+ </td></tr><tr><td rowspan="2">Channel</td><td>
+ [con:<em class="replaceable"><code>connectionnumber</code></em>(<em class="replaceable"><code>userid</code></em>@/<em class="replaceable"><code>clientip</code></em>:<em class="replaceable"><code>ephemeralport</code></em>/<em class="replaceable"><code>virtualhostname</code></em>/ch:<em class="replaceable"><code>channelnumber</code></em>)]</td></tr><tr><td>
+ <p>A client's channel within a connection.</p>
+ </td></tr><tr><td rowspan="2">Subscription</td><td>
+ [sub:<em class="replaceable"><code>subscriptionnumber</code></em>(vh(/<em class="replaceable"><code>virtualhostname</code></em>)/qu(<em class="replaceable"><code>queuename</code></em>)]</td></tr><tr><td>
+ <p>A subscription to a queue. This corresponds to the JMS concept of a
+ Consumer.</p>
+ </td></tr><tr><td rowspan="2">Queue</td><td>[vh(/<em class="replaceable"><code>virtualhostname</code></em>)/qu(<em class="replaceable"><code>queuename</code></em>)]</td></tr><tr><td>
+ <p>A queue on a virtualhost</p>
+ </td></tr><tr><td rowspan="2">Exchange</td><td>[vh(/<em class="replaceable"><code>virtualhostname</code></em>)/ex(<em class="replaceable"><code>exchangetype</code></em>/<em class="replaceable"><code>exchangename</code></em>)]</td></tr><tr><td>
+ <p>An exchange on a virtualhost</p>
+ </td></tr><tr><td rowspan="2">Binding</td><td>
+ [vh(/<em class="replaceable"><code>virtualhostname</code></em>)/ex(<em class="replaceable"><code>exchangetype</code></em>/<em class="replaceable"><code>exchangename</code></em>)/qu(<em class="replaceable"><code>queuename</code></em>)/rk(<em class="replaceable"><code>bindingkey</code></em>)]</td></tr><tr><td>
+ <p>A binding between a queue and exchange with the giving binding key.</p>
+ </td></tr><tr><td rowspan="2">Message Store</td><td>
+ [vh(/<em class="replaceable"><code>virtualhostname</code></em>)/ms(<em class="replaceable"><code>messagestorename</code></em>)]</td></tr><tr><td>
+ <p>A virtualhost/message store on the Broker.</p>
+ </td></tr><tr><td rowspan="2">HA Group</td><td> [grp(/<em class="replaceable"><code>group name</code></em>)]</td></tr><tr><td>
+ <p>A HA group</p>
+ </td></tr></tbody></table></div></div><br class="table-break" /><p>The following tables lists all the operation log messages that can be produced by the
+ Broker, and the describes the circumstances under which each may be seen.</p><div class="table"><a id="Java-Broker-Appendix-Operation-Logging-Message-List-Broker"></a><p class="title"><strong>Table C.3. Broker Log Messages</strong></p><div class="table-contents"><table summary="Broker Log Messages" width="100%" border="1"><colgroup><col class="messageId" /><col class="messageText" /></colgroup><thead><tr><th>Message Id</th><th>Message Text / Purpose</th></tr></thead><tbody><tr><td ro [...]
+ <em class="replaceable"><code>build</code></em>
+ </td></tr><tr><td>
+ <p>Indicates that the Broker is starting up</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1002"></a>BRK-1002</td><td>Starting : Listening on <em class="replaceable"><code>transporttype</code></em> port
+ <em class="replaceable"><code>portnumber</code></em>
+ </td></tr><tr><td>
+ <p>Indicates that the Broker has begun listening on a port.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1003"></a>BRK-1003</td><td>Shutting down : <em class="replaceable"><code>transporttype</code></em> port
+ <em class="replaceable"><code>portnumber</code></em>
+ </td></tr><tr><td>
+ <p>Indicates that the Broker has stopped listening on a port.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1004"></a>BRK-1004</td><td>Qpid Broker Ready</td></tr><tr><td>
+ <p>Indicates that the Broker is ready for normal operations.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1005"></a>BRK-1005</td><td>Stopped</td></tr><tr><td>
+ <p>Indicates that the Broker is stopped.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1006"></a>BRK-1006</td><td>Using configuration : <em class="replaceable"><code>file</code></em>
+ </td></tr><tr><td>
+ <p>Indicates the name of the configuration store in use by the Broker.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1008"></a>BRK-1008</td><td><em class="replaceable"><code>delivered|received</code></em> : <em class="replaceable"><code>size</code></em>
+ kB/s peak : <em class="replaceable"><code>size</code></em> bytes total</td></tr><tr><td>
+ <p>Statistic - bytes delivered or received by the Broker.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1009"></a>BRK-1009</td><td><em class="replaceable"><code>delivered|received</code></em> : <em class="replaceable"><code>size</code></em>
+ msg/s peak : <em class="replaceable"><code>size</code></em> msgs total</td></tr><tr><td>
+ <p>Statistic - messages delivered or received by the Broker.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1010"></a>BRK-1010</td><td>Platform : JVM : <em class="replaceable"><code>vendor</code></em> version: <em class="replaceable"><code>version
+ </code></em> OS : <em class="replaceable"><code>operating system vendor</code></em> version:
+ <em class="replaceable"><code>operating system version</code></em>} arch: <em class="replaceable"><code>processor
+ architecture</code></em> cores: <em class="replaceable"><code>number of CPU cores</code></em></td></tr><tr><td>
+ <p>Key information about the environment hosting the Broker</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1011"></a>BRK-1011</td><td>Maximum Memory : Heap : <em class="replaceable"><code>size</code></em> bytes Direct : <em class="replaceable"><code>
+ bytes</code></em> size</td></tr><tr><td>
+ <p>Configured memory paramters for the Broker.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1012"></a>BRK-1012</td><td>Management Mode : User Details : <em class="replaceable"><code>management node user id</code></em> /
+ <em class="replaceable"><code>management mode password</code></em></td></tr><tr><td>
+ <p>Used when Broker is started in management mode to indicate the
+ management credentials that may be used connect to the Broker.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1016"></a>BRK-1016</td><td>Fatal error : <em class="replaceable"><code>root cause</code></em> : See log file for more information</td></tr><tr><td>
+ <p>Indicates that broker was shut down due to fatal error.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1017"></a>BRK-1017</td><td>Process : PID <em class="replaceable"><code>process identifier</code></em></td></tr><tr><td>
+ <p>Process identifier (PID) of the Broker process.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-BRK-1018"></a>BRK-1018</td><td>Operation : <em class="replaceable"><code>operation name</code></em></td></tr><tr><td>
+ <p>Indicates that the named operation has been invoked</p>
+ </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="Java-Broker-Appendix-Operation-Logging-Message-List-Management"></a><p class="title"><strong>Table C.4. Management Log Messages</strong></p><div class="table-contents"><table summary="Management Log Messages" width="100%" border="1"><colgroup><col class="messageId" /><col class="messageText" /></colgroup><thead><tr><th>Message Id</th><th>Message Text / Purpose</th></tr></thead><tbody><tr>< [...]
+ <p>Indicates that a Management plugin is starting up. Supported by Web management plugin.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-MNG-1002"></a>MNG-1002</td><td>Starting : <em class="replaceable"><code>type</code></em> : Listening on <em class="replaceable"><code>transporttype</code></em> port
+ <em class="replaceable"><code>port</code></em>
+ </td></tr><tr><td>
+ <p>Indicates that a Management plugin is listening on the given port.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-MNG-1003"></a>MNG-1003</td><td>Shutting down : <em class="replaceable"><code>type</code></em> : port
+ <em class="replaceable"><code>port</code></em></td></tr><tr><td>
+ <p>Indicates that a Management plugin is ceasing to listen on the given port.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-MNG-1004"></a>MNG-1004</td><td><em class="replaceable"><code>type</code></em> Management Ready</td></tr><tr><td>
+ <p>Indicates that a Management plugin is ready for work.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-MNG-1005"></a>MNG-1005</td><td><em class="replaceable"><code>type</code></em> Management Stopped</td></tr><tr><td>
+ <p>Indicates that a Management plugin is stopped.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-MNG-1007"></a>MNG-1007</td><td>Open : User <em class="replaceable"><code>username</code></em></td></tr><tr><td>
+ <p>Indicates the opening of a connection to Management has by the given
+ username.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-MNG-1008"></a>MNG-1008</td><td>Close : User <em class="replaceable"><code>username</code></em></td></tr><tr><td>
+ <p>Indicates the closing of a connection to Management has by the given
+ username.</p>
+ </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="Java-Broker-Appendix-Operation-Logging-Message-List-VirtualHost"></a><p class="title"><strong>Table C.5. Virtual Host Log Messages</strong></p><div class="table-contents"><table summary="Virtual Host Log Messages" width="100%" border="1"><colgroup><col class="messageId" /><col class="messageText" /></colgroup><thead><tr><th>Message Id</th><th>Message Text / Purpose</th></tr></thead><tbody> [...]
+ <p>Indicates that a virtualhost has been created.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-VHT-1002"></a>VHT-1002</td><td>Closed</td></tr><tr><td>
+ <p>Indicates that a virtualhost has been closed. This occurs on Broker
+ shutdown.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-VHT-1005"></a>VHT-1005</td><td>Unexpected fatal error</td></tr><tr><td>
+ <p>Virtualhost has suffered an unexpected fatal error, check the logs for more
+ details.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-VHT-1006"></a>VHT-1006</td><td>Filesystem is over <em class="replaceable"><code>size in %</code></em> per cent full, enforcing flow control.</td></tr><tr><td>
+ <p>Indicates that virtual host flow control is activated
+ when the usage of file system containing Virtualhost message store exceeded predefined limit.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-VHT-1007"></a>VHT-1007</td><td>Filesystem is no longer over <em class="replaceable"><code>size in %</code></em> per cent full.</td></tr><tr><td>
+ <p>Indicates that virtual host flow control is deactivated
+ when the usage of file system containing Virtualhost message falls under predefined limit.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-VHT-1008"></a>VHT-1008</td><td>Operation : <em class="replaceable"><code>operation name</code></em></td></tr><tr><td>
+ <p>Indicates that the named operation has been invoked</p>
+ </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="Java-Broker-Appendix-Operation-Logging-Message-List-Queue"></a><p class="title"><strong>Table C.6. Queue Log Messages</strong></p><div class="table-contents"><table summary="Queue Log Messages" width="100%" border="1"><colgroup><col class="messageId" /><col class="messageText" /></colgroup><thead><tr><th>Message Id</th><th>Message Text / Purpose</th></tr></thead><tbody><tr><td rowspan="2"> [...]
+ <em class="replaceable"><code>AutoDelete</code></em> [<em class="replaceable"><code>Durable</code></em>]
+ <em class="replaceable"><code>Transient</code></em> Priority:
+ <em class="replaceable"><code>numberofpriorities</code></em></td></tr><tr><td>
+ <p>Indicates that a queue has been created.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-QUE-1002"></a>QUE-1002</td><td>Deleted</td></tr><tr><td>
+ <p>Indicates that a queue has been deleted.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-QUE-1003"></a>QUE-1003</td><td>
+ Overfull : Size : <em class="replaceable"><code>size in bytes</code></em>, Capacity : <em class="replaceable"><code>resumesize in bytes</code></em>,
+ Messages : <em class="replaceable"><code>size in messages</code></em>, Message Capacity : <em class="replaceable"><code>resumesize in messages</code></em>
+ </td></tr><tr><td>
+ <p>Indicates that a queue has exceeded its permitted capacity when
+ <span class="emphasis"><em>Producer Flow Control</em></span> overflow policy is used.
+ See <a class="xref" href="Java-Broker-Concepts-Queues.html#Java-Broker-Concepts-Queue-OverflowPolicy" title="4.7.5. Controlling Queue Size">Section 4.7.5, “Controlling Queue Size”</a> for details.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-QUE-1004"></a>QUE-1004</td><td>
+ Underfull : Size : <em class="replaceable"><code>size in bytes</code></em>, Capacity : <em class="replaceable"><code>resumesize in bytes</code></em>,
+ Messages : <em class="replaceable"><code>size in messages</code></em>, Message Capacity : <em class="replaceable"><code>resumesize in messages</code></em>
+ </td></tr><tr><td>
+ <p>
+ Indicates that a queue has fallen to its resume capacity when
+ <span class="emphasis"><em>Producer Flow Control</em></span> overflow policy is used.
+ See <a class="xref" href="Java-Broker-Concepts-Queues.html#Java-Broker-Concepts-Queue-OverflowPolicy" title="4.7.5. Controlling Queue Size">Section 4.7.5, “Controlling Queue Size”</a> for details.
+ </p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-QUE-1005"></a>QUE-1005</td><td>
+ Dropped : <em class="replaceable"><code>number</code></em> messages, Depth : <em class="replaceable"><code>size</code></em> bytes,
+ <em class="replaceable"><code>size</code></em> messages, Capacity : <em class="replaceable"><code>limit</code></em> bytes,
+ <em class="replaceable"><code>limit</code></em> messages
+ </td></tr><tr><td>
+ <p>
+ Indicates that a given number of messages is deleted when <span class="emphasis"><em>Ring</em></span> overflow policy is
+ used and any of queue capacity limits is breached .
+ See <a class="xref" href="Java-Broker-Concepts-Queues.html#Java-Broker-Concepts-Queue-OverflowPolicy" title="4.7.5. Controlling Queue Size">Section 4.7.5, “Controlling Queue Size”</a> for details.
+ </p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-QUE-1016"></a>QUE-1016</td><td>Operation : <em class="replaceable"><code>operation name</code></em></td></tr><tr><td>
+ <p>Indicates that the named operation has been invoked</p>
+ </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="Java-Broker-Appendix-Operation-Logging-Message-List-Exchange"></a><p class="title"><strong>Table C.7. Exchange Log Messages</strong></p><div class="table-contents"><table summary="Exchange Log Messages" width="100%" border="1"><colgroup><col class="messageId" /><col class="messageText" /></colgroup><thead><tr><th>Message Id</th><th>Message Text / Purpose</th></tr></thead><tbody><tr><td row [...]
+ Name: <em class="replaceable"><code>exchange name</code></em></td></tr><tr><td>
+ <p>Indicates that an exchange has been created.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-EXH-1002"></a>EXH-1002</td><td>Deleted</td></tr><tr><td>
+ <p>Indicates that an exchange has been deleted.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-EXH-1003"></a>EXH-1003</td><td>Discarded Message : Name: <em class="replaceable"><code>exchange name</code></em> Routing Key:
+ <em class="replaceable"><code>routing key</code></em></td></tr><tr><td>
+ <p>Indicates that an exchange received a message that could not be routed to at least
+ one queue. queue has exceeded its permitted capacity. See <a class="xref" href="Java-Broker-Concepts-Exchanges.html#Java-Broker-Concepts-Exchanges-UnroutableMessage" title="4.6.4. Unrouteable Messages">Section 4.6.4, “Unrouteable Messages”</a> for details.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-EXH-1004"></a>EXH-1004</td><td>Operation : <em class="replaceable"><code>operation name</code></em></td></tr><tr><td>
+ <p>Indicates that the named operation has been invoked</p>
+ </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="Java-Broker-Appendix-Operation-Logging-Message-List-Binding"></a><p class="title"><strong>Table C.8. Binding Log Messages</strong></p><div class="table-contents"><table summary="Binding Log Messages" width="100%" border="1"><colgroup><col class="messageId" /><col class="messageText" /></colgroup><thead><tr><th>Message Id</th><th>Message Text / Purpose</th></tr></thead><tbody><tr><td rowspa [...]
+ <p>Indicates that a binding has been made between an exchange and a queue.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-BND-1002"></a>BND-1002</td><td>Deleted</td></tr><tr><td>
+ <p>Indicates that a binding has been deleted</p>
+ </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="Java-Broker-Appendix-Operation-Logging-Message-List-Connection"></a><p class="title"><strong>Table C.9. Connection Log Messages</strong></p><div class="table-contents"><table summary="Connection Log Messages" width="100%" border="1"><colgroup><col class="messageId" /><col class="messageText" /></colgroup><thead><tr><th>Message Id</th><th>Message Text / Purpose</th></tr></thead><tbody><tr>< [...]
+ <em class="replaceable"><code>protocol version</code></em> : Client ID : <em class="replaceable"><code>clientid</code></em> :
+ Client Version : <em class="replaceable"><code>client version</code></em> :
+ Client Product : <em class="replaceable"><code>client product</code></em></td></tr><tr><td>
+ <p>Indicates that a connection has been opened. The Broker logs one of these message
+ each time it learns more about the client as the connection is negotiated.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-CON-1002"></a>CON-1002</td><td>Close</td></tr><tr><td>
+ <p>Indicates that a connection has been closed. This message is logged regardless of
+ if the connection is closed normally, or if the connection is somehow lost e.g network
+ error. </p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-CON-1003"></a>CON-1003</td><td>Closed due to inactivity</td></tr><tr><td>
+ <p>Used when heart beating is in-use. Indicates that the connection has not received
+ a heartbeat for too long and is therefore closed as being inactive. </p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-CON-1004"></a>CON-1004</td><td>Connection dropped</td></tr><tr><td>
+ <p>Indicates that a connection has been unexpectedly closed by the peer. This usually
+ occurs if a machine hosting an application fails or the application's process is
+ abruptly terminated.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-CON-1005"></a>CON-1005</td><td>Client version <em class="replaceable"><code>version</code></em> logged by validation</td></tr><tr><td>
+ <p>Indicates that a connection has been received from client with a version number
+ that is configured to be logged. This feature may help teams manage software currency.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-CON-1006"></a>CON-1006</td><td>Client version <em class="replaceable"><code>version</code></em> rejected by validation</td></tr><tr><td>
+ <p>Indicates that a connection attempt has been received from client with a version number
+ that is configured to be rejected. This feature may help manage software currency.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-CON-1007"></a>CON-1007</td><td>Connection close initiated by operator</td></tr><tr><td>
+ <p>Indicates that a connection has been closed by the actions of an
+ Operator using manangement.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-CON-1009"></a>CON-1009</td><td>Uncommitted transaction(s) contains <em class="replaceable"><code>size</code></em> bytes of incoming message data
+ exceeding <em class="replaceable"><code>size</code></em> bytes limit. Messages will be flowed to disk.</td></tr><tr><td>
+ <p>Warns that the transactions associated with this connection contain so much uncommitted data that
+ a threshold has been breached. The connection responds by flowing the messages already associated with the
+ transactions and any new messages to disk. The connection reverts to normal behaviour once the
+ quantity of uncommitted data falls beneath the threshold. Normally this happens when the transactions
+ commit or rollback.
+ </p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-CON-1010"></a>CON-1010</td><td>Open Transaction : <em class="replaceable"><code>time</code></em> ms</td></tr><tr><td>
+ <p>Indicates that a messaging transaction has been open for longer than that
+ permitted. See <a class="xref" href="Java-Broker-Runtime-Transaction-Timeout.html" title="9.3. Transaction Timeout">Section 9.3, “Transaction Timeout”</a> for
+ more details.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-CON-1011"></a>CON-1011</td><td>Idle Transaction : <em class="replaceable"><code>time</code></em> ms</td></tr><tr><td>
+ <p>Indicates that a messaging transaction has been idle for longer than that
+ permitted. See <a class="xref" href="Java-Broker-Runtime-Transaction-Timeout.html" title="9.3. Transaction Timeout">Section 9.3, “Transaction Timeout”</a> for
+ more details.</p>
+ </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="Java-Broker-Appendix-Operation-Logging-Message-List-Channel"></a><p class="title"><strong>Table C.10. Channel Log Messages</strong></p><div class="table-contents"><table summary="Channel Log Messages" width="100%" border="1"><colgroup><col class="messageId" /><col class="messageText" /></colgroup><thead><tr><th>Message Id</th><th>Message Text / Purpose</th></tr></thead><tbody><tr><td rowsp [...]
+ <p>Indicates that a channel (corresponds to the JMS concept of Session) has been
+ created.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1002"></a>CHN-1002</td><td>Flow Started</td></tr><tr><td>
+ <p>Indicates message flow to a session has begun.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1003"></a>CHN-1003</td><td>Close</td></tr><tr><td>
+ <p>Indicates that a channel has been closed.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1004"></a>CHN-1004</td><td>Prefetch Size (bytes) <em class="replaceable"><code>size</code></em> : Count <em class="replaceable"><code>number
+ of messages</code></em></td></tr><tr><td>
+ <p>Indicates the prefetch size in use by a channel.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1005"></a>CHN-1005</td><td>Flow Control Enforced (Queue <em class="replaceable"><code>queue name</code></em>)</td></tr><tr><td>
+ <p>Indicates that producer flow control has been imposed on a channel owning to
+ excessive queue depth in the indicated queue. Produces using the channel will be
+ requested to pause the sending of messages.
+ See <a class="xref" href="Java-Broker-Concepts-Queues.html#Java-Broker-Concepts-Queue-OverflowPolicy" title="4.7.5. Controlling Queue Size">Section 4.7.5, “Controlling Queue Size”</a> for more details.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1006"></a>CHN-1006</td><td>Flow Control Removed</td></tr><tr><td>
+ <p>Indicates that producer flow control has been removed from a channel.
+ See <a class="xref" href="Java-Broker-Concepts-Queues.html#Java-Broker-Concepts-Queue-OverflowPolicy" title="4.7.5. Controlling Queue Size">Section 4.7.5, “Controlling Queue Size”</a> for more details.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1009"></a>CHN-1009</td><td>Discarded message : <em class="replaceable"><code>message number</code></em> as no alternate
+ exchange configured for queue : <em class="replaceable"><code>queue name</code></em>{1} routing key :
+ <em class="replaceable"><code>routing key</code></em></td></tr><tr><td>
+ <p>Indicates that a channel has discarded a message as the maximum delivery count has
+ been exceeded but the queue defines no alternate exchange. See <a class="xref" href="Java-Broker-Runtime-Handling-Undeliverable-Messages.html#Java-Broker-Runtime-Handling-Undeliverable-Messages-Maximum-Delivery-Count" title="9.4.2. Maximum Delivery Count">Section 9.4.2, “Maximum Delivery Count”</a> for more details. Note that <em class="replaceable"><code>message number</code></em> is an
+ internal message reference.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1010"></a>CHN-1010</td><td>Discarded message : <em class="replaceable"><code>message number</code></em> as no binding on
+ alternate exchange : <em class="replaceable"><code>exchange name</code></em></td></tr><tr><td>
+ <p>Indicates that a channel has discarded a message as the maximum delivery count has
+ been exceeded but the queue's alternate exchange has no binding to a queue. See <a class="xref" href="Java-Broker-Runtime-Handling-Undeliverable-Messages.html#Java-Broker-Runtime-Handling-Undeliverable-Messages-Maximum-Delivery-Count" title="9.4.2. Maximum Delivery Count">Section 9.4.2, “Maximum Delivery Count”</a> for more details. Note that <em class="replaceable"><code>message number</code></em> is an
+ internal message reference.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1011"></a>CHN-1011</td><td>Message : <em class="replaceable"><code>message number</code></em> moved to dead letter queue :
+ <em class="replaceable"><code>queue name</code></em></td></tr><tr><td>
+ <p>Indicates that a channel has moved a message to the named dead letter queue
+ </p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1012"></a>CHN-1012</td><td>Flow Control Ignored. Channel will be closed.</td></tr><tr><td>
+ <p>Indicates that a channel violating the imposed flow control has been closed
+ </p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-CHN-1014"></a>CHN-1014</td><td>Operation : <em class="replaceable"><code>operation name</code></em></td></tr><tr><td>
+ <p>Indicates that the named operation has been invoked</p>
+ </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="Java-Broker-Appendix-Operation-Logging-Message-List-Subscription"></a><p class="title"><strong>Table C.11. Subscription Log Messages</strong></p><div class="table-contents"><table summary="Subscription Log Messages" width="100%" border="1"><colgroup><col class="messageId" /><col class="messageText" /></colgroup><thead><tr><th>Message Id</th><th>Message Text / Purpose</th></tr></thead><tbod [...]
+ <em class="replaceable"><code>arguments</code></em></td></tr><tr><td>
+ <p>Indicates that a subscription (corresponds to JMS concept of a MessageConsumer)
+ has been created.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-SUB-1002"></a>SUB-1002</td><td>Close</td></tr><tr><td>
+ <p>Indicates that a subscription has been closed.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-SUB-1003"></a>SUB-1003</td><td>SUB-1003 : Suspended for <em class="replaceable"><code>time</code></em> ms</td></tr><tr><td>
+ <p>Indicates that a subscription has been in a suspened state for an unusual length
+ of time. This may be indicative of an consuming application that has stopped taking
+ messages from the consumer (i.e. a JMS application is not calling receive() or its
+ asynchronous message listener onMessage() is blocked in application code). It may also
+ indicate a generally overloaded system.
+ </p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-SUB-1004"></a>SUB-1004</td><td>Operation : <em class="replaceable"><code>operation name</code></em></td></tr><tr><td>
+ <p>Indicates that the named operation has been invoked</p>
+ </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="Java-Broker-Appendix-Operation-Logging-Message-List-MessageStore"></a><p class="title"><strong>Table C.12. Message Store Log Messages</strong></p><div class="table-contents"><table summary="Message Store Log Messages" width="100%" border="1"><colgroup><col class="messageId" /><col class="messageText" /></colgroup><thead><tr><th>Message Id</th><th>Message Text / Purpose</th></tr></thead><tb [...]
+ <p>Indicates that a message store has been created. The message store is responsible
+ for the storage of the messages themselves, including the message body and any
+ headers.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-MST-1002"></a>MST-1002</td><td>Store location : <em class="replaceable"><code>path</code></em></td></tr><tr><td>
+ <p>Indicates that the message store is using <em class="replaceable"><code>path</code></em> for the
+ location of the message store.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-MST-1003"></a>MST-1003</td><td>Closed</td></tr><tr><td>
+ <p>Indicates that the message store has been closed.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-MST-1004"></a>MST-1004</td><td>Recovery Start</td></tr><tr><td>
+ <p>Indicates that message recovery has begun.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-MST-1005"></a>MST-1005</td><td>Recovered <em class="replaceable"><code>number of messages</code></em> messages.</td></tr><tr><td>
+ <p>Indicates that recovery recovered the given number of messages from the
+ store.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-MST-1006"></a>MST-1006</td><td>Recovered Complete</td></tr><tr><td>
+ <p>Indicates that the message recovery is concluded.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-MST-1007"></a>MST-1007</td><td>Store Passivated</td></tr><tr><td>
+ <p>The store is entering a passive state where is it unavailable for normal
+ operations. Currently this message is used by HA when the node is in replica
+ state.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-MST-1008"></a>MST-1008</td><td>Store overfull, flow control will be enforced</td></tr><tr><td>
+ <p>The store has breached is maximum configured size.
+ See <a class="xref" href="Java-Broker-Runtime-Disk-Space-Management.html#Java-Broker-Runtime-Disk-Space-Management-Producer-Flow-Control" title="9.2.1. Disk quota-based flow control">Section 9.2.1, “Disk quota-based flow control”</a> for details.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-MST-1009"></a>MST-1009</td><td>Store overfull condition cleared</td></tr><tr><td>
+ <p>The store size has fallen beneath its resume capacity and therefore flow control
+ has been rescinded. See <a class="xref" href="Java-Broker-Runtime-Disk-Space-Management.html#Java-Broker-Runtime-Disk-Space-Management-Producer-Flow-Control" title="9.2.1. Disk quota-based flow control">Section 9.2.1, “Disk quota-based flow control”</a>
+ for details. </p>
+ </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="Java-Broker-Appendix-Operation-Logging-Message-List-TransactionStore"></a><p class="title"><strong>Table C.13. Transaction Store Log Messages</strong></p><div class="table-contents"><table summary="Transaction Store Log Messages" width="100%" border="1"><colgroup><col class="messageId" /><col class="messageText" /></colgroup><thead><tr><th>Message Id</th><th>Message Text / Purpose</th></tr [...]
+ <p>Indicates that a transaction store has been created. The transaction store is
+ responsible for the storage of messages instances, that is, the presence of a message
+ on a queue.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-TXN-1002"></a>TXN-1002</td><td>Store location : <em class="replaceable"><code>path</code></em></td></tr><tr><td>
+ <p>Indicates that the transaction store is using <em class="replaceable"><code>path</code></em> for
+ the location of the store.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-TXN-1003"></a>TXN-1003</td><td>Closed</td></tr><tr><td>
+ <p>Indicates that the transaction store has been closed.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-TXN-1004"></a>TXN-1004</td><td>Recovery Start</td></tr><tr><td>
+ <p>Indicates that transaction recovery has begun.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-MST-TXN"></a>TXN-1005</td><td>Recovered <em class="replaceable"><code>number</code></em> messages for queue
+ <em class="replaceable"><code>name</code></em>.</td></tr><tr><td>
+ <p>Indicates that recovery recovered the given number of message instances for the
+ given queue.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-TXN-1006"></a>TXN-1006</td><td>Recovered Complete</td></tr><tr><td>
+ <p>Indicates that the message recovery is concluded.</p>
+ </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="Java-Broker-Appendix-Operation-Logging-Message-List-ConfigurationStore"></a><p class="title"><strong>Table C.14. Configuration Store Log Messages</strong></p><div class="table-contents"><table summary="Configuration Store Log Messages" width="100%" border="1"><colgroup><col class="messageId" /><col class="messageText" /></colgroup><thead><tr><th>Message Id</th><th>Message Text / Purpose</t [...]
+ <p>Indicates that a configuration store has been created. The configuration store is
+ responsible for the storage of the definition of objects such as queues, exchanges,
+ and bindings.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-CFG-1002"></a>CFG-1002</td><td>Store location : <em class="replaceable"><code>path</code></em></td></tr><tr><td>
+ <p>Indicates that the configuration store is using <em class="replaceable"><code>path</code></em>
+ for the location of the store.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-CFG-1003"></a>CFG-1003</td><td>Closed</td></tr><tr><td>
+ <p>Indicates that the configuration store has been closed.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-CFG-1004"></a>CFG-1004</td><td>Recovery Start</td></tr><tr><td>
+ <p>Indicates that configuration recovery has begun.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-CFG-1005"></a>CFG-1005</td><td>Recovered Complete</td></tr><tr><td>
+ <p>Indicates that the configuration recovery is concluded.</p>
+ </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="Java-Broker-Appendix-Operation-Logging-Message-List-HA"></a><p class="title"><strong>Table C.15. HA Log Messages</strong></p><div class="table-contents"><table summary="HA Log Messages" width="100%" border="1"><colgroup><col class="messageId" /><col class="messageText" /></colgroup><thead><tr><th>Message Id</th><th>Message Text / Purpose</th></tr></thead><tbody><tr><td rowspan="2"><a id="J [...]
+ <p>This HA node has been created.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-HA-1002"></a>HA-1002</td><td>Deleted</td></tr><tr><td>
+ <p>This HA node has been deleted</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-HA-1003"></a>HA-1003</td><td>Added : Node : '<em class="replaceable"><code>name</code></em>'
+ (<em class="replaceable"><code>host:port</code></em>)</td></tr><tr><td>
+ <p>A new node has been added to the group.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-HA-1004"></a>HA-1004</td><td>Removed : Node : '<em class="replaceable"><code>name</code></em>'
+ (<em class="replaceable"><code>host:port</code></em>)</td></tr><tr><td>
+ <p>The node has been removed from the group. This removal is permanent.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-HA-1005"></a>HA-1005</td><td>Joined : Node : '<em class="replaceable"><code>name</code></em>'
+ (<em class="replaceable"><code>host:port</code></em>)</td></tr><tr><td>
+ <p>The node has become reachable. This may be as a result of the node being
+ restarted, or a network problem may have been resolved.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-HA-1006"></a>HA-1006</td><td>Left : Node : '<em class="replaceable"><code>name</code></em>'
+ (<em class="replaceable"><code>host:port</code></em>)</td></tr><tr><td>
+ <p>The node is no longer reachable. This may be as a result of the node being stopped
+ or a network partition may be preventing it from being connected. The node is still a
+ member of the group.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-HA-1007"></a>HA-1007</td><td>HA-1007 : Master transfer requested : to '<em class="replaceable"><code>name</code></em>'
+ (<em class="replaceable"><code>host:port</code></em>)</td></tr><tr><td>
+ <p>Indicates that a master transfer operation has been requested.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-HA-1008"></a>HA-1008</td><td>HA-1008 : Intruder detected : Node '<em class="replaceable"><code>name</code></em>'
+ (<em class="replaceable"><code>host:port</code></em>)</td></tr><tr><td>
+ <p>Indicates that an unexpected node has joined the group. The virtualhost node will
+ go into the ERROR state in response to the condition.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-HA-1009"></a>HA-1009</td><td>HA-1009 : Insufficient replicas contactable</td></tr><tr><td>
+ <p>This node (which was in the master role) no longer has sufficient replica in
+ contact in order to complete transactions.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-HA-1010"></a>HA-1010</td><td>HA-1010 : Role change reported: Node : '<em class="replaceable"><code>name</code></em>'
+ (<em class="replaceable"><code>host:port</code></em>) : from <em class="replaceable"><code>role</code></em> to
+ <em class="replaceable"><code>role</code></em></td></tr><tr><td>
+ <p>Indicates that the node has changed role within the group.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-HA-1011"></a>HA-1011</td><td>HA-1011 : Minimum group size : <em class="replaceable"><code>new group size</code></em></td></tr><tr><td>
+ <p>The quorum requirements from completing elections or transactions has been
+ changed.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-HA-1012"></a>HA-1012</td><td>HA-1012 : Priority : <em class="replaceable"><code>priority</code></em></td></tr><tr><td>
+ <p>The priority of the object node has been changed. Zero indicates that the node
+ cannot be elected master.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-HA-1013"></a>HA-1013</td><td>HA-1013 : Designated primary : <em class="replaceable"><code>true|false</code></em></td></tr><tr><td>
+ <p>This node has been designated primary and can now operate solo. Applies to two
+ node groups only. See <a class="xref" href="Java-Broker-High-Availability-Behaviour.html#Java-Broker-High-Availability-Behaviour-DesignatedPrimary" title="10.4.5. Allow to Operate Solo">Section 10.4.5, “Allow to Operate Solo”</a></p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-HA-1014"></a>HA-1014</td><td>HA-1014 : Diverged transactions discarded</td></tr><tr><td>
+ <p>This node is in the process of rejoining the group but has discovered that some
+ of its transactions differ from those of the current master. The node will
+ automatically roll-back (i.e. discard) the diverging transactions in order to be
+ allowed to rejoin the group. This situation can only usually occur as a result of use
+ of the weak durability options. These allow the group to operate with fewer than
+ quorum nodes and therefore allow the inconsistencies to develop. </p>
+ <p>On encountering this condition, it is <span class="emphasis"><em>strongly</em></span> recommendend
+ to run an application level reconcilation to determine the data that has been
+ lost.</p>
+ </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="Java-Broker-Appendix-Operation-Logging-Message-List-Port"></a><p class="title"><strong>Table C.16. Port Log Messages</strong></p><div class="table-contents"><table summary="Port Log Messages" width="100%" border="1"><colgroup><col class="messageId" /><col class="messageText" /></colgroup><thead><tr><th>Message Id</th><th>Message Text / Purpose</th></tr></thead><tbody><tr><td rowspan="2"><a [...]
+ <p>Port has been created.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1002"></a>PRT-1002</td><td>Open</td></tr><tr><td>
+ <p>Port has been open</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1003"></a>PRT-1003</td><td>Close</td></tr><tr><td>
+ <p>Port has been closed</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1004"></a>PRT-1004</td><td>Connection count <em class="replaceable"><code>number</code></em> within <em class="replaceable"><code>warn limit</code></em> % of maximum <em class="replaceable"><code>limit</code></em>
+ </td></tr><tr><td>
+ <p>Warns that number of open connections approaches maximum allowed limit</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1005"></a>PRT-1005</td><td>Connection from <em class="replaceable"><code>peer</code></em> rejected. Maximum connection count (<em class="replaceable"><code>limit</code></em>) for this port already reached.</td></tr><tr><td>
+ <p>Connection from given host is rejected because of reaching the maximum allowed limit</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1007"></a>PRT-1007</td><td>Unsupported protocol header received <em class="replaceable"><code>header bytes</code></em>, replying with <em class="replaceable"><code>AMQP version</code></em></td></tr><tr><td>
+ <p>Ususualy indicates an attempt to make an non-AMQP connection on an AMQP port, for instance,
+ with a web browser.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1008"></a>PRT-1008</td><td>Connection from <em class="replaceable"><code>address</code></em> rejected</td></tr><tr><td>
+ <p>Incoming connection is rejected because the port's connection limits are
+ already reached.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1009"></a>PRT-1009</td><td>FAILED to bind <em class="replaceable"><code>name</code></em> service to <em class="replaceable"><code>port number</code></em></td></tr><tr><td>
+ <p>The given port number could not be bound because it is already in-use.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-PRT-1010"></a>PRT-1010</td><td>Operation : <em class="replaceable"><code>operation name</code></em></td></tr><tr><td>
+ <p>Indicates that the named operation has been invoked</p>
+ </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="Java-Broker-Appendix-Operation-Logging-Message-List-ResourceLimit"></a><p class="title"><strong>Table C.17. Resource Limit Log Messages</strong></p><div class="table-contents"><table summary="Resource Limit Log Messages" width="100%" border="1"><colgroup><col class="messageId" /><col class="messageText" /></colgroup><thead><tr><th>Message Id</th><th>Message Text / Purpose</th></tr></thead> [...]
+ <p>Connection has been accepted.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-RL-1002"></a>RL-1002</td><td>Reject</td></tr><tr><td>
+ <p>Connection has been rejected.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-RL-1003"></a>RL-1003</td><td>Info</td></tr><tr><td>
+ <p>An informational message regarding connection limits.</p>
+ </td></tr></tbody></table></div></div><br class="table-break" /><div class="table"><a id="Java-Broker-Appendix-Operation-Logging-Message-List-User"></a><p class="title"><strong>Table C.18. User Log Messages</strong></p><div class="table-contents"><table summary="User Log Messages" width="100%" border="1"><colgroup><col class="messageId" /><col class="messageText" /></colgroup><thead><tr><th>Message Id</th><th>Message Text / Purpose</th></tr></thead><tbody><tr><td rowspan="2"><a [...]
+ <p>User has been created.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-USR-1002"></a>USR-1002</td><td>Update</td></tr><tr><td>
+ <p>User has been updated.</p>
+ </td></tr><tr><td rowspan="2"><a id="Java-Broker-Appendix-Operation-Logging-Message-USR-1003"></a>USR-1003</td><td>Delete</td></tr><tr><td>
+ <p>User has been deleted.</p>
+ </td></tr></tbody></table></div></div><br class="table-break" /></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Java-Broker-Appendix-System-Properties.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="Java-Broker-Appendix-Statistics-Reporting.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix B. Syste [...]
+
+ <hr/>
+
+ <ul id="-apache-navigation">
+ <li><a href="http://www.apache.org/">Apache</a></li>
+ <li><a href="http://www.apache.org/licenses/">License</a></li>
+ <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+ <li><a href="http://www.apache.org/foundation/thanks.html">Thanks!</a></li>
+ <li><a href="/security.html">Security</a></li>
+ <li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="" alt="Apache"/></a></li>
+ </ul>
+
+ <p id="-legal">
+ Apache Qpid, Messaging built on AMQP; Copyright © 2015
+ The Apache Software Foundation; Licensed under
+ the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
+ License, Version 2.0</a>; Apache Qpid, Qpid, Qpid Proton,
+ Proton, Apache, the Apache feather logo, and the Apache Qpid
+ project logo are trademarks of The Apache Software
+ Foundation; All other marks mentioned may be trademarks or
+ registered trademarks of their respective owners
+ </p>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/content/releases/qpid-broker-j-7.1.12/index.html b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Appendix-Queue-Alerts.html
similarity index 55%
copy from content/releases/qpid-broker-j-7.1.12/index.html
copy to content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Appendix-Queue-Alerts.html
index 16d35d7a6..43a54cbd8 100644
--- a/content/releases/qpid-broker-j-7.1.12/index.html
+++ b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Appendix-Queue-Alerts.html
@@ -21,7 +21,7 @@
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
- <title>Qpid Broker-J 7.1.12 - Apache Qpid™</title>
+ <title>Appendix E. Queue Alerts - Apache Qpid™</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
@@ -111,92 +111,35 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
</div>
<div id="-middle" class="panel">
- <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li>Qpid Broker-J 7.1.12</li></ul>
+ <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.0.0/index.html">Qpid Broker-J 9.0.0</a></li><li><a href="/releases/qpid-broker-j-9.0.0/book/index.html">Apache Qpid Broker-J</a></li><li>Appendix E. Queue Alerts</li></ul>
<div id="-middle-content">
- <h1 id="qpid-broker-j-7112">Qpid Broker-J 7.1.12</h1>
-
-<p><a href="/components/broker-j/index.html">Qpid Broker-J</a> is a message broker written in Java that stores, routes,
-and forwards messages using AMQP 1.0, 0-10, 0-9-1, 0-9 and 0-8. More about
-<a href="/index.html">Qpid</a>.</p>
-
-<p>For a detailed list of the changes in this release, see the <a href="release-notes.html">release
-notes</a>.</p>
-
-<p>It's important to <a href="/download.html#verify-what-you-download">verify the
-integrity</a> of the
-files you download.</p>
-
-<h2 id="source-archives">Source archives</h2>
-
-<table>
-<thead>
-<tr>
- <th>Content</th>
- <th>Download</th>
- <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12/apache-qpid-broker-j-7.1.12-src.tar.gz">apache-qpid-broker-j-7.1.12-src.tar.gz</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/apache-qpid-broker-j-7.1.12-src.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/apache-qpid-broker-j-7.1.12-src.tar.gz.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="binaries">Binaries</h2>
-
-<table>
-<thead>
-<tr>
- <th>Content</th>
- <th>Download</th>
- <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.tar.gz">apache-qpid-broker-j-7.1.12-bin.tar.gz</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.tar.gz.sha512">SHA512</a></td>
-</tr>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.zip">apache-qpid-broker-j-7.1.12-bin.zip</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.zip.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.zip.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="documentation">Documentation</h2>
-
-<div class="two-column">
-
-<ul>
-<li><a href="book/Java-Broker-Installation.html">Installing Qpid Broker-J</a></li>
-<li><a href="book/index.html">Broker book</a></li>
-</ul>
-
-</div>
-
-<h2 id="more-information">More information</h2>
-
-<ul>
-<li><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12">All release artefacts</a></li>
-<li><a href="https://issues.apache.org/jira/issues/?jql=project+%3D+QPID+AND+fixVersion+%3D+%27qpid-java-broker-7.1.12%27+AND+resolution+%3D+%27fixed%27+ORDER+BY+priority+DESC">Resolved issues in JIRA</a></li>
-<li><a href="https://gitbox.apache.org/repos/asf/qpid-broker-j.git/tree/refs/tags/7.1.12">Source repository tag</a></li>
-</ul>
-
-<script type="text/javascript">
- _deferredFunctions.push(function() {
- if ("7.1.12" === "8.0.6" || "7.1.12" === "") {
- _modifyCurrentReleaseLinks();
- }
- });
-</script>
-
+ <div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix E. Queue Alerts</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="apds03.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="Java-Broker-Miscellaneous.html">Next</a></td></tr></table><hr /></div><div class="appendix"><div class="titlepage"><div><div><h1 class="title"><a i [...]
+ these limits will be periodically written to the log if these limits are breached, until the
+ condition is rectified.</p><p>For example, if queue <code class="literal">myqueue</code> is configured with a message count alert of
+ 1000, and then owing to a failure of a downstream system messages begin to accumulate on the
+ queue, the following alerts will be written periodically to the log. </p><pre class="screen">INFO [default:VirtualHostHouseKeepingTask] (queue.NotificationCheck) - MESSAGE_COUNT_ALERT On Queue myqueue - 1272: Maximum count on queue threshold (1000) breached.
+ </pre><p>Note that queue alerts are <span class="emphasis"><em>soft</em></span> in nature; breaching the limit will
+ merely cause the alerts to be generated but messages will still be accepted to the queue.</p><div class="table"><a id="Java-Broker-Appendix-Queue-Alerts-Alerting-Messages"></a><p class="title"><strong>Table E.1. Queue Alerts</strong></p><div class="table-contents"><table summary="Queue Alerts" width="100%" border="1"><colgroup><col class="alertname" /><col class="purpose" /></colgroup><thead><tr><th>Alert Name</th><th>Alert Format and Purpose</th></tr></thead><tbody><tr><td rowspan=" [...]
+ <em class="replaceable"><code>number of messages</code></em>: Maximum count on queue threshold
+ (<em class="replaceable"><code>limit</code></em>) breached. </td></tr><tr><td>
+ <p>The number of messages on the given queue has breached its configured
+ limit.</p>
+ </td></tr><tr><td rowspan="2">MESSAGE_SIZE_ALERT</td><td> MESSAGE_SIZE_ALERT On Queue <em class="replaceable"><code>queuename</code></em>
+ -<em class="replaceable"><code>message size</code></em> : Maximum message size threshold
+ (<em class="replaceable"><code>limit</code></em>) breached. [Message ID=<em class="replaceable"><code>message
+ id</code></em>]</td></tr><tr><td>
+ <p>The size of an individual messages has breached its configured limit.</p>
+ </td></tr><tr><td rowspan="2">QUEUE_DEPTH_ALERT</td><td> QUEUE_DEPTH_ALERT On Queue <em class="replaceable"><code>queuename</code></em> -
+ <em class="replaceable"><code>total size of all messages on queue</code></em> : Maximum queue depth
+ threshold (<em class="replaceable"><code>limit</code></em>) breached.</td></tr><tr><td>
+ <p>The total size of all messages on the queue has breached its configured
+ limit.</p>
+ </td></tr><tr><td rowspan="2">MESSAGE_AGE_ALERT</td><td>MESSAGE_AGE_ALERT On Queue <em class="replaceable"><code>queuename</code></em> - <em class="replaceable"><code>age
+ of message</code></em> : Maximum age on queue threshold
+ (<em class="replaceable"><code>limit</code></em>) breached. </td></tr><tr><td>
+ <p>The age of a message on the given queue has breached its configured limit.</p>
+ </td></tr></tbody></table></div></div><br class="table-break" /></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="apds03.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="Java-Broker-Miscellaneous.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">D.3. Examples </td><td width="20%" align="center"><a accesskey="h [...]
<hr/>
diff --git a/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Appendix-Queue-Declare-Arguments.html b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Appendix-Queue-Declare-Arguments.html
new file mode 100644
index 000000000..cc7988ba7
--- /dev/null
+++ b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Appendix-Queue-Declare-Arguments.html
@@ -0,0 +1,233 @@
+<!DOCTYPE html>
+<!--
+ -
+ - Licensed to the Apache Software Foundation (ASF) under one
+ - or more contributor license agreements. See the NOTICE file
+ - distributed with this work for additional information
+ - regarding copyright ownership. The ASF licenses this file
+ - to you under the Apache License, Version 2.0 (the
+ - "License"); you may not use this file except in compliance
+ - with the License. You may obtain a copy of the License at
+ -
+ - http://www.apache.org/licenses/LICENSE-2.0
+ -
+ - Unless required by applicable law or agreed to in writing,
+ - software distributed under the License is distributed on an
+ - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ - KIND, either express or implied. See the License for the
+ - specific language governing permissions and limitations
+ - under the License.
+ -
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+ <head>
+ <title>Appendix G. Queue Declaration Arguments supported by the Broker - Apache Qpid™</title>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+ <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
+ <link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
+ <script type="text/javascript">var _deferredFunctions = [];</script>
+ <script type="text/javascript" src="/deferred.js" defer="defer"></script>
+ <!--[if lte IE 8]>
+ <link rel="stylesheet" href="/ie.css" type="text/css"/>
+ <script type="text/javascript" src="/html5shiv.js"></script>
+ <![endif]-->
+
+ <!-- Redirects for `go get` and godoc.org -->
+ <meta name="go-import"
+ content="qpid.apache.org git https://gitbox.apache.org/repos/asf/qpid-proton.git"/>
+ <meta name="go-source"
+ content="qpid.apache.org
+https://github.com/apache/qpid-proton/blob/go1/README.md
+https://github.com/apache/qpid-proton/tree/go1{/dir}
+https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
+ </head>
+ <body>
+ <div id="-content">
+ <div id="-top" class="panel">
+ <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>
+
+ <a id="-search-link"><img width="22" height="16" src="" alt="Search"/></a>
+
+ <ul id="-global-navigation">
+ <li><a id="-logotype" href="/index.html">Apache Qpid<sup>™</sup></a></li>
+ <li><a href="/documentation.html">Documentation</a></li>
+ <li><a href="/download.html">Download</a></li>
+ <li><a href="/discussion.html">Discussion</a></li>
+ </ul>
+ </div>
+
+ <div id="-menu" class="panel" style="display: none;">
+ <div class="flex">
+ <section>
+ <h3>Project</h3>
+
+ <ul>
+ <li><a href="/overview.html">Overview</a></li>
+ <li><a href="/components/index.html">Components</a></li>
+ <li><a href="/releases/index.html">Releases</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Messaging APIs</h3>
+
+ <ul>
+ <li><a href="/proton/index.html">Qpid Proton</a></li>
+ <li><a href="/components/jms/index.html">Qpid JMS</a></li>
+ <li><a href="/components/messaging-api/index.html">Qpid Messaging API</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Servers and tools</h3>
+
+ <ul>
+ <li><a href="/components/broker-j/index.html">Broker-J</a></li>
+ <li><a href="/components/cpp-broker/index.html">C++ broker</a></li>
+ <li><a href="/components/dispatch-router/index.html">Dispatch router</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Resources</h3>
+
+ <ul>
+ <li><a href="/dashboard.html">Dashboard</a></li>
+ <li><a href="https://cwiki.apache.org/confluence/display/qpid/Index">Wiki</a></li>
+ <li><a href="/resources.html">More resources</a></li>
+ </ul>
+ </section>
+ </div>
+ </div>
+
+ <div id="-search" class="panel" style="display: none;">
+ <form action="http://www.google.com/search" method="get">
+ <input type="hidden" name="sitesearch" value="qpid.apache.org"/>
+ <input type="text" name="q" maxlength="255" autofocus="autofocus" tabindex="1"/>
+ <button type="submit">Search</button>
+ <a href="/search.html">More ways to search</a>
+ </form>
+ </div>
+
+ <div id="-middle" class="panel">
+ <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.0.0/index.html">Qpid Broker-J 9.0.0</a></li><li><a href="/releases/qpid-broker-j-9.0.0/book/index.html">Apache Qpid Broker-J</a></li><li>Appendix G. Queue Declaration Arguments supported by the Broker</li></ul>
+
+ <div id="-middle-content">
+ <div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix G. Queue Declaration Arguments supported by the Broker</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Java-Broker-Miscellaneous-Installing-External-JDBC-Driver.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="Java-Broker-Appendix-BDB-HA-initial-configuration.html">N [...]
+ <span class="emphasis"><em>Qpid Broker-J</em></span>
+ supports a number of custom arguments which can be specified as part of <span class="emphasis"><em>queue.declare</em></span>
+ commands for AMQP 0-x protocols. This section provides an overview of the supported arguments.
+ </p><div class="table"><a id="Java-Broker-Appendix-Supported-Queue-Declare-Arguments"></a><p class="title"><strong>Table G.1. Queue declare arguments</strong></p><div class="table-contents"><table summary="Queue declare arguments" border="1"><colgroup><col class="argname" /><col class="description" /></colgroup><thead><tr><th>Argument Name</th><th>Description</th></tr></thead><tbody><tr><td><a id="Java-Broker-Appendix-Queue-Declare-Arguments-Overflow-Policy"></a>
+ <p>Declaration of overflow policy.
+ See
+ <a class="xref" href="Java-Broker-Concepts-Queues.html#Java-Broker-Concepts-Queue-OverflowPolicy" title="4.7.5. Controlling Queue Size">Section 4.7.5, “Controlling Queue Size”</a>
+ for more details.
+ </p>
+ </td><td class="auto-generated"> </td></tr><tr><td><a id="Java-Broker-Appendix-Queue-Declare-Arguments-Policy-Type"></a>
+ <p>qpid.policy_type</p>
+ </td><td>
+ <p>Defines queue overflow policy.</p>
+ </td></tr><tr><td><a id="Java-Broker-Appendix-Queue-Declare-Arguments-Max-Count"></a>
+ <p>qpid.max_count</p>
+ </td><td>
+ <p>Defines <span class="emphasis"><em>maximum number of messages</em></span>.
+ </p>
+ </td></tr><tr><td><a id="Java-Broker-Appendix-Queue-Declare-Arguments-Max-Size"></a>
+ <p>qpid.max_size</p>
+ </td><td>
+ <p>Defines <span class="emphasis"><em>maximum number of bytes</em></span>.
+ </p>
+ </td></tr><tr><td>
+ <p>The <span class="emphasis"><em>Overflow Policy</em></span> and the limits can be specified using
+ <span class="emphasis"><em>Address</em></span>
+ based syntax as in the example below:
+ </p><pre class="screen">
+my-queue; {create: always, node:
+{x-declare: {arguments:
+{'qpid.max_count': 10000,
+'qpid.max_size': 102400,
+'qpid.policy_type: 'ring'}}}}
+</pre><p>
+ </p>
+ </td><td class="auto-generated"> </td></tr><tr><td><a id="Java-Broker-Appendix-Queue-Declare-Arguments-Overflow-Policy-Producer-Flow-Control"></a>
+ <p>Alternative declaration of <span class="emphasis"><em>Producer Flow Control</em></span> overflow policy.
+ See
+ <a class="xref" href="Java-Broker-Concepts-Queues.html#Java-Broker-Concepts-Queue-OverflowPolicy" title="4.7.5. Controlling Queue Size">Section 4.7.5, “Controlling Queue Size”</a>
+ for more details.
+ </p>
+ </td><td class="auto-generated"> </td></tr><tr><td><a id="Java-Broker-Appendix-Queue-Declare-Arguments-Capacity"></a>
+ <p>x-qpid-capacity</p>
+ </td><td>
+ <p>Defines <span class="emphasis"><em>maximum number of bytes</em></span>.
+ </p>
+ </td></tr><tr><td><a id="Java-Broker-Appendix-Queue-Declare-Arguments-Flow-Resume-Capacity"></a>
+ <p>x-qpid-flow-resume-capacity</p>
+ </td><td>
+ <p>Defines flow resume threshold in bytes</p>
+ </td></tr><tr><td>
+ <p>The <span class="emphasis"><em>Producer Flow Control</em></span> can be specified using
+ <span class="emphasis"><em>Address</em></span> based syntax as in the example below:
+ </p><pre class="screen">
+my-queue; {create: always, node:
+{x-declare: {arguments:
+{'x-qpid-capacity': 102400,
+'x-qpid-flow-resume-capacity': 8192000}}}}
+</pre><p>
+ </p>
+ </td><td class="auto-generated"> </td></tr><tr><td><a id="Java-Broker-Appendix-Queue-Declare-Arguments-X-Qpid-Priorities"></a>
+ <p>x-qpid-priorities</p>
+ </td><td>
+ <p>Specifies a priority queue with given number priorities</p>
+ </td></tr><tr><td><a id="Java-Broker-Appendix-Queue-Declare-Arguments-Qpid-Sort-Key"></a>
+ <p>qpid.queue_sort_key</p>
+ </td><td>
+ <p>Specifies sorted queue with given message property used to sort the entries</p>
+ </td></tr><tr><td><a id="Java-Broker-Appendix-Queue-Declare-Arguments-Qpid-Last-Value-Key"></a>
+ <p>qpid.last_value_queue_key</p>
+ </td><td>
+ <p>Specifies lvq queue with given message property used to conflate the entries</p>
+ </td></tr><tr><td><a id="Java-Broker-Appendix-Queue-Declare-Arguments-Qpid-Ensure-Nondestructive-Consumers"></a>
+ <p>qpid.ensure_nondestructive_consumers</p>
+ </td><td>
+ <p>Set to true if the queue should make all consumers attached to it behave
+ non-destructively. (Default is false).</p>
+ </td></tr><tr><td><a id="Java-Broker-Appendix-Queue-Declare-Arguments-X-Qpid-Maximum-Delivery-Count"></a>
+ <p>x-qpid-maximum-delivery-count</p>
+ </td><td>
+ <p>Specifies this queue's maximum delivery count.</p>
+ </td></tr><tr><td><a id="Java-Broker-Appendix-Queue-Declare-Arguments-X-Single-Active-Consumer"></a>
+ <p>x-single-active-consumer</p>
+ </td><td>
+ <p>If set <code class="literal">true</code>, then of all consumers attached to a queue, only one will
+ be designated as <span class="emphasis"><em>active</em></span>, and eligible to receive messages. If the active
+ consumer is detached, and other consumers are attached, one of these other consumers is selected
+ to become the single active consumer.</p>
+ </td></tr></tbody></table></div></div><br class="table-break" /></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Java-Broker-Miscellaneous-Installing-External-JDBC-Driver.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="Java-Broker-Appendix-BDB-HA-initial-configuration.html">Next</a></td></tr><tr><td width="40%" align= [...]
+
+ <hr/>
+
+ <ul id="-apache-navigation">
+ <li><a href="http://www.apache.org/">Apache</a></li>
+ <li><a href="http://www.apache.org/licenses/">License</a></li>
+ <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+ <li><a href="http://www.apache.org/foundation/thanks.html">Thanks!</a></li>
+ <li><a href="/security.html">Security</a></li>
+ <li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="" alt="Apache"/></a></li>
+ </ul>
+
+ <p id="-legal">
+ Apache Qpid, Messaging built on AMQP; Copyright © 2015
+ The Apache Software Foundation; Licensed under
+ the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
+ License, Version 2.0</a>; Apache Qpid, Qpid, Qpid Proton,
+ Proton, Apache, the Apache feather logo, and the Apache Qpid
+ project logo are trademarks of The Apache Software
+ Foundation; All other marks mentioned may be trademarks or
+ registered trademarks of their respective owners
+ </p>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/content/releases/qpid-broker-j-7.1.12/index.html b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Appendix-Statistics-Reporting.html
similarity index 64%
copy from content/releases/qpid-broker-j-7.1.12/index.html
copy to content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Appendix-Statistics-Reporting.html
index 16d35d7a6..160320d60 100644
--- a/content/releases/qpid-broker-j-7.1.12/index.html
+++ b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Appendix-Statistics-Reporting.html
@@ -21,7 +21,7 @@
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
- <title>Qpid Broker-J 7.1.12 - Apache Qpid™</title>
+ <title>Appendix D. Statistics Reporting - Apache Qpid™</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
@@ -111,92 +111,17 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
</div>
<div id="-middle" class="panel">
- <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li>Qpid Broker-J 7.1.12</li></ul>
+ <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.0.0/index.html">Qpid Broker-J 9.0.0</a></li><li><a href="/releases/qpid-broker-j-9.0.0/book/index.html">Apache Qpid Broker-J</a></li><li>Appendix D. Statistics Reporting</li></ul>
<div id="-middle-content">
- <h1 id="qpid-broker-j-7112">Qpid Broker-J 7.1.12</h1>
-
-<p><a href="/components/broker-j/index.html">Qpid Broker-J</a> is a message broker written in Java that stores, routes,
-and forwards messages using AMQP 1.0, 0-10, 0-9-1, 0-9 and 0-8. More about
-<a href="/index.html">Qpid</a>.</p>
-
-<p>For a detailed list of the changes in this release, see the <a href="release-notes.html">release
-notes</a>.</p>
-
-<p>It's important to <a href="/download.html#verify-what-you-download">verify the
-integrity</a> of the
-files you download.</p>
-
-<h2 id="source-archives">Source archives</h2>
-
-<table>
-<thead>
-<tr>
- <th>Content</th>
- <th>Download</th>
- <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12/apache-qpid-broker-j-7.1.12-src.tar.gz">apache-qpid-broker-j-7.1.12-src.tar.gz</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/apache-qpid-broker-j-7.1.12-src.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/apache-qpid-broker-j-7.1.12-src.tar.gz.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="binaries">Binaries</h2>
-
-<table>
-<thead>
-<tr>
- <th>Content</th>
- <th>Download</th>
- <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.tar.gz">apache-qpid-broker-j-7.1.12-bin.tar.gz</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.tar.gz.sha512">SHA512</a></td>
-</tr>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.zip">apache-qpid-broker-j-7.1.12-bin.zip</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.zip.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.zip.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="documentation">Documentation</h2>
-
-<div class="two-column">
-
-<ul>
-<li><a href="book/Java-Broker-Installation.html">Installing Qpid Broker-J</a></li>
-<li><a href="book/index.html">Broker book</a></li>
-</ul>
-
-</div>
-
-<h2 id="more-information">More information</h2>
-
-<ul>
-<li><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12">All release artefacts</a></li>
-<li><a href="https://issues.apache.org/jira/issues/?jql=project+%3D+QPID+AND+fixVersion+%3D+%27qpid-java-broker-7.1.12%27+AND+resolution+%3D+%27fixed%27+ORDER+BY+priority+DESC">Resolved issues in JIRA</a></li>
-<li><a href="https://gitbox.apache.org/repos/asf/qpid-broker-j.git/tree/refs/tags/7.1.12">Source repository tag</a></li>
-</ul>
-
-<script type="text/javascript">
- _deferredFunctions.push(function() {
- if ("7.1.12" === "8.0.6" || "7.1.12" === "") {
- _modifyCurrentReleaseLinks();
- }
- });
-</script>
-
+ <div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix D. Statistics Reporting</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Java-Broker-Appendix-Operation-Logging.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="apds02.html">Next</a></td></tr></table><hr /></div><div class="appendix"><div class="titlepage"><div><div>< [...]
+ the log. Statistics reporting can be configured for a single entity (e.g. a queue) or for all entities of a
+ particular category (e.g. for all queues). The system can be configured dynamically at runtime without the need
+ for the system to be restarted.</p><p>This feature helps allow the behaviour of the overall system to be understood and can aid real-time problem
+ diagnosis.</p><p>It can be configured Broker-wide or separately for each virtual host.</p><p>The format of the statistics report is configurable.</p><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="d0e12949"></a>D.1. Statistics Report Period</h2></div></div></div><p>This governs the period with which statistics reports will be written to the log. The period is defined
+ in seconds. By default the statistics report period is zero, meaning the system is disabled. To enable the
+ statistics report set the <span class="emphasis"><em>statistics reporting period</em></span> on either the Broker or virtualhost to
+ a non-zero value.</p><p>Once the period is defined, the system will respond to the statistic report patterns defined described next.</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Java-Broker-Appendix-Operation-Logging.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="apds02.html">Next</a></td></tr><tr><td width="40%" alig [...]
<hr/>
diff --git a/content/releases/qpid-broker-j-7.1.12/index.html b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Appendix-System-Properties.html
similarity index 63%
copy from content/releases/qpid-broker-j-7.1.12/index.html
copy to content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Appendix-System-Properties.html
index 16d35d7a6..c9109a6ee 100644
--- a/content/releases/qpid-broker-j-7.1.12/index.html
+++ b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Appendix-System-Properties.html
@@ -21,7 +21,7 @@
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
- <title>Qpid Broker-J 7.1.12 - Apache Qpid™</title>
+ <title>Appendix B. System Properties - Apache Qpid™</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
@@ -111,92 +111,19 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
</div>
<div id="-middle" class="panel">
- <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li>Qpid Broker-J 7.1.12</li></ul>
+ <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.0.0/index.html">Qpid Broker-J 9.0.0</a></li><li><a href="/releases/qpid-broker-j-9.0.0/book/index.html">Apache Qpid Broker-J</a></li><li>Appendix B. System Properties</li></ul>
<div id="-middle-content">
- <h1 id="qpid-broker-j-7112">Qpid Broker-J 7.1.12</h1>
-
-<p><a href="/components/broker-j/index.html">Qpid Broker-J</a> is a message broker written in Java that stores, routes,
-and forwards messages using AMQP 1.0, 0-10, 0-9-1, 0-9 and 0-8. More about
-<a href="/index.html">Qpid</a>.</p>
-
-<p>For a detailed list of the changes in this release, see the <a href="release-notes.html">release
-notes</a>.</p>
-
-<p>It's important to <a href="/download.html#verify-what-you-download">verify the
-integrity</a> of the
-files you download.</p>
-
-<h2 id="source-archives">Source archives</h2>
-
-<table>
-<thead>
-<tr>
- <th>Content</th>
- <th>Download</th>
- <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12/apache-qpid-broker-j-7.1.12-src.tar.gz">apache-qpid-broker-j-7.1.12-src.tar.gz</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/apache-qpid-broker-j-7.1.12-src.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/apache-qpid-broker-j-7.1.12-src.tar.gz.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="binaries">Binaries</h2>
-
-<table>
-<thead>
-<tr>
- <th>Content</th>
- <th>Download</th>
- <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.tar.gz">apache-qpid-broker-j-7.1.12-bin.tar.gz</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.tar.gz.sha512">SHA512</a></td>
-</tr>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.zip">apache-qpid-broker-j-7.1.12-bin.zip</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.zip.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.zip.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="documentation">Documentation</h2>
-
-<div class="two-column">
-
-<ul>
-<li><a href="book/Java-Broker-Installation.html">Installing Qpid Broker-J</a></li>
-<li><a href="book/index.html">Broker book</a></li>
-</ul>
-
-</div>
-
-<h2 id="more-information">More information</h2>
-
-<ul>
-<li><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12">All release artefacts</a></li>
-<li><a href="https://issues.apache.org/jira/issues/?jql=project+%3D+QPID+AND+fixVersion+%3D+%27qpid-java-broker-7.1.12%27+AND+resolution+%3D+%27fixed%27+ORDER+BY+priority+DESC">Resolved issues in JIRA</a></li>
-<li><a href="https://gitbox.apache.org/repos/asf/qpid-broker-j.git/tree/refs/tags/7.1.12">Source repository tag</a></li>
-</ul>
-
-<script type="text/javascript">
- _deferredFunctions.push(function() {
- if ("7.1.12" === "8.0.6" || "7.1.12" === "") {
- _modifyCurrentReleaseLinks();
- }
- });
-</script>
-
+ <div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Appendix B. System Properties</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Java-Broker-Appendix-Environment-Variables.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="Java-Broker-Appendix-Operation-Logging.html">Next</a></td></tr></table><hr /></div><div class="appendix">< [...]
+ various optional behaviours.</p><p>The preferred method of enabling these system properties is using the <a class="link" href="Java-Broker-Appendix-Environment-Variables.html#Java-Broker-Appendix-Environment-Variables-Qpid-Opts"><code class="literal">QPID_OPTS</code></a> environment variable described in the previous
+ section.</p><div class="table"><a id="d0e10646"></a><p class="title"><strong>Table B.1. System properties</strong></p><div class="table-contents"><table summary="System properties" width="100%" border="1"><colgroup><col class="systemproperty" /><col class="default" /><col class="purpose" /></colgroup><thead><tr><th>System property</th><th>Default</th><th>Purpose</th></tr></thead><tbody><tr><td><a id="Java-Broker-Appendix-System-Properties-Broker-Heartbeat-Timeout-Factor"></a>qpid.bro [...]
+ received from the peer before a connection is deemed to have been broken.</td></tr><tr><td><a id="Java-Broker-Appendix-System-Properties-Broker-Status-Updates"></a>qpid.broker_status_updates</td><td>true</td><td>
+ <p>If set true, the Broker will produce operational logging messages.</p>
+ </td></tr><tr><td><a id="Java-Broker-Appendix-System-Properties-Broker-Disabled-Features"></a>qpid.broker_disabled_features</td><td>none</td><td>
+ <p>Allows optional Broker features to be disabled. Currently understood feature
+ names are: <code class="literal">qpid.jms-selector</code></p>
+ <p>Feature names should be comma separated.</p>
+ </td></tr></tbody></table></div></div><br class="table-break" /></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Java-Broker-Appendix-Environment-Variables.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="Java-Broker-Appendix-Operation-Logging.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Appendix A. Envi [...]
<hr/>
diff --git a/content/releases/qpid-broker-j-7.1.12/index.html b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Backup-And-Recovery-Virtualhost-Node.html
similarity index 53%
copy from content/releases/qpid-broker-j-7.1.12/index.html
copy to content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Backup-And-Recovery-Virtualhost-Node.html
index 16d35d7a6..da32cc7d5 100644
--- a/content/releases/qpid-broker-j-7.1.12/index.html
+++ b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Backup-And-Recovery-Virtualhost-Node.html
@@ -21,7 +21,7 @@
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
- <title>Qpid Broker-J 7.1.12 - Apache Qpid™</title>
+ <title>11.2. Virtualhost Node - Apache Qpid™</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
@@ -111,92 +111,22 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
</div>
<div id="-middle" class="panel">
- <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li>Qpid Broker-J 7.1.12</li></ul>
+ <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.0.0/index.html">Qpid Broker-J 9.0.0</a></li><li><a href="/releases/qpid-broker-j-9.0.0/book/index.html">Apache Qpid Broker-J</a></li><li>11.2. Virtualhost Node</li></ul>
<div id="-middle-content">
- <h1 id="qpid-broker-j-7112">Qpid Broker-J 7.1.12</h1>
-
-<p><a href="/components/broker-j/index.html">Qpid Broker-J</a> is a message broker written in Java that stores, routes,
-and forwards messages using AMQP 1.0, 0-10, 0-9-1, 0-9 and 0-8. More about
-<a href="/index.html">Qpid</a>.</p>
-
-<p>For a detailed list of the changes in this release, see the <a href="release-notes.html">release
-notes</a>.</p>
-
-<p>It's important to <a href="/download.html#verify-what-you-download">verify the
-integrity</a> of the
-files you download.</p>
-
-<h2 id="source-archives">Source archives</h2>
-
-<table>
-<thead>
-<tr>
- <th>Content</th>
- <th>Download</th>
- <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12/apache-qpid-broker-j-7.1.12-src.tar.gz">apache-qpid-broker-j-7.1.12-src.tar.gz</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/apache-qpid-broker-j-7.1.12-src.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/apache-qpid-broker-j-7.1.12-src.tar.gz.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="binaries">Binaries</h2>
-
-<table>
-<thead>
-<tr>
- <th>Content</th>
- <th>Download</th>
- <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.tar.gz">apache-qpid-broker-j-7.1.12-bin.tar.gz</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.tar.gz.sha512">SHA512</a></td>
-</tr>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.zip">apache-qpid-broker-j-7.1.12-bin.zip</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.zip.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.zip.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="documentation">Documentation</h2>
-
-<div class="two-column">
-
-<ul>
-<li><a href="book/Java-Broker-Installation.html">Installing Qpid Broker-J</a></li>
-<li><a href="book/index.html">Broker book</a></li>
-</ul>
-
-</div>
-
-<h2 id="more-information">More information</h2>
-
-<ul>
-<li><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12">All release artefacts</a></li>
-<li><a href="https://issues.apache.org/jira/issues/?jql=project+%3D+QPID+AND+fixVersion+%3D+%27qpid-java-broker-7.1.12%27+AND+resolution+%3D+%27fixed%27+ORDER+BY+priority+DESC">Resolved issues in JIRA</a></li>
-<li><a href="https://gitbox.apache.org/repos/asf/qpid-broker-j.git/tree/refs/tags/7.1.12">Source repository tag</a></li>
-</ul>
-
-<script type="text/javascript">
- _deferredFunctions.push(function() {
- if ("7.1.12" === "8.0.6" || "7.1.12" === "") {
- _modifyCurrentReleaseLinks();
- }
- });
-</script>
-
+ <div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">11.2. Virtualhost Node</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Java-Broker-Backup-And-Recovery.html">Prev</a> </td><th width="60%" align="center">Chapter 11. Backup And Recovery</th><td width="20%" align="right"> <a accesskey="n" href="Java-Broker-Backup-And-Recovery-Virtualhost.html">Next</a></td></tr></table><hr /></div><div c [...]
+ simply copy all the files the exist beneath
+ <code class="literal">${QPID_WORK}/<nodename>/config</code>, assuming the virtualhost node is in
+ the standard location. This will copy all configuration that belongs to that virtualhost
+ node.</p><p>The technique for backing up a virtualhost node whilst it is running depends on its
+ type.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Backup-And-Recovery-Virtualhost-Node-BDB"></a>11.2.1. BDB</h3></div></div></div><p>BDB module includes the "hot" backup utility <code class="literal">org.apache.qpid.server.store.berkeleydb.BDBBackup</code>.
+ This utility can perform the backup when the broker is running.</p><p>You can run this class from command line like in an example below:</p><div class="example"><a id="d0e10373"></a><p class="title"><strong>Example 11.1. Performing store backup by using <code class="classname">BDBBackup</code> class
+ directly</strong></p><div class="example-contents"><div class="cmdsynopsis"><p><code class="command">java</code> -cp <em class="replaceable"><code>"${QPID_HOME}/lib/*"</code></em> org.apache.qpid.server.store.berkeleydb.BDBBackup \ <br /> -fromdir <em class="replaceable"><code>${QPID_WORK}/<nodename>/config</code></em> -todir <em class="replaceable"><code>path/to/backup/folder</code></em> </p></div></div></div><br class="example-break" /><p>In the example above BDB [...]
+ <code class="literal">${QPID_WORK}/<nodename>/config</code> and copy store logs into
+ <code class="literal">path/to/backup/folder</code>.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Backup-And-Recovery-Virtualhost-Node-BDB-HA"></a>11.2.2. BDB-HA</h3></div></div></div><p>See <a class="xref" href="Java-Broker-Backup-And-Recovery-Virtualhost-Node.html#Java-Broker-Backup-And-Recovery-Virtualhost-Node-BDB" title="11.2.1. BDB">Section 11.2.1, “BDB”</a></p><div class="note" style="margin-left: 0.5in; margin-right: [...]
+ documentation accompanying it. Any technique that takes a consistent snapshot of the
+ database is acceptable.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Backup-And-Recovery-Virtualhost-Node-JSON"></a>11.2.5. JSON</h3></div></div></div><p>JSON stores its config in a single text file. It can be safely backed up using standard
+ command line tools.</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Java-Broker-Backup-And-Recovery.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="Java-Broker-Backup-And-Recovery.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="Java-Broker-Backup-And-Recovery-Virtualhost.html">Next</a></td></tr><tr><td width="40%" align="left" valign [...]
<hr/>
diff --git a/content/releases/qpid-broker-j-7.1.12/index.html b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Backup-And-Recovery-Virtualhost.html
similarity index 61%
copy from content/releases/qpid-broker-j-7.1.12/index.html
copy to content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Backup-And-Recovery-Virtualhost.html
index 16d35d7a6..ee2d8ed54 100644
--- a/content/releases/qpid-broker-j-7.1.12/index.html
+++ b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Backup-And-Recovery-Virtualhost.html
@@ -21,7 +21,7 @@
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
- <title>Qpid Broker-J 7.1.12 - Apache Qpid™</title>
+ <title>11.3. Virtualhost - Apache Qpid™</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
@@ -111,92 +111,19 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
</div>
<div id="-middle" class="panel">
- <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li>Qpid Broker-J 7.1.12</li></ul>
+ <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.0.0/index.html">Qpid Broker-J 9.0.0</a></li><li><a href="/releases/qpid-broker-j-9.0.0/book/index.html">Apache Qpid Broker-J</a></li><li>11.3. Virtualhost</li></ul>
<div id="-middle-content">
- <h1 id="qpid-broker-j-7112">Qpid Broker-J 7.1.12</h1>
-
-<p><a href="/components/broker-j/index.html">Qpid Broker-J</a> is a message broker written in Java that stores, routes,
-and forwards messages using AMQP 1.0, 0-10, 0-9-1, 0-9 and 0-8. More about
-<a href="/index.html">Qpid</a>.</p>
-
-<p>For a detailed list of the changes in this release, see the <a href="release-notes.html">release
-notes</a>.</p>
-
-<p>It's important to <a href="/download.html#verify-what-you-download">verify the
-integrity</a> of the
-files you download.</p>
-
-<h2 id="source-archives">Source archives</h2>
-
-<table>
-<thead>
-<tr>
- <th>Content</th>
- <th>Download</th>
- <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12/apache-qpid-broker-j-7.1.12-src.tar.gz">apache-qpid-broker-j-7.1.12-src.tar.gz</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/apache-qpid-broker-j-7.1.12-src.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/apache-qpid-broker-j-7.1.12-src.tar.gz.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="binaries">Binaries</h2>
-
-<table>
-<thead>
-<tr>
- <th>Content</th>
- <th>Download</th>
- <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.tar.gz">apache-qpid-broker-j-7.1.12-bin.tar.gz</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.tar.gz.sha512">SHA512</a></td>
-</tr>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.zip">apache-qpid-broker-j-7.1.12-bin.zip</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.zip.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.zip.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="documentation">Documentation</h2>
-
-<div class="two-column">
-
-<ul>
-<li><a href="book/Java-Broker-Installation.html">Installing Qpid Broker-J</a></li>
-<li><a href="book/index.html">Broker book</a></li>
-</ul>
-
-</div>
-
-<h2 id="more-information">More information</h2>
-
-<ul>
-<li><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12">All release artefacts</a></li>
-<li><a href="https://issues.apache.org/jira/issues/?jql=project+%3D+QPID+AND+fixVersion+%3D+%27qpid-java-broker-7.1.12%27+AND+resolution+%3D+%27fixed%27+ORDER+BY+priority+DESC">Resolved issues in JIRA</a></li>
-<li><a href="https://gitbox.apache.org/repos/asf/qpid-broker-j.git/tree/refs/tags/7.1.12">Source repository tag</a></li>
-</ul>
-
-<script type="text/javascript">
- _deferredFunctions.push(function() {
- if ("7.1.12" === "8.0.6" || "7.1.12" === "") {
- _modifyCurrentReleaseLinks();
- }
- });
-</script>
-
+ <div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">11.3. Virtualhost</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Java-Broker-Backup-And-Recovery-Virtualhost-Node.html">Prev</a> </td><th width="60%" align="center">Chapter 11. Backup And Recovery</th><td width="20%" align="right"> <a accesskey="n" href="Java-Broker-Appendix-Environment-Variables.html">Next</a></td></tr></table><hr />< [...]
+ simply copy all the files the exist beneath
+ <code class="literal">${QPID_WORK}/<name>/messages</code>, assuming the virtualhost is in the
+ standard location. This will copy all messages that belongs to that virtualhost.</p><p>The technique for backing up a virtualhost whilst it is running depends on its
+ type.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Backup-And-Recovery-Virtualhost-BDB"></a>11.3.1. BDB</h3></div></div></div><p>Use the same backup utility described above, but use the path
+ <code class="literal">${QPID_WORK}/<name>/messages</code> instead.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Backup-And-Recovery-Virtualhost-Derby"></a>11.3.2. Derby</h3></div></div></div><p>Not yet supported</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Backup-And-Recovery-Virtualhost-JDBC"></a>11.3.3. JDBC</h3></div></div></div><p>The responsibility for backup [...]
+ documentation accompanying it. Any technique that takes a consistent snapshot of the
+ database is acceptable.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Backup-And-Recovery-Virtualhost-Provided"></a>11.3.4. Provided</h3></div></div></div><p>The contents of the virtualhost will be backed up as part of virtualhost node that
+ contains it.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Backup-And-Recovery-Virtualhost-BDBHA"></a>11.3.5. BDB-HA</h3></div></div></div><p>The contents of the virtualhost will be backed up as part of virtualhost node that
+ contains it.</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Java-Broker-Backup-And-Recovery-Virtualhost-Node.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="Java-Broker-Backup-And-Recovery.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="Java-Broker-Appendix-Environment-Variables.html">Next</a></td></tr><tr><td width="40%" align="lef [...]
<hr/>
diff --git a/content/releases/qpid-broker-j-7.1.11/index.html b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Backup-And-Recovery.html
similarity index 57%
copy from content/releases/qpid-broker-j-7.1.11/index.html
copy to content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Backup-And-Recovery.html
index d8be9ecf8..514f3aa60 100644
--- a/content/releases/qpid-broker-j-7.1.11/index.html
+++ b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Backup-And-Recovery.html
@@ -21,7 +21,7 @@
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
- <title>Qpid Broker-J 7.1.11 - Apache Qpid™</title>
+ <title>Chapter 11. Backup And Recovery - Apache Qpid™</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
@@ -111,92 +111,13 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
</div>
<div id="-middle" class="panel">
- <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li>Qpid Broker-J 7.1.11</li></ul>
+ <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.0.0/index.html">Qpid Broker-J 9.0.0</a></li><li><a href="/releases/qpid-broker-j-9.0.0/book/index.html">Apache Qpid Broker-J</a></li><li>Chapter 11. Backup And Recovery</li></ul>
<div id="-middle-content">
- <h1 id="qpid-broker-j-7111">Qpid Broker-J 7.1.11</h1>
-
-<p><a href="/components/broker-j/index.html">Qpid Broker-J</a> is a message broker written in Java that stores, routes,
-and forwards messages using AMQP 1.0, 0-10, 0-9-1, 0-9 and 0-8. More about
-<a href="/index.html">Qpid</a>.</p>
-
-<p>For a detailed list of the changes in this release, see the <a href="release-notes.html">release
-notes</a>.</p>
-
-<p>It's important to <a href="/download.html#verify-what-you-download">verify the
-integrity</a> of the
-files you download.</p>
-
-<h2 id="source-archives">Source archives</h2>
-
-<table>
-<thead>
-<tr>
- <th>Content</th>
- <th>Download</th>
- <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.11/apache-qpid-broker-j-7.1.11-src.tar.gz">apache-qpid-broker-j-7.1.11-src.tar.gz</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/7.1.11/apache-qpid-broker-j-7.1.11-src.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/7.1.11/apache-qpid-broker-j-7.1.11-src.tar.gz.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="binaries">Binaries</h2>
-
-<table>
-<thead>
-<tr>
- <th>Content</th>
- <th>Download</th>
- <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.11/binaries/apache-qpid-broker-j-7.1.11-bin.tar.gz">apache-qpid-broker-j-7.1.11-bin.tar.gz</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/7.1.11/binaries/apache-qpid-broker-j-7.1.11-bin.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/7.1.11/binaries/apache-qpid-broker-j-7.1.11-bin.tar.gz.sha512">SHA512</a></td>
-</tr>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.11/binaries/apache-qpid-broker-j-7.1.11-bin.zip">apache-qpid-broker-j-7.1.11-bin.zip</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/7.1.11/binaries/apache-qpid-broker-j-7.1.11-bin.zip.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/7.1.11/binaries/apache-qpid-broker-j-7.1.11-bin.zip.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="documentation">Documentation</h2>
-
-<div class="two-column">
-
-<ul>
-<li><a href="book/Java-Broker-Installation.html">Installing Qpid Broker-J</a></li>
-<li><a href="book/index.html">Broker book</a></li>
-</ul>
-
-</div>
-
-<h2 id="more-information">More information</h2>
-
-<ul>
-<li><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.11">All release artefacts</a></li>
-<li><a href="https://issues.apache.org/jira/issues/?jql=project+%3D+QPID+AND+fixVersion+%3D+%27qpid-java-broker-7.1.11%27+AND+resolution+%3D+%27fixed%27+ORDER+BY+priority+DESC">Resolved issues in JIRA</a></li>
-<li><a href="https://gitbox.apache.org/repos/asf/qpid-broker-j.git/tree/refs/tags/7.1.11">Source repository tag</a></li>
-</ul>
-
-<script type="text/javascript">
- _deferredFunctions.push(function() {
- if ("7.1.11" === "8.0.6" || "7.1.11" === "") {
- _modifyCurrentReleaseLinks();
- }
- });
-</script>
-
+ <div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 11. Backup And Recovery</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Java-Broker-High-Availability-Reset-Group-Infomational.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="Java-Broker-Backup-And-Recovery-Virtualhost-Node.html">Next</a></td></tr></table><hr /></div [...]
+ exist beneath <code class="literal">${QPID_WORK}</code>, assuming all virtualhost nodes and virtualhost
+ are in their standard location, this will copy all configuration and persistent message data. </p><p>There is currently no safe mechanism to take a complete copy of the entire Broker whilst
+ it is running.</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Java-Broker-High-Availability-Reset-Group-Infomational.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="Java-Broker-Backup-And-Recovery-Virtualhost-Node.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">10.11. Reset Group Information </td><t [...]
<hr/>
diff --git a/content/releases/qpid-broker-j-8.0.0/index.html b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts-Authentication-Providers.html
similarity index 64%
copy from content/releases/qpid-broker-j-8.0.0/index.html
copy to content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts-Authentication-Providers.html
index 3457c81e3..985a8912a 100644
--- a/content/releases/qpid-broker-j-8.0.0/index.html
+++ b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts-Authentication-Providers.html
@@ -21,7 +21,7 @@
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
- <title>Qpid Broker-J 8.0.0 - Apache Qpid™</title>
+ <title>4.9. Authentication Providers - Apache Qpid™</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
@@ -111,92 +111,14 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
</div>
<div id="-middle" class="panel">
- <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li>Qpid Broker-J 8.0.0</li></ul>
+ <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.0.0/index.html">Qpid Broker-J 9.0.0</a></li><li><a href="/releases/qpid-broker-j-9.0.0/book/index.html">Apache Qpid Broker-J</a></li><li>4.9. Authentication Providers</li></ul>
<div id="-middle-content">
- <h1 id="qpid-broker-j-800">Qpid Broker-J 8.0.0</h1>
-
-<p><a href="/components/broker-j/index.html">Qpid Broker-J</a> is a message broker written in Java that stores, routes,
-and forwards messages using AMQP 1.0, 0-10, 0-9-1, 0-9 and 0-8. More about
-<a href="/index.html">Qpid</a>.</p>
-
-<p>For a detailed list of the changes in this release, see the <a href="release-notes.html">release
-notes</a>.</p>
-
-<p>It's important to <a href="/download.html#verify-what-you-download">verify the
-integrity</a> of the
-files you download.</p>
-
-<h2 id="source-archives">Source archives</h2>
-
-<table>
-<thead>
-<tr>
- <th>Content</th>
- <th>Download</th>
- <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/8.0.0/apache-qpid-broker-j-8.0.0-src.tar.gz">apache-qpid-broker-j-8.0.0-src.tar.gz</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/apache-qpid-broker-j-8.0.0-src.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/apache-qpid-broker-j-8.0.0-src.tar.gz.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="binaries">Binaries</h2>
-
-<table>
-<thead>
-<tr>
- <th>Content</th>
- <th>Download</th>
- <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.tar.gz">apache-qpid-broker-j-8.0.0-bin.tar.gz</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.tar.gz.sha512">SHA512</a></td>
-</tr>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.zip">apache-qpid-broker-j-8.0.0-bin.zip</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.zip.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.zip.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="documentation">Documentation</h2>
-
-<div class="two-column">
-
-<ul>
-<li><a href="book/Java-Broker-Installation.html">Installing Qpid Broker-J</a></li>
-<li><a href="book/index.html">Broker book</a></li>
-</ul>
-
-</div>
-
-<h2 id="more-information">More information</h2>
-
-<ul>
-<li><a href="http://archive.apache.org/dist/qpid/broker-j/8.0.0">All release artefacts</a></li>
-<li><a href="https://issues.apache.org/jira/issues/?jql=project+%3D+QPID+AND+fixVersion+%3D+%27qpid-java-broker-8.0.0%27+AND+resolution+%3D+%27fixed%27+ORDER+BY+priority+DESC">Resolved issues in JIRA</a></li>
-<li><a href="https://gitbox.apache.org/repos/asf/qpid-broker-j.git/tree/refs/tags/8.0.0">Source repository tag</a></li>
-</ul>
-
-<script type="text/javascript">
- _deferredFunctions.push(function() {
- if ("8.0.0" === "8.0.6" || "8.0.0" === "") {
- _modifyCurrentReleaseLinks();
- }
- });
-</script>
-
+ <div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">4.9. Authentication Providers</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Java-Broker-Concepts-Ports.html">Prev</a> </td><th width="60%" align="center">Chapter 4. Concepts</th><td width="20%" align="right"> <a accesskey="n" href="Java-Broker-Concepts-Other-Services.html">Next</a></td></tr></table><hr /></div><div class="section"><di [...]
+ <span class="emphasis"><em>Authentication Providers</em></span> are used by <span class="emphasis"><em>Ports</em></span> to authenticate connections.
+ Many <span class="emphasis"><em>Authentication Providers</em></span> can be configured on the Broker at the same time, from which
+ each <span class="emphasis"><em>Port</em></span> can be assigned one.
+ </p><p>Some Authentication Providers offer facilities for creation and deletion of users.</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Java-Broker-Concepts-Ports.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="Java-Broker-Concepts.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="Java-Broker-Concepts-Other-Services.html">Next</a></td></tr><tr [...]
<hr/>
diff --git a/content/releases/qpid-broker-j-8.0.0/index.html b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts-Broker.html
similarity index 64%
copy from content/releases/qpid-broker-j-8.0.0/index.html
copy to content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts-Broker.html
index 3457c81e3..0181bc940 100644
--- a/content/releases/qpid-broker-j-8.0.0/index.html
+++ b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts-Broker.html
@@ -21,7 +21,7 @@
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
- <title>Qpid Broker-J 8.0.0 - Apache Qpid™</title>
+ <title>4.2. Broker - Apache Qpid™</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
@@ -111,92 +111,10 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
</div>
<div id="-middle" class="panel">
- <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li>Qpid Broker-J 8.0.0</li></ul>
+ <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.0.0/index.html">Qpid Broker-J 9.0.0</a></li><li><a href="/releases/qpid-broker-j-9.0.0/book/index.html">Apache Qpid Broker-J</a></li><li>4.2. Broker</li></ul>
<div id="-middle-content">
- <h1 id="qpid-broker-j-800">Qpid Broker-J 8.0.0</h1>
-
-<p><a href="/components/broker-j/index.html">Qpid Broker-J</a> is a message broker written in Java that stores, routes,
-and forwards messages using AMQP 1.0, 0-10, 0-9-1, 0-9 and 0-8. More about
-<a href="/index.html">Qpid</a>.</p>
-
-<p>For a detailed list of the changes in this release, see the <a href="release-notes.html">release
-notes</a>.</p>
-
-<p>It's important to <a href="/download.html#verify-what-you-download">verify the
-integrity</a> of the
-files you download.</p>
-
-<h2 id="source-archives">Source archives</h2>
-
-<table>
-<thead>
-<tr>
- <th>Content</th>
- <th>Download</th>
- <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/8.0.0/apache-qpid-broker-j-8.0.0-src.tar.gz">apache-qpid-broker-j-8.0.0-src.tar.gz</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/apache-qpid-broker-j-8.0.0-src.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/apache-qpid-broker-j-8.0.0-src.tar.gz.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="binaries">Binaries</h2>
-
-<table>
-<thead>
-<tr>
- <th>Content</th>
- <th>Download</th>
- <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.tar.gz">apache-qpid-broker-j-8.0.0-bin.tar.gz</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.tar.gz.sha512">SHA512</a></td>
-</tr>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.zip">apache-qpid-broker-j-8.0.0-bin.zip</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.zip.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.zip.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="documentation">Documentation</h2>
-
-<div class="two-column">
-
-<ul>
-<li><a href="book/Java-Broker-Installation.html">Installing Qpid Broker-J</a></li>
-<li><a href="book/index.html">Broker book</a></li>
-</ul>
-
-</div>
-
-<h2 id="more-information">More information</h2>
-
-<ul>
-<li><a href="http://archive.apache.org/dist/qpid/broker-j/8.0.0">All release artefacts</a></li>
-<li><a href="https://issues.apache.org/jira/issues/?jql=project+%3D+QPID+AND+fixVersion+%3D+%27qpid-java-broker-8.0.0%27+AND+resolution+%3D+%27fixed%27+ORDER+BY+priority+DESC">Resolved issues in JIRA</a></li>
-<li><a href="https://gitbox.apache.org/repos/asf/qpid-broker-j.git/tree/refs/tags/8.0.0">Source repository tag</a></li>
-</ul>
-
-<script type="text/javascript">
- _deferredFunctions.push(function() {
- if ("8.0.0" === "8.0.6" || "8.0.0" === "") {
- _modifyCurrentReleaseLinks();
- }
- });
-</script>
-
+ <div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">4.2. Broker</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Java-Broker-Concepts.html">Prev</a> </td><th width="60%" align="center">Chapter 4. Concepts</th><td width="20%" align="right"> <a accesskey="n" href="Java-Broker-Concepts-Virtualhost-Nodes.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage">< [...]
<hr/>
diff --git a/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts-Exchanges.html b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts-Exchanges.html
new file mode 100644
index 000000000..9c3b396e3
--- /dev/null
+++ b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts-Exchanges.html
@@ -0,0 +1,205 @@
+<!DOCTYPE html>
+<!--
+ -
+ - Licensed to the Apache Software Foundation (ASF) under one
+ - or more contributor license agreements. See the NOTICE file
+ - distributed with this work for additional information
+ - regarding copyright ownership. The ASF licenses this file
+ - to you under the Apache License, Version 2.0 (the
+ - "License"); you may not use this file except in compliance
+ - with the License. You may obtain a copy of the License at
+ -
+ - http://www.apache.org/licenses/LICENSE-2.0
+ -
+ - Unless required by applicable law or agreed to in writing,
+ - software distributed under the License is distributed on an
+ - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ - KIND, either express or implied. See the License for the
+ - specific language governing permissions and limitations
+ - under the License.
+ -
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+ <head>
+ <title>4.6. Exchanges - Apache Qpid™</title>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+ <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
+ <link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
+ <script type="text/javascript">var _deferredFunctions = [];</script>
+ <script type="text/javascript" src="/deferred.js" defer="defer"></script>
+ <!--[if lte IE 8]>
+ <link rel="stylesheet" href="/ie.css" type="text/css"/>
+ <script type="text/javascript" src="/html5shiv.js"></script>
+ <![endif]-->
+
+ <!-- Redirects for `go get` and godoc.org -->
+ <meta name="go-import"
+ content="qpid.apache.org git https://gitbox.apache.org/repos/asf/qpid-proton.git"/>
+ <meta name="go-source"
+ content="qpid.apache.org
+https://github.com/apache/qpid-proton/blob/go1/README.md
+https://github.com/apache/qpid-proton/tree/go1{/dir}
+https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
+ </head>
+ <body>
+ <div id="-content">
+ <div id="-top" class="panel">
+ <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>
+
+ <a id="-search-link"><img width="22" height="16" src="" alt="Search"/></a>
+
+ <ul id="-global-navigation">
+ <li><a id="-logotype" href="/index.html">Apache Qpid<sup>™</sup></a></li>
+ <li><a href="/documentation.html">Documentation</a></li>
+ <li><a href="/download.html">Download</a></li>
+ <li><a href="/discussion.html">Discussion</a></li>
+ </ul>
+ </div>
+
+ <div id="-menu" class="panel" style="display: none;">
+ <div class="flex">
+ <section>
+ <h3>Project</h3>
+
+ <ul>
+ <li><a href="/overview.html">Overview</a></li>
+ <li><a href="/components/index.html">Components</a></li>
+ <li><a href="/releases/index.html">Releases</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Messaging APIs</h3>
+
+ <ul>
+ <li><a href="/proton/index.html">Qpid Proton</a></li>
+ <li><a href="/components/jms/index.html">Qpid JMS</a></li>
+ <li><a href="/components/messaging-api/index.html">Qpid Messaging API</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Servers and tools</h3>
+
+ <ul>
+ <li><a href="/components/broker-j/index.html">Broker-J</a></li>
+ <li><a href="/components/cpp-broker/index.html">C++ broker</a></li>
+ <li><a href="/components/dispatch-router/index.html">Dispatch router</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Resources</h3>
+
+ <ul>
+ <li><a href="/dashboard.html">Dashboard</a></li>
+ <li><a href="https://cwiki.apache.org/confluence/display/qpid/Index">Wiki</a></li>
+ <li><a href="/resources.html">More resources</a></li>
+ </ul>
+ </section>
+ </div>
+ </div>
+
+ <div id="-search" class="panel" style="display: none;">
+ <form action="http://www.google.com/search" method="get">
+ <input type="hidden" name="sitesearch" value="qpid.apache.org"/>
+ <input type="text" name="q" maxlength="255" autofocus="autofocus" tabindex="1"/>
+ <button type="submit">Search</button>
+ <a href="/search.html">More ways to search</a>
+ </form>
+ </div>
+
+ <div id="-middle" class="panel">
+ <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.0.0/index.html">Qpid Broker-J 9.0.0</a></li><li><a href="/releases/qpid-broker-j-9.0.0/book/index.html">Apache Qpid Broker-J</a></li><li>4.6. Exchanges</li></ul>
+
+ <div id="-middle-content">
+ <div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">4.6. Exchanges</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Java-Broker-Concepts-Virtualhosts.html">Prev</a> </td><th width="60%" align="center">Chapter 4. Concepts</th><td width="20%" align="right"> <a accesskey="n" href="Java-Broker-Concepts-Queues.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepa [...]
+ messages from producers and routes them to matching <span class="emphasis"><em>Queue</em></span>s within the <span class="emphasis"><em>Virtualhost</em></span>.</p><p>
+ When using AMQP 0-8, 0-9, 0-9-1, or 0-10, the exchange is the only way ingressing a message into the virtualhost. When using AMQP
+ 1.0, the application may route messages using an exchange (to take advantage of exchange's routing behaviours), or it may route direcly
+ to a queue (if point to point messaging is required).
+ </p><p>The server provides a set of exchange types with each exchange type implementing a different routing algorithm. For details of how
+ these exchanges types work see <a class="xref" href="Java-Broker-Concepts-Exchanges.html#Java-Broker-Concepts-Exchanges-Types" title="4.6.2. Exchange Types">Section 4.6.2, “Exchange Types”</a> below.</p><p>The server predeclares a number of exchange instances with names starting with "<code class="literal">amq.</code>". These are defined in
+ <a class="xref" href="Java-Broker-Concepts-Exchanges.html#Java-Broker-Concepts-Exchanges-Predeclared" title="4.6.1. Predeclared Exchanges">Section 4.6.1, “Predeclared Exchanges”</a>.</p><p>Applications can make use of the pre-declared exchanges, or they may declare their own. The number of exchanges within a <span class="emphasis"><em>Virtualhost</em></span> is
+ limited only by resource constraints.</p><p>The behaviour when an <span class="emphasis"><em>Exchange</em></span> is unable to route a message to any queue is defined in <a class="xref" href="Java-Broker-Concepts-Exchanges.html#Java-Broker-Concepts-Exchanges-UnroutableMessage" title="4.6.4. Unrouteable Messages">Section 4.6.4, “Unrouteable Messages”</a></p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Concepts-Exchanges-Predeclared"></a>4.6. [...]
+ </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>amq.direct (an instance of a direct exchange)</p></li><li class="listitem"><p>amq.topic (an instance of a topic exchange)</p></li><li class="listitem"><p>amq.fanout (an instance of a fanout exchange)</p></li><li class="listitem"><p>amq.match (an instance of a headers exchange)</p></li></ul></div><p>
+ </p><p>The conceptual "<code class="literal">default exchange</code>" always exists, effectively a special instance of
+ direct exchange which uses the empty string as its name. All queues are automatically bound to it upon their creation
+ using the queue name as the binding key, and unbound upon their deletion. It is not possible to manually add or remove
+ bindings within this exchange.</p><p>Applications may not declare exchanges with names beginning with "<code class="literal">amq.</code>". Such names are reserved for system use.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Concepts-Exchanges-Types"></a>4.6.2. Exchange Types</h3></div></div></div><p>
+ The following Exchange types are supported.
+ </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Direct</p></li><li class="listitem"><p>Topic</p></li><li class="listitem"><p>Fanout</p></li><li class="listitem"><p>Headers</p></li></ul></div><p>
+ These exchange types are described in the following sub-sections.</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="Java-Broker-Concepts-Exchanges-Types-Direct"></a>4.6.2.1. Direct</h4></div></div></div><p>The direct exchange type routes messages to queues based on an exact match between
+ the routing key of the message, and the binding key used to bind the queue to the exchange. Additional
+ filter rules may be specified using a <a class="link" href="Java-Broker-Concepts-Exchanges.html#Java-Broker-Concepts-Exchanges-BindingArguments-JMSSelector" title="4.6.3.1. JMS Selector">
+ binding argument specifying a JMS message selector</a>.
+ </p><p>This exchange type is often used to implement point to point messaging. When used in this manner, the normal
+ convention is that the binding key matches the name of the queue. It is also possible to use this exchange type
+ for multi-cast, in this case the same binding key is associated with many queues.</p><div class="figure"><a id="d0e641"></a><p class="title"><strong>Figure 4.4. Direct exchange</strong></p><div class="figure-contents"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="100%"><tr><td><img src="images/Exchange-Direct.png" height="360" alt="Direct exchange" /></td></tr></table></div></div></div><br class=" [...]
+ "<code class="literal">myqueue</code>" match the binding key corresponding to queue "<code class="literal">myqueue</code>" and so are routed there. The red
+ messages published with the routing key "<code class="literal">foo</code>" match two bindings in the table so a copy of the message is
+ routed to both the "<code class="literal">bar1</code>" and "<code class="literal">bar2</code>" queues.</p><p>The routing key of the blue message matches no binding keys, so the message is unroutable. It is handled as described
+ in <a class="xref" href="Java-Broker-Concepts-Exchanges.html#Java-Broker-Concepts-Exchanges-UnroutableMessage" title="4.6.4. Unrouteable Messages">Section 4.6.4, “Unrouteable Messages”</a>.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="Java-Broker-Concepts-Exchanges-Types-Topic"></a>4.6.2.2. Topic</h4></div></div></div><p>This exchange type is used to support the classic publish/subscribe paradigm.</p><p>The topic exchange is capable of rout [...]
+ binding key pattern defined by the queue binding. Routing keys are formed from one or more words, with each word delimited
+ by a full-stop (.). The pattern matching characters are the * and # symbols. The * symbol matches a single word and the #
+ symbol matches zero or more words.</p><p>Additional filter rules may be specified using a <a class="link" href="Java-Broker-Concepts-Exchanges.html#Java-Broker-Concepts-Exchanges-BindingArguments-JMSSelector" title="4.6.3.1. JMS Selector">
+ binding argument specifying a JMS message selector</a>.</p><p>The following three figures help explain how the topic exchange functions.</p><p /><div class="figure"><a id="d0e683"></a><p class="title"><strong>Figure 4.5. Topic exchange - exact match on topic name</strong></p><div class="figure-contents"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="100%"><tr><td><img src="images/Exchange-Topic.p [...]
+ message to every bound queue whose binding key matches the routing key.</p><p>In the case illustrated, this means that each subscriber's queue receives every yellow message.</p><div class="figure"><a id="d0e696"></a><p class="title"><strong>Figure 4.6. Topic exchange - matching on hierarchical topic patterns</strong></p><div class="figure-contents"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="10 [...]
+ message to every bound queue whose binding key matches the routing key but as the binding keys contain wildcards, the
+ wildcard rules described above apply.</p><p>In the case illustrated, <code class="literal">sub1</code> has received the red and green message as "<code class="literal">news.uk</code>" and "<code class="literal">news.de</code>"
+ match binding key "<code class="literal">news.#</code>". The red message has also gone to <code class="literal">sub2</code> and <code class="literal">sub3</code> as it's routing key
+ is matched exactly by "<code class="literal">news.uk</code>" and by "<code class="literal">*.uk</code>".</p><p>The routing key of the yellow message matches no binding keys, so the message is unroutable. It is handled as described
+ in <a class="xref" href="Java-Broker-Concepts-Exchanges.html#Java-Broker-Concepts-Exchanges-UnroutableMessage" title="4.6.4. Unrouteable Messages">Section 4.6.4, “Unrouteable Messages”</a>.</p><div class="figure"><a id="d0e734"></a><p class="title"><strong>Figure 4.7. Topic exchange - matching on JMS message selector</strong></p><div class="figure-contents"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" [...]
+ argument has been specified, the expression is evaluated against each matching message. Only messages whose message header values or properties
+ match the expression are routed to the queue.</p><p>In the case illustrated, <code class="literal">sub1</code> has received the yellow and blue message as their property "<code class="literal">area</code>"
+ cause expression "<code class="literal">area in ('Forties', 'Cromarty')</code>" to evaluate true. Similarly, the yellow message has also gone to
+ <code class="literal">gale_alert</code> as its property "<code class="literal">speed</code>" causes expression "<code class="literal">speed > 7 and speed < 10</code>"
+ to evaluate true.</p><p>The properties of purple message cause no expressions to evaluate true, so the message is unroutable. It is handled as described in
+ <a class="xref" href="Java-Broker-Concepts-Exchanges.html#Java-Broker-Concepts-Exchanges-UnroutableMessage" title="4.6.4. Unrouteable Messages">Section 4.6.4, “Unrouteable Messages”</a>.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="Java-Broker-Concepts-Exchanges-Types-Fanout"></a>4.6.2.3. Fanout</h4></div></div></div><p>The fanout exchange type routes messages to all queues bound to the exchange, regardless of the message's routing key.</p>< [...]
+ binding argument specifying a JMS message selector</a>.</p><div class="figure"><a id="d0e781"></a><p class="title"><strong>Figure 4.8. Fanout exchange</strong></p><div class="figure-contents"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="100%"><tr><td><img src="images/Exchange-Fanout.png" height="360" alt="Fanout exchange" /></td></tr></table></div></div></div><br class="figure-break" /></div><di [...]
+ a queue if the header properties of the message satisfy the <a class="link" href="Java-Broker-Concepts-Exchanges.html#Java-Broker-Concepts-Exchanges-BindingArguments-x-match" title="4.6.3.2. x-match">
+ x-match expression</a> specified by the binding arguments with which the queue was bound.
+ </p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Concepts-Exchanges-BindingArguments"></a>4.6.3. Binding Arguments</h3></div></div></div><p>Binding arguments are used by certain exchange types to further filter messages.</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="Java-Broker-Concepts-Exchanges-BindingArguments-JMSSelector"></a>4.6.3.1. JMS Selector</h4></div></div></div><p>The binding argu [...]
+ is written in terms of message header and message property names. If the expression evaluates to true, the message is routed to the queue.
+ This type of binding argument is understood by exchange types direct, topic and fanout.<a href="#ftn.d0e808" class="footnote" id="d0e808"><sup class="footnote">[4]</sup></a>.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="Java-Broker-Concepts-Exchanges-BindingArguments-x-match"></a>4.6.3.2. x-match</h4></div></div></div><p>The binding argument <code class="literal">x-match</code> is understood by exchange type headers. It can take two values, [...]
+ rest of the name value pairs are treated during matching.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><code class="literal">all</code> implies that all the other pairs must match the headers property of a message for that message to be routed
+ (i.e. an AND match)</p></li><li class="listitem"><p><code class="literal">any</code> implies that the message should be routed if any of the fields in the headers property match one of the
+ fields in the arguments table (i.e. an OR match)</p></li></ul></div><p>A field in the bind arguments matches a field in the message if either the field in the bind arguments has no value and a field of the
+ same name is present in the message headers or if the field in the bind arguments has a value and a field of the same name exists in the
+ message headers and has that same value.</p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Concepts-Exchanges-UnroutableMessage"></a>4.6.4. Unrouteable Messages</h3></div></div></div><p>If an exchange is unable to route a message to any queues, the Broker will:
+ </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>If using the AMQP 1.0 protocol, and an alternate binding has been set on the exchange, the message is routed to the alternate.
+ If the message is still unroutable after considering the alternate binding, the message is discarded unless the sending link has requested the
+ <code class="literal">REJECT_UNROUTABLE</code> target capability, or the Exchange has its <code class="literal">unroutableMessageBehaviour</code> attribute set to
+ <code class="literal">REJECT</code>.</p></li><li class="listitem"><p>If using the AMQP 0-10 protocol, and an alternate binding has been set on the exchange, the message is routed to the alternate.
+ If the message is still unroutable after considering the alternate binding,the message is discarded.</p></li><li class="listitem"><p>If using AMQP protocols 0-8..0-9-1, and the publisher set the mandatory flag and the<a class="link" href="Java-Broker-Runtime-Close-Connection-When-No-Route.html" title="9.5. Closing client connections on unroutable mandatory messages">
+ close when no route</a> feature did not close the connection, the message is returned to the Producer.</p></li><li class="listitem"><p>Otherwise, the message is discarded.</p></li></ul></div><p>
+ </p></div><div class="footnotes"><br /><hr style="width:100; text-align:left;margin-left: 0" /><div id="ftn.d0e808" class="footnote"><p><a href="#d0e808" class="para"><sup class="para">[4] </sup></a>
+ This is a Qpid specific extension.</p></div></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Java-Broker-Concepts-Virtualhosts.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="Java-Broker-Concepts.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="Java-Broker-Concepts-Queues.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">4 [...]
+
+ <hr/>
+
+ <ul id="-apache-navigation">
+ <li><a href="http://www.apache.org/">Apache</a></li>
+ <li><a href="http://www.apache.org/licenses/">License</a></li>
+ <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+ <li><a href="http://www.apache.org/foundation/thanks.html">Thanks!</a></li>
+ <li><a href="/security.html">Security</a></li>
+ <li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="" alt="Apache"/></a></li>
+ </ul>
+
+ <p id="-legal">
+ Apache Qpid, Messaging built on AMQP; Copyright © 2015
+ The Apache Software Foundation; Licensed under
+ the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
+ License, Version 2.0</a>; Apache Qpid, Qpid, Qpid Proton,
+ Proton, Apache, the Apache feather logo, and the Apache Qpid
+ project logo are trademarks of The Apache Software
+ Foundation; All other marks mentioned may be trademarks or
+ registered trademarks of their respective owners
+ </p>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/content/releases/qpid-broker-j-7.1.12/index.html b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts-Other-Services.html
similarity index 51%
copy from content/releases/qpid-broker-j-7.1.12/index.html
copy to content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts-Other-Services.html
index 16d35d7a6..38e242c6c 100644
--- a/content/releases/qpid-broker-j-7.1.12/index.html
+++ b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts-Other-Services.html
@@ -21,7 +21,7 @@
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
- <title>Qpid Broker-J 7.1.12 - Apache Qpid™</title>
+ <title>4.10. Other Services - Apache Qpid™</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
@@ -111,92 +111,20 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
</div>
<div id="-middle" class="panel">
- <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li>Qpid Broker-J 7.1.12</li></ul>
+ <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.0.0/index.html">Qpid Broker-J 9.0.0</a></li><li><a href="/releases/qpid-broker-j-9.0.0/book/index.html">Apache Qpid Broker-J</a></li><li>4.10. Other Services</li></ul>
<div id="-middle-content">
- <h1 id="qpid-broker-j-7112">Qpid Broker-J 7.1.12</h1>
-
-<p><a href="/components/broker-j/index.html">Qpid Broker-J</a> is a message broker written in Java that stores, routes,
-and forwards messages using AMQP 1.0, 0-10, 0-9-1, 0-9 and 0-8. More about
-<a href="/index.html">Qpid</a>.</p>
-
-<p>For a detailed list of the changes in this release, see the <a href="release-notes.html">release
-notes</a>.</p>
-
-<p>It's important to <a href="/download.html#verify-what-you-download">verify the
-integrity</a> of the
-files you download.</p>
-
-<h2 id="source-archives">Source archives</h2>
-
-<table>
-<thead>
-<tr>
- <th>Content</th>
- <th>Download</th>
- <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12/apache-qpid-broker-j-7.1.12-src.tar.gz">apache-qpid-broker-j-7.1.12-src.tar.gz</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/apache-qpid-broker-j-7.1.12-src.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/apache-qpid-broker-j-7.1.12-src.tar.gz.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="binaries">Binaries</h2>
-
-<table>
-<thead>
-<tr>
- <th>Content</th>
- <th>Download</th>
- <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.tar.gz">apache-qpid-broker-j-7.1.12-bin.tar.gz</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.tar.gz.sha512">SHA512</a></td>
-</tr>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.zip">apache-qpid-broker-j-7.1.12-bin.zip</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.zip.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.zip.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="documentation">Documentation</h2>
-
-<div class="two-column">
-
-<ul>
-<li><a href="book/Java-Broker-Installation.html">Installing Qpid Broker-J</a></li>
-<li><a href="book/index.html">Broker book</a></li>
-</ul>
-
-</div>
-
-<h2 id="more-information">More information</h2>
-
-<ul>
-<li><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12">All release artefacts</a></li>
-<li><a href="https://issues.apache.org/jira/issues/?jql=project+%3D+QPID+AND+fixVersion+%3D+%27qpid-java-broker-7.1.12%27+AND+resolution+%3D+%27fixed%27+ORDER+BY+priority+DESC">Resolved issues in JIRA</a></li>
-<li><a href="https://gitbox.apache.org/repos/asf/qpid-broker-j.git/tree/refs/tags/7.1.12">Source repository tag</a></li>
-</ul>
-
-<script type="text/javascript">
- _deferredFunctions.push(function() {
- if ("7.1.12" === "8.0.6" || "7.1.12" === "") {
- _modifyCurrentReleaseLinks();
- }
- });
-</script>
-
+ <div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">4.10. Other Services</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Java-Broker-Concepts-Authentication-Providers.html">Prev</a> </td><th width="60%" align="center">Chapter 4. Concepts</th><td width="20%" align="right"> <a accesskey="n" href="Java-Broker-Initial-Configuration.html">Next</a></td></tr></table><hr /></div><div class="sect [...]
+ The Broker can also have <span class="emphasis"><em>Access Control Providers</em></span>,
+ <span class="emphasis"><em>Connection Limit Providers</em></span>, <span class="emphasis"><em>Group Providers</em></span>,
+ <span class="emphasis"><em>Keystores</em></span>, <span class="emphasis"><em>Trustores</em></span> and [Management] <span class="emphasis"><em>Plugins</em></span> configured.
+ </p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Concepts-Access-Control-Providers"></a>4.10.1. Access Control Providers</h3></div></div></div><p><span class="emphasis"><em>Access Control Providers</em></span> are used to authorize various operations relating to Broker objects.</p><p>Access Control Provider configuration and management details are covered in <a class="xref" href="Java-Broker-Security-AccessControlProviders.html" title="8. [...]
+ user could open on AMQP ports.</p><p>Connection Limit Providers configuration and management details are covered in
+ <a class="xref" href="Java-Broker-Security-ConnectionLimitProviders.html" title="8.4. Connection Limit Providers">Section 8.4, “Connection Limit Providers”</a>.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Concepts-Group-Providers"></a>4.10.3. Group Providers</h3></div></div></div><p><span class="emphasis"><em>Group Providers</em></span> are used to aggregate authenticated user principals into groups
+ which can be then be used in Access Control rules applicable to the whole group.</p><p>Group Provider configuration and management is covered in <a class="xref" href="Java-Broker-Security-Group-Providers.html" title="8.2. Group Providers">Section 8.2, “Group Providers”</a>.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Concepts-Keystores"></a>4.10.4. Keystores</h3></div></div></div><p><span class="emphasis"><em>Keystores</em>< [...]
+ for the SSL transports on Ports.</p><p>Keystore configuration and management is covered in <a class="xref" href="Java-Broker-Management-Managing-Keystores.html" title="7.12. Keystores">Section 7.12, “Keystores”</a>.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Concepts-Truststores"></a>4.10.5. Truststores</h3></div></div></div><p><span class="emphasis"><em>Truststores</em></span> are used to configure SSL certificates for tru [...]
+ on SSL ports or making SSL connections to other external services like LDAP, etc.</p><p>Truststore configuration and management is covered in <a class="xref" href="Java-Broker-Management-Managing-Truststores.html" title="7.13. Truststores">Section 7.13, “Truststores”</a>.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Concepts-Loggers"></a>4.10.6. Loggers</h3></div></div></div><p><span class="emphasis"><em>Loggers</em></spa [...]
+ an individual Virtualhost. These are described in <a class="xref" href="Java-Broker-Runtime.html#Java-Broker-Runtime-Logging" title="9.1. Logging">Section 9.1, “Logging”</a>.</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Java-Broker-Concepts-Authentication-Providers.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="Java-Broker-Concepts.html">Up</a></td [...]
<hr/>
diff --git a/content/releases/qpid-broker-j-7.1.12/index.html b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts-Ports.html
similarity index 59%
copy from content/releases/qpid-broker-j-7.1.12/index.html
copy to content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts-Ports.html
index 16d35d7a6..823f39733 100644
--- a/content/releases/qpid-broker-j-7.1.12/index.html
+++ b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts-Ports.html
@@ -21,7 +21,7 @@
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
- <title>Qpid Broker-J 7.1.12 - Apache Qpid™</title>
+ <title>4.8. Ports - Apache Qpid™</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
@@ -111,92 +111,21 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
</div>
<div id="-middle" class="panel">
- <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li>Qpid Broker-J 7.1.12</li></ul>
+ <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.0.0/index.html">Qpid Broker-J 9.0.0</a></li><li><a href="/releases/qpid-broker-j-9.0.0/book/index.html">Apache Qpid Broker-J</a></li><li>4.8. Ports</li></ul>
<div id="-middle-content">
- <h1 id="qpid-broker-j-7112">Qpid Broker-J 7.1.12</h1>
-
-<p><a href="/components/broker-j/index.html">Qpid Broker-J</a> is a message broker written in Java that stores, routes,
-and forwards messages using AMQP 1.0, 0-10, 0-9-1, 0-9 and 0-8. More about
-<a href="/index.html">Qpid</a>.</p>
-
-<p>For a detailed list of the changes in this release, see the <a href="release-notes.html">release
-notes</a>.</p>
-
-<p>It's important to <a href="/download.html#verify-what-you-download">verify the
-integrity</a> of the
-files you download.</p>
-
-<h2 id="source-archives">Source archives</h2>
-
-<table>
-<thead>
-<tr>
- <th>Content</th>
- <th>Download</th>
- <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12/apache-qpid-broker-j-7.1.12-src.tar.gz">apache-qpid-broker-j-7.1.12-src.tar.gz</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/apache-qpid-broker-j-7.1.12-src.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/apache-qpid-broker-j-7.1.12-src.tar.gz.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="binaries">Binaries</h2>
-
-<table>
-<thead>
-<tr>
- <th>Content</th>
- <th>Download</th>
- <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.tar.gz">apache-qpid-broker-j-7.1.12-bin.tar.gz</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.tar.gz.sha512">SHA512</a></td>
-</tr>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.zip">apache-qpid-broker-j-7.1.12-bin.zip</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.zip.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.zip.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="documentation">Documentation</h2>
-
-<div class="two-column">
-
-<ul>
-<li><a href="book/Java-Broker-Installation.html">Installing Qpid Broker-J</a></li>
-<li><a href="book/index.html">Broker book</a></li>
-</ul>
-
-</div>
-
-<h2 id="more-information">More information</h2>
-
-<ul>
-<li><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12">All release artefacts</a></li>
-<li><a href="https://issues.apache.org/jira/issues/?jql=project+%3D+QPID+AND+fixVersion+%3D+%27qpid-java-broker-7.1.12%27+AND+resolution+%3D+%27fixed%27+ORDER+BY+priority+DESC">Resolved issues in JIRA</a></li>
-<li><a href="https://gitbox.apache.org/repos/asf/qpid-broker-j.git/tree/refs/tags/7.1.12">Source repository tag</a></li>
-</ul>
-
-<script type="text/javascript">
- _deferredFunctions.push(function() {
- if ("7.1.12" === "8.0.6" || "7.1.12" === "") {
- _modifyCurrentReleaseLinks();
- }
- });
-</script>
-
+ <div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">4.8. Ports</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Java-Broker-Concepts-Queues.html">Prev</a> </td><th width="60%" align="center">Chapter 4. Concepts</th><td width="20%" align="right"> <a accesskey="n" href="Java-Broker-Concepts-Authentication-Providers.html">Next</a></td></tr></table><hr /></div><div class="section"><div class= [...]
+ AMQP messaging and HTTP management connectivity it offers for use. </p><p> Each Port is configured with the particular <span class="emphasis"><em>Protocols</em></span> and
+ <span class="emphasis"><em>Transports</em></span> it supports, as well as the <span class="emphasis"><em>Authentication
+ Provider</em></span> to be used to authenticate connections. Where SSL is in use, the
+ <span class="emphasis"><em>Port</em></span> configuration also defines which <span class="emphasis"><em>Keystore</em></span>
+ to use and (where supported) which <span class="emphasis"><em>TrustStore(s)</em></span> and whether Client
+ Certificates should be requested/required. </p><p> Different <span class="emphasis"><em>Ports</em></span> can support different protocols, and many
+ <span class="emphasis"><em>Ports</em></span> can be configured on the Broker.</p><p> The following AMQP protocols are currently supported by the Broker: </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><span class="emphasis"><em>AMQP 0-8</em></span></p></li><li class="listitem"><p><span class="emphasis"><em>AMQP 0-9</em></span></p></li><li class="listitem"><p><span class="emphasis"><em>AMQP 0-9-1</em></span></p></l [...]
+ </p><p> Additionally, HTTP ports can be configured for use by the associated management
+ plugin. </p><p>This diagram explains how Ports, <a class="link" href="Java-Broker-Concepts-Authentication-Providers.html" title="4.9. Authentication Providers">Authentication Providers</a>
+ and an Access Control Provider work together to allow an application to form a connection to
+ a Virtualhost.</p><div class="figure"><a id="d0e1315"></a><p class="title"><strong>Figure 4.9. Control flow during Authentication</strong></p><div class="figure-contents"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="100%"><tr><td><img src="images/Broker-PortAuthFlow.png" height="360" alt="Control flow during Authentication" /></td></tr></table></div></div></div><p><br class="figure-break" /> [...]
<hr/>
diff --git a/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts-Queues.html b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts-Queues.html
new file mode 100644
index 000000000..8ea8d90fe
--- /dev/null
+++ b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts-Queues.html
@@ -0,0 +1,322 @@
+<!DOCTYPE html>
+<!--
+ -
+ - Licensed to the Apache Software Foundation (ASF) under one
+ - or more contributor license agreements. See the NOTICE file
+ - distributed with this work for additional information
+ - regarding copyright ownership. The ASF licenses this file
+ - to you under the Apache License, Version 2.0 (the
+ - "License"); you may not use this file except in compliance
+ - with the License. You may obtain a copy of the License at
+ -
+ - http://www.apache.org/licenses/LICENSE-2.0
+ -
+ - Unless required by applicable law or agreed to in writing,
+ - software distributed under the License is distributed on an
+ - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ - KIND, either express or implied. See the License for the
+ - specific language governing permissions and limitations
+ - under the License.
+ -
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+ <head>
+ <title>4.7. Queues - Apache Qpid™</title>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+ <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
+ <link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
+ <script type="text/javascript">var _deferredFunctions = [];</script>
+ <script type="text/javascript" src="/deferred.js" defer="defer"></script>
+ <!--[if lte IE 8]>
+ <link rel="stylesheet" href="/ie.css" type="text/css"/>
+ <script type="text/javascript" src="/html5shiv.js"></script>
+ <![endif]-->
+
+ <!-- Redirects for `go get` and godoc.org -->
+ <meta name="go-import"
+ content="qpid.apache.org git https://gitbox.apache.org/repos/asf/qpid-proton.git"/>
+ <meta name="go-source"
+ content="qpid.apache.org
+https://github.com/apache/qpid-proton/blob/go1/README.md
+https://github.com/apache/qpid-proton/tree/go1{/dir}
+https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
+ </head>
+ <body>
+ <div id="-content">
+ <div id="-top" class="panel">
+ <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>
+
+ <a id="-search-link"><img width="22" height="16" src="" alt="Search"/></a>
+
+ <ul id="-global-navigation">
+ <li><a id="-logotype" href="/index.html">Apache Qpid<sup>™</sup></a></li>
+ <li><a href="/documentation.html">Documentation</a></li>
+ <li><a href="/download.html">Download</a></li>
+ <li><a href="/discussion.html">Discussion</a></li>
+ </ul>
+ </div>
+
+ <div id="-menu" class="panel" style="display: none;">
+ <div class="flex">
+ <section>
+ <h3>Project</h3>
+
+ <ul>
+ <li><a href="/overview.html">Overview</a></li>
+ <li><a href="/components/index.html">Components</a></li>
+ <li><a href="/releases/index.html">Releases</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Messaging APIs</h3>
+
+ <ul>
+ <li><a href="/proton/index.html">Qpid Proton</a></li>
+ <li><a href="/components/jms/index.html">Qpid JMS</a></li>
+ <li><a href="/components/messaging-api/index.html">Qpid Messaging API</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Servers and tools</h3>
+
+ <ul>
+ <li><a href="/components/broker-j/index.html">Broker-J</a></li>
+ <li><a href="/components/cpp-broker/index.html">C++ broker</a></li>
+ <li><a href="/components/dispatch-router/index.html">Dispatch router</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Resources</h3>
+
+ <ul>
+ <li><a href="/dashboard.html">Dashboard</a></li>
+ <li><a href="https://cwiki.apache.org/confluence/display/qpid/Index">Wiki</a></li>
+ <li><a href="/resources.html">More resources</a></li>
+ </ul>
+ </section>
+ </div>
+ </div>
+
+ <div id="-search" class="panel" style="display: none;">
+ <form action="http://www.google.com/search" method="get">
+ <input type="hidden" name="sitesearch" value="qpid.apache.org"/>
+ <input type="text" name="q" maxlength="255" autofocus="autofocus" tabindex="1"/>
+ <button type="submit">Search</button>
+ <a href="/search.html">More ways to search</a>
+ </form>
+ </div>
+
+ <div id="-middle" class="panel">
+ <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.0.0/index.html">Qpid Broker-J 9.0.0</a></li><li><a href="/releases/qpid-broker-j-9.0.0/book/index.html">Apache Qpid Broker-J</a></li><li>4.7. Queues</li></ul>
+
+ <div id="-middle-content">
+ <div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">4.7. Queues</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Java-Broker-Concepts-Exchanges.html">Prev</a> </td><th width="60%" align="center">Chapter 4. Concepts</th><td width="20%" align="right"> <a accesskey="n" href="Java-Broker-Concepts-Ports.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><di [...]
+ hold/buffer messages for later delivery to consumer applications.</p><p>Messages arrive on queues either from <a class="link" href="Java-Broker-Concepts-Exchanges.html" title="4.6. Exchanges">Exchanges</a>, or when
+ using the AMQP 1.0 protocol, the producing application can direct messages straight to the queue. For
+ AMQP 0-8, 0-9, 0-9-1, or 0-10, the exchange is the only way ingressing a message into a queue.</p><p>Consumers subscribe to a queue in order to receive messages from it.</p><p>The Broker supports different queue types, each with different delivery semantics. Queues also have a range of other
+ features such as the ability to group messages together for delivery to a single consumer. These additional features
+ are described below too.</p><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Concepts-Queues-Types"></a>4.7.1. Types</h3></div></div></div><p>The Broker supports four different queue types, each with different delivery semantics.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p><a class="link" href="Java-Broker-Concepts-Queues.html#Java-Broker-Concepts-Queues-Types-Standard" title="4 [...]
+ delivery order depends on the value of the sorting key property in each message</p></li><li class="listitem"><p><a class="link" href="Java-Broker-Concepts-Queues.html#Java-Broker-Concepts-Queues-Types-LVQ" title="4.7.1.4. Last Value Queues (LVQ)">Last Value
+ Queue</a> - also known as an LVQ, retains only the last (newest) message received
+ with a given LVQ key value</p></li></ul></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="Java-Broker-Concepts-Queues-Types-Standard"></a>4.7.1.1. Standard</h4></div></div></div><p>A simple First-In-First-Out (FIFO) queue</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="Java-Broker-Concepts-Queues-Types-Priority"></a>4.7.1.2. Priority</h4></div></div></div><p>In a priority queue, messages on the queue a [...]
+ <a class="link" href="http://docs.oracle.com/javaee/6/api/javax/jms/Message.html#getJMSPriority()" target="_top">JMS priority message
+ header</a> within the message. By default Qpid supports the 10 priority levels
+ mandated by JMS, with priority value 0 as the lowest priority and 9 as the highest. </p><p>It is possible to reduce the effective number of priorities if desired.</p><p>JMS defines the <a class="link" href="http://docs.oracle.com/javaee/6/api/javax/jms/Message.html#DEFAULT_PRIORITY" target="_top">
+ default message priority</a> as 4. Messages sent without a specified priority use this
+ default. </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="Java-Broker-Concepts-Queues-Types-Sorted"></a>4.7.1.3. Sorted Queues</h4></div></div></div><p>Sorted queues allow the message delivery order to be determined by value of an arbitrary
+ <a class="link" href="http://docs.oracle.com/javaee/6/api/javax/jms/Message.html#getStringProperty()" target="_top">JMS message
+ property</a>. Sort order is alpha-numeric and the property value must have a type
+ java.lang.String.</p><p>Messages sent to a sorted queue without the specified JMS message property will be
+ put at the head of the queue.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="Java-Broker-Concepts-Queues-Types-LVQ"></a>4.7.1.4. Last Value Queues (LVQ)</h4></div></div></div><p>LVQs (or conflation queues) are special queues that automatically discard any message
+ when a newer message arrives with the same key value. The key is specified by arbitrary
+ <a class="link" href="http://docs.oracle.com/javaee/6/api/javax/jms/Message.html#getPropertyNames()" target="_top">JMS message
+ property</a>.</p><p>An example of an LVQ might be where a queue represents prices on a stock exchange: when
+ you first consume from the queue you get the latest quote for each stock, and then as new
+ prices come in you are sent only these updates. </p><p>Like other queues, LVQs can either be browsed or consumed from. When browsing an
+ individual subscriber does not remove the message from the queue when receiving it. This
+ allows for many subscriptions to browse the same LVQ (i.e. you do not need to create and
+ bind a separate LVQ for each subscriber who wishes to receive the contents of the
+ LVQ).</p><p>Messages sent to an LVQ without the specified property will be delivered as normal and
+ will never be "replaced".</p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Concepts-Queues-Message-Grouping"></a>4.7.2. Messaging Grouping</h3></div></div></div><p> The broker allows messaging applications to classify a set of related messages as
+ belonging to a group. This allows a message producer to indicate to the consumer that a group
+ of messages should be considered a single logical operation with respect to the application. </p><p> The broker can use this group identification to enforce policies controlling how messages
+ from a given group can be distributed to consumers. For instance, the broker can be configured
+ to guarantee all the messages from a particular group are processed in order across multiple
+ consumers. </p><p> For example, assume we have a shopping application that manages items in a virtual
+ shopping cart. A user may add an item to their shopping cart, then change their mind and
+ remove it. If the application sends an <span class="emphasis"><em>add</em></span> message to the broker,
+ immediately followed by a <span class="emphasis"><em>remove</em></span> message, they will be queued in the
+ proper order - <span class="emphasis"><em>add</em></span>, followed by <span class="emphasis"><em>remove</em></span>. </p><p> However, if there are multiple consumers, it is possible that once a consumer acquires
+ the <span class="emphasis"><em>add</em></span> message, a different consumer may acquire the
+ <span class="emphasis"><em>remove</em></span> message. This allows both messages to be processed in parallel,
+ which could result in a "race" where the <span class="emphasis"><em>remove</em></span> operation is incorrectly
+ performed before the <span class="emphasis"><em>add</em></span> operation. </p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="Java-Broker-Concepts-Queues-GroupingMessages"></a>4.7.2.1. Grouping Messages</h4></div></div></div><p>In order to group messages, JMS applications can set the JMS standard header
+ <code class="literal">JMSXGroupId</code> to specify the <span class="emphasis"><em>group identifier</em></span>
+ when publishing messages.
+ </p><p>Alternatively, the application may designate a particular message header
+ as containing a message's <span class="emphasis"><em>group identifier</em></span>. The group identifier stored
+ in that header field would be a string value set by the message producer. Messages from the
+ same group would have the same group identifier value. The key that identifies the header
+ must also be known to the message consumers. This allows the consumers to determine a
+ message's assigned group.
+ </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="Java-Broker-Concepts-Queues-BrokerRole"></a>4.7.2.2. The Role of the Broker in Message Grouping </h4></div></div></div><p> The broker will apply the following processing on each grouped message: </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>Enqueue a received message on the destination queue.</p></li><li class="listitem"><p>Det [...]
+ header.</p></li><li class="listitem"><p>Enforce <span class="emphasis"><em>consumption ordering</em></span> among messages belonging to the
+ same group. <span class="emphasis"><em>Consumption ordering</em></span> means one of two things
+ depending on how the queue has been configured. </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p> In default mode, a group gets assigned to a single consumer for the lifetime
+ of that consumer, and the broker will pass all subsequent messages in the group to
+ that consumer. </p></li><li class="listitem"><p>In 'shared groups' mode (which gives the same behaviour as the Qpid C++
+ Broker) the broker enforces a looser guarantee, namely that all the
+ <span class="emphasis"><em>currently unacknowledged messages</em></span> in a group are sent to
+ the same consumer, but the consumer used may change over time even if the
+ consumers do not. This means that only one consumer can be processing messages
+ from a particular group at any given time, however if the consumer acknowledges
+ all of its acquired messages then the broker <span class="emphasis"><em>may</em></span> pass the
+ next pending message in that group to a different consumer. </p></li></ul></div></li></ul></div><p>
+ </p><p> The absence of a value in the designated group header field of a message is treated as
+ follows: </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p> In default mode, failure for a message to specify a group is treated as a desire
+ for the message not to be grouped at all. Such messages will be distributed to any
+ available consumer, without the ordering guarantees imposed by grouping. </p></li><li class="listitem"><p> In 'shared groups' mode (which gives the same behaviour as the Qpid C++ Broker)
+ the broker assigns messages without a group value to a 'default group'. Therefore, all
+ such "unidentified" messages are considered by the broker as part of the same group,
+ which will handled like any other group. The name of this default group is
+ "qpid.no-group", although it can be customised as detailed below. </p></li></ul></div><p>
+ </p><p> Note that message grouping has no effect on queue browsers.</p><p> Note well that distinct message groups would not block each other from delivery. For
+ example, assume a queue contains messages from two different message groups - say group "A"
+ and group "B" - and they are enqueued such that "A"'s messages are in front of "B". If the
+ first message of group "A" is in the process of being consumed by a client, then the
+ remaining "A" messages are blocked, but the messages of the "B" group are available for
+ consumption by other consumers - even though it is "behind" group "A" in the queue. </p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Concepts-Queue-EnsureNonDestructiveConsumers"></a>4.7.3. Forcing all consumers to be non-destructive</h3></div></div></div><p>When a consumer attaches to a queue, the normal behaviour is that messages are
+ sent to that consumer are acquired exclusively by that consumer, and when the consumer
+ acknowledges them, the messages are removed from the queue.</p><p>Another common pattern is to have queue "browsers" which send all messages to the
+ browser, but do not prevent other consumers from receiving the messages, and do not
+ remove them from the queue when the browser is done with them. Such a browser is an
+ instance of a "non-destructive" consumer.</p><p>If every consumer on a queue is non destructive then we can obtain some interesting
+ behaviours. In the case of a LVQ
+ then the queue will always contain the most up to date value for every key. For
+ a standard queue, if every consumer is non-destructive then we have something that
+ behaves like a topic (every consumer receives every message) except that instead of
+ only seeing messages that arrive after the point at which the consumer is created, all
+ messages which have not been removed due to TTL expiry (or, in the case of LVQs,
+ overwirtten by newer values for the same key).</p><p>A queue can be created to enforce all consumers are non-destructive.</p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="d0e1068"></a>4.7.3.1. Bounding size using min/max TTL</h4></div></div></div><p>For queues other than LVQs, having only non-destructive consumers could mean that
+ messages would never get deleted, leaving the queue to grow unconstrainedly. To
+ prevent this you can use the ability to set the maximum TTL of the queue. To ensure
+ all messages have the same TTL you could also set the minimum TTL to the same value.
+ </p><p>Minimum/Maximum TTL for a queue can be set though the HTTP Management UI, using the
+ REST API. The attribute names are <code class="varname">minimumMessageTtl</code> and
+ <code class="varname">maximumMessageTtl</code> and the TTL value is given in milliseconds.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="d0e1081"></a>4.7.3.2. Choosing to receive messages based on arrival time</h4></div></div></div><p>A queue with no destructive consumers will retain all messages until they expire
+ due to TTL. It may be the case that a consumer only wishes to receive messages
+ that have been sent in the last 60 minutes, and any new messages that arrive, or
+ alternatively it may wish only to receive newly arriving messages and not any that
+ are already in the queue. This can be achieved by using a filter on the arrival
+ time.</p><p>A special parameter <code class="varname">x-qpid-replay-period</code> can be used in the
+ consumer declaration to control the messages the consumer wishes to receive. The
+ value of <code class="varname">x-qpid-replay-period</code> is the time, in seconds, for which
+ the consumer wishes to see messages. A replay period of 0 indicates only newly
+ arriving messages should be sent. A replay period of 3600 indicates that only
+ messages sent in the last hour - along with any newly arriving messages - should be
+ sent.</p><p>When using the Qpid JMS AMQP 0-x, the consumer declaration can be hinted using the
+ address.</p><div class="table"><a id="d0e1096"></a><p class="title"><strong>Table 4.1. Setting the replay period using a Qpid JMS AMQP 0-x address</strong></p><div class="table-contents"><table summary="Setting the replay period using a Qpid JMS AMQP 0-x address" border="1"><colgroup><col class="syntax" /><col class="example" /></colgroup><thead><tr><th>Syntax</th><th>Example</th></tr></thead><tbody><tr><td>Addressing</td><td>myqueue : { link : { x-subscribe: { arguments : { [...]
+ see only newly arriving messages (i.e. standard topic-like behaviour) but other consumers
+ may wish to start their message stream from some point in the past. This can be achieved by
+ setting a default filter on the queue so that consumers which do not explicitly set a replay
+ period get a default (in this case the desired default would be 0).</p><p>The default filter set for a queue can be set via the REST API using the attribute named
+ <code class="varname">defaultFilters</code>. This value is a map from filter name to type and arguments.
+ To set the default behaviour for the queue to be that consumers only receive newly arrived
+ messages, then you should set this attribute to the value:</p><pre class="screen">
+ { "x-qpid-replay-period" : { "x-qpid-replay-period" : [ "0" ] } }
+ </pre><p>
+ If the desired default behaviour is that each consumer should see all messages arriving in
+ the last minute, as well as all new messages then the value would need to be:</p><pre class="screen">
+ { "x-qpid-replay-period" : { "x-qpid-replay-period" : [ "60" ] } }
+ </pre></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Concepts-Queue-HoldingEntries"></a>4.7.4. Holding messages on a Queue</h3></div></div></div><p>Sometimes it is required that while a message has been placed on a queue, it is not released to consumers
+ until some external condition is met. </p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="d0e1140"></a>4.7.4.1. Hold until valid</h4></div></div></div><p>Currently Queues support the "holding" of messages until a (per-message) provided point in time.
+ By default this support is not enabled (since it requires extra work to be performed against every
+ message entering the queue. To enable support, the attribute <code class="varname">holdOnPublishEnabled</code>
+ must evaluate to true for the Queue. When enabled messages on the queue will be checked for the header
+ (for AMQP 0-8, 0-9, 0-9-1 and 0-10 messages) or message annotation (for AMQP 1.0 messages)
+ <code class="varname">x-qpid-not-valid-before</code>. If this header/annotation exists and contains a numeric value,
+ it will be treated as a point in time given in milliseconds since the UNIX epoch. The message will not
+ be released from the Queue to consumers until this time has been reached.
+ </p></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Concepts-Queue-OverflowPolicy"></a>4.7.5. Controlling Queue Size</h3></div></div></div><p>
+ <span class="emphasis"><em>Overflow Policy</em></span>
+ can be configured on an individual <span class="emphasis"><em>Queue</em></span> to limit the queue size. The size
+ can be expressed in terms of a <span class="emphasis"><em>maximum number of bytes</em></span> and/or
+ <span class="emphasis"><em>maximum number of messages</em></span>.
+ The <span class="emphasis"><em>Overflow Policy</em></span> defines the Queue behaviour when any of the limits is reached.
+ </p><p>
+ The following <span class="emphasis"><em>Overflow Policies</em></span> are supported:
+ </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
+ <span class="emphasis"><em>None</em></span>
+ - Queue is unbounded and the capacity limits are not applied.
+ This is a default policy applied implicitly when policy is not set explicitly.
+ </p></li><li class="listitem"><p>
+ <span class="emphasis"><em>Ring</em></span>
+ - If a newly arriving message takes the queue over a limit, message(s) are
+ deleted from the queue until the queue falls within its limit again. When deleting
+ messages, the oldest messages are deleted first. For a
+ <a class="link" href="Java-Broker-Concepts-Queues.html#Java-Broker-Concepts-Queues-Types-Priority" title="4.7.1.2. Priority">Priority Queue</a>
+ the oldest messages with lowest priorities are removed.
+ </p></li><li class="listitem"><p>
+ <span class="emphasis"><em>Producer Flow Control</em></span>
+ -The producing sessions
+ are blocked until queue depth falls below the <span class="emphasis"><em>resume threshold</em></span> set as a
+ context variable <span class="emphasis"><em>${queue.queueFlowResumeLimit}</em></span>
+ (specifying the percentage from the limit values. Default is 80%).
+ </p></li><li class="listitem"><p>
+ <span class="emphasis"><em>Flow to Disk</em></span>
+ -If the queue breaches a limit, newly arriving messages are written to disk and the in-memory
+ representation of the message is minimised. The Broker will transparently retrieve messages
+ from disk as they are required by a consumer or management. The flow to disk policy does not
+ actually restrict the overall size of the queue, merely the space occupied in memory.
+ The Broker's other <a class="link" href="Java-Broker-Runtime-Flow-To-Disk.html" title="9.6. Flow to Disk">Flow to Disk feature</a>
+ operates completely independent of this Queue Overflow Policy.
+ </p></li><li class="listitem"><p>
+ <span class="emphasis"><em>Reject</em></span>
+ -A newly arriving message is rejected when queue limit is breached.
+ </p></li></ul></div><p>
+ </p><p>
+ A negative value for <span class="emphasis"><em>maximum number of messages</em></span> or
+ <span class="emphasis"><em>maximum number of bytes</em></span> disables the limit.
+ </p><p>
+ The Broker issues Operational log messages when the queue sizes are breached. These are documented
+ at <a class="xref" href="Java-Broker-Appendix-Operation-Logging.html#Java-Broker-Appendix-Operation-Logging-Message-List-Queue" title="Table C.6. Queue Log Messages">Table C.6, “Queue Log Messages”</a>.
+ </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="Java-Broker-Concepts-Queues-SetLowPrefetch"></a>4.7.6. Using low pre-fetch with special queue types</h3></div></div></div><p>Messaging clients may buffered messages for performance reasons. In Qpid, this is commonly known as
+ <span class="emphasis"><em>pre-fetch</em></span></p><p>When using some of the messaging features described on this section, using prefetch can give
+ unexpected behaviour. Once the broker has sent a message to the client its delivery order is then fixed,
+ regardless of the special behaviour of the queue. </p><p>For example, if using a priority queue and a prefetch of 100, and 100 messages arrive with
+ priority 2, the broker will send these messages to the client. If then a new message arrives
+ with priority 1, the broker cannot leap frog messages of lower priority. The priority 1 will
+ be delivered at the front of the next batch of messages to be sent to the client.</p><p>Using pre-fetch of 1 will give exact queue-type semantics as perceived by the
+ client however, this brings a performance cost. You could test with a slightly higher
+ pre-fetch to trade-off between throughput and exact semantics.</p><p>See the messaging client documentation for details of how to configure prefetch.</p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Java-Broker-Concepts-Exchanges.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="Java-Broker-Concepts.html">Up</a></td><td width="40%" align="right"> <a acces [...]
+
+ <hr/>
+
+ <ul id="-apache-navigation">
+ <li><a href="http://www.apache.org/">Apache</a></li>
+ <li><a href="http://www.apache.org/licenses/">License</a></li>
+ <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+ <li><a href="http://www.apache.org/foundation/thanks.html">Thanks!</a></li>
+ <li><a href="/security.html">Security</a></li>
+ <li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="" alt="Apache"/></a></li>
+ </ul>
+
+ <p id="-legal">
+ Apache Qpid, Messaging built on AMQP; Copyright © 2015
+ The Apache Software Foundation; Licensed under
+ the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
+ License, Version 2.0</a>; Apache Qpid, Qpid, Qpid Proton,
+ Proton, Apache, the Apache feather logo, and the Apache Qpid
+ project logo are trademarks of The Apache Software
+ Foundation; All other marks mentioned may be trademarks or
+ registered trademarks of their respective owners
+ </p>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/content/releases/qpid-broker-j-8.0.0/index.html b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts-RemoteReplicationNodes.html
similarity index 64%
copy from content/releases/qpid-broker-j-8.0.0/index.html
copy to content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts-RemoteReplicationNodes.html
index 3457c81e3..e7485d48b 100644
--- a/content/releases/qpid-broker-j-8.0.0/index.html
+++ b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts-RemoteReplicationNodes.html
@@ -21,7 +21,7 @@
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
- <title>Qpid Broker-J 8.0.0 - Apache Qpid™</title>
+ <title>4.4. Remote Replication Nodes - Apache Qpid™</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
@@ -111,92 +111,11 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
</div>
<div id="-middle" class="panel">
- <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li>Qpid Broker-J 8.0.0</li></ul>
+ <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.0.0/index.html">Qpid Broker-J 9.0.0</a></li><li><a href="/releases/qpid-broker-j-9.0.0/book/index.html">Apache Qpid Broker-J</a></li><li>4.4. Remote Replication Nodes</li></ul>
<div id="-middle-content">
- <h1 id="qpid-broker-j-800">Qpid Broker-J 8.0.0</h1>
-
-<p><a href="/components/broker-j/index.html">Qpid Broker-J</a> is a message broker written in Java that stores, routes,
-and forwards messages using AMQP 1.0, 0-10, 0-9-1, 0-9 and 0-8. More about
-<a href="/index.html">Qpid</a>.</p>
-
-<p>For a detailed list of the changes in this release, see the <a href="release-notes.html">release
-notes</a>.</p>
-
-<p>It's important to <a href="/download.html#verify-what-you-download">verify the
-integrity</a> of the
-files you download.</p>
-
-<h2 id="source-archives">Source archives</h2>
-
-<table>
-<thead>
-<tr>
- <th>Content</th>
- <th>Download</th>
- <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/8.0.0/apache-qpid-broker-j-8.0.0-src.tar.gz">apache-qpid-broker-j-8.0.0-src.tar.gz</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/apache-qpid-broker-j-8.0.0-src.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/apache-qpid-broker-j-8.0.0-src.tar.gz.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="binaries">Binaries</h2>
-
-<table>
-<thead>
-<tr>
- <th>Content</th>
- <th>Download</th>
- <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.tar.gz">apache-qpid-broker-j-8.0.0-bin.tar.gz</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.tar.gz.sha512">SHA512</a></td>
-</tr>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.zip">apache-qpid-broker-j-8.0.0-bin.zip</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.zip.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.zip.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="documentation">Documentation</h2>
-
-<div class="two-column">
-
-<ul>
-<li><a href="book/Java-Broker-Installation.html">Installing Qpid Broker-J</a></li>
-<li><a href="book/index.html">Broker book</a></li>
-</ul>
-
-</div>
-
-<h2 id="more-information">More information</h2>
-
-<ul>
-<li><a href="http://archive.apache.org/dist/qpid/broker-j/8.0.0">All release artefacts</a></li>
-<li><a href="https://issues.apache.org/jira/issues/?jql=project+%3D+QPID+AND+fixVersion+%3D+%27qpid-java-broker-8.0.0%27+AND+resolution+%3D+%27fixed%27+ORDER+BY+priority+DESC">Resolved issues in JIRA</a></li>
-<li><a href="https://gitbox.apache.org/repos/asf/qpid-broker-j.git/tree/refs/tags/8.0.0">Source repository tag</a></li>
-</ul>
-
-<script type="text/javascript">
- _deferredFunctions.push(function() {
- if ("8.0.0" === "8.0.6" || "8.0.0" === "") {
- _modifyCurrentReleaseLinks();
- }
- });
-</script>
-
+ <div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">4.4. Remote Replication Nodes</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Java-Broker-Concepts-Virtualhost-Nodes.html">Prev</a> </td><th width="60%" align="center">Chapter 4. Concepts</th><td width="20%" align="right"> <a accesskey="n" href="Java-Broker-Concepts-Virtualhosts.html">Next</a></td></tr></table><hr /></div><div class="se [...]
+ another virtualhost node in the group.</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Java-Broker-Concepts-Virtualhost-Nodes.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="Java-Broker-Concepts.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="Java-Broker-Concepts-Virtualhosts.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top [...]
<hr/>
diff --git a/content/releases/qpid-broker-j-8.0.0/index.html b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts-Virtualhost-Nodes.html
similarity index 64%
copy from content/releases/qpid-broker-j-8.0.0/index.html
copy to content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts-Virtualhost-Nodes.html
index 3457c81e3..d1a829c65 100644
--- a/content/releases/qpid-broker-j-8.0.0/index.html
+++ b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts-Virtualhost-Nodes.html
@@ -21,7 +21,7 @@
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
- <title>Qpid Broker-J 8.0.0 - Apache Qpid™</title>
+ <title>4.3. Virtualhost Nodes - Apache Qpid™</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
@@ -111,92 +111,20 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
</div>
<div id="-middle" class="panel">
- <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li>Qpid Broker-J 8.0.0</li></ul>
+ <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.0.0/index.html">Qpid Broker-J 9.0.0</a></li><li><a href="/releases/qpid-broker-j-9.0.0/book/index.html">Apache Qpid Broker-J</a></li><li>4.3. Virtualhost Nodes</li></ul>
<div id="-middle-content">
- <h1 id="qpid-broker-j-800">Qpid Broker-J 8.0.0</h1>
-
-<p><a href="/components/broker-j/index.html">Qpid Broker-J</a> is a message broker written in Java that stores, routes,
-and forwards messages using AMQP 1.0, 0-10, 0-9-1, 0-9 and 0-8. More about
-<a href="/index.html">Qpid</a>.</p>
-
-<p>For a detailed list of the changes in this release, see the <a href="release-notes.html">release
-notes</a>.</p>
-
-<p>It's important to <a href="/download.html#verify-what-you-download">verify the
-integrity</a> of the
-files you download.</p>
-
-<h2 id="source-archives">Source archives</h2>
-
-<table>
-<thead>
-<tr>
- <th>Content</th>
- <th>Download</th>
- <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/8.0.0/apache-qpid-broker-j-8.0.0-src.tar.gz">apache-qpid-broker-j-8.0.0-src.tar.gz</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/apache-qpid-broker-j-8.0.0-src.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/apache-qpid-broker-j-8.0.0-src.tar.gz.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="binaries">Binaries</h2>
-
-<table>
-<thead>
-<tr>
- <th>Content</th>
- <th>Download</th>
- <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.tar.gz">apache-qpid-broker-j-8.0.0-bin.tar.gz</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.tar.gz.sha512">SHA512</a></td>
-</tr>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.zip">apache-qpid-broker-j-8.0.0-bin.zip</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.zip.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.zip.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="documentation">Documentation</h2>
-
-<div class="two-column">
-
-<ul>
-<li><a href="book/Java-Broker-Installation.html">Installing Qpid Broker-J</a></li>
-<li><a href="book/index.html">Broker book</a></li>
-</ul>
-
-</div>
-
-<h2 id="more-information">More information</h2>
-
-<ul>
-<li><a href="http://archive.apache.org/dist/qpid/broker-j/8.0.0">All release artefacts</a></li>
-<li><a href="https://issues.apache.org/jira/issues/?jql=project+%3D+QPID+AND+fixVersion+%3D+%27qpid-java-broker-8.0.0%27+AND+resolution+%3D+%27fixed%27+ORDER+BY+priority+DESC">Resolved issues in JIRA</a></li>
-<li><a href="https://gitbox.apache.org/repos/asf/qpid-broker-j.git/tree/refs/tags/8.0.0">Source repository tag</a></li>
-</ul>
-
-<script type="text/javascript">
- _deferredFunctions.push(function() {
- if ("8.0.0" === "8.0.6" || "8.0.0" === "") {
- _modifyCurrentReleaseLinks();
- }
- });
-</script>
-
+ <div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">4.3. Virtualhost Nodes</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Java-Broker-Concepts-Broker.html">Prev</a> </td><th width="60%" align="center">Chapter 4. Concepts</th><td width="20%" align="right"> <a accesskey="n" href="Java-Broker-Concepts-RemoteReplicationNodes.html">Next</a></td></tr></table><hr /></div><div class="section">< [...]
+ one virtualhost.</p><p>A <span class="emphasis"><em>virtualhost node</em></span> is backed by storage. This storage is used to record
+ the durable entities that exist beneath the virtualhost node (the virtualhost, queues, exchanges
+ etc).</p><p>When HA is in use, it is the virtualhost nodes of many Brokers that come together to form
+ the group. The virtualhost nodes together elect a master. When the high availability feature is
+ in use, the virtualhost node has <a class="link" href="Java-Broker-Concepts-RemoteReplicationNodes.html" title="4.4. Remote Replication Nodes">remote replications nodes</a>. There is a remote replication node corresponding to each
+ remote virtualhost node that form part of the group.</p><p>
+ <span class="emphasis"><em>Virtualhost node</em></span> also provides an initial configuration for its <span class="emphasis"><em>virtualhost</em></span>.
+ How to specify initial configuration for <span class="emphasis"><em>virtual host</em></span> is described at
+ <a class="xref" href="Java-Broker-Virtual-Host-Initial-Configuration.html" title="5.8. Virtualhost Initial Configuration">Section 5.8, “Virtualhost Initial Configuration”</a>.
+ </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Java-Broker-Concepts-Broker.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="Java-Broker-Concepts.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="Java-Broker-Concepts-RemoteReplicationNodes.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">4.2. Broker </td><td width="20%" align= [...]
<hr/>
diff --git a/content/releases/qpid-broker-j-7.1.12/index.html b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts-Virtualhosts.html
similarity index 58%
copy from content/releases/qpid-broker-j-7.1.12/index.html
copy to content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts-Virtualhosts.html
index 16d35d7a6..129da9782 100644
--- a/content/releases/qpid-broker-j-7.1.12/index.html
+++ b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts-Virtualhosts.html
@@ -21,7 +21,7 @@
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
- <title>Qpid Broker-J 7.1.12 - Apache Qpid™</title>
+ <title>4.5. Virtualhosts - Apache Qpid™</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
@@ -111,92 +111,25 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
</div>
<div id="-middle" class="panel">
- <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li>Qpid Broker-J 7.1.12</li></ul>
+ <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.0.0/index.html">Qpid Broker-J 9.0.0</a></li><li><a href="/releases/qpid-broker-j-9.0.0/book/index.html">Apache Qpid Broker-J</a></li><li>4.5. Virtualhosts</li></ul>
<div id="-middle-content">
- <h1 id="qpid-broker-j-7112">Qpid Broker-J 7.1.12</h1>
-
-<p><a href="/components/broker-j/index.html">Qpid Broker-J</a> is a message broker written in Java that stores, routes,
-and forwards messages using AMQP 1.0, 0-10, 0-9-1, 0-9 and 0-8. More about
-<a href="/index.html">Qpid</a>.</p>
-
-<p>For a detailed list of the changes in this release, see the <a href="release-notes.html">release
-notes</a>.</p>
-
-<p>It's important to <a href="/download.html#verify-what-you-download">verify the
-integrity</a> of the
-files you download.</p>
-
-<h2 id="source-archives">Source archives</h2>
-
-<table>
-<thead>
-<tr>
- <th>Content</th>
- <th>Download</th>
- <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12/apache-qpid-broker-j-7.1.12-src.tar.gz">apache-qpid-broker-j-7.1.12-src.tar.gz</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/apache-qpid-broker-j-7.1.12-src.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/apache-qpid-broker-j-7.1.12-src.tar.gz.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="binaries">Binaries</h2>
-
-<table>
-<thead>
-<tr>
- <th>Content</th>
- <th>Download</th>
- <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.tar.gz">apache-qpid-broker-j-7.1.12-bin.tar.gz</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.tar.gz.sha512">SHA512</a></td>
-</tr>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.zip">apache-qpid-broker-j-7.1.12-bin.zip</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.zip.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/binaries/apache-qpid-broker-j-7.1.12-bin.zip.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="documentation">Documentation</h2>
-
-<div class="two-column">
-
-<ul>
-<li><a href="book/Java-Broker-Installation.html">Installing Qpid Broker-J</a></li>
-<li><a href="book/index.html">Broker book</a></li>
-</ul>
-
-</div>
-
-<h2 id="more-information">More information</h2>
-
-<ul>
-<li><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12">All release artefacts</a></li>
-<li><a href="https://issues.apache.org/jira/issues/?jql=project+%3D+QPID+AND+fixVersion+%3D+%27qpid-java-broker-7.1.12%27+AND+resolution+%3D+%27fixed%27+ORDER+BY+priority+DESC">Resolved issues in JIRA</a></li>
-<li><a href="https://gitbox.apache.org/repos/asf/qpid-broker-j.git/tree/refs/tags/7.1.12">Source repository tag</a></li>
-</ul>
-
-<script type="text/javascript">
- _deferredFunctions.push(function() {
- if ("7.1.12" === "8.0.6" || "7.1.12" === "") {
- _modifyCurrentReleaseLinks();
- }
- });
-</script>
-
+ <div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">4.5. Virtualhosts</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Java-Broker-Concepts-RemoteReplicationNodes.html">Prev</a> </td><th width="60%" align="center">Chapter 4. Concepts</th><td width="20%" align="right"> <a accesskey="n" href="Java-Broker-Concepts-Exchanges.html">Next</a></td></tr></table><hr /></div><div class="section"><di [...]
+ the messaging that goes on within one virtualhost is independent of any messaging that goes on
+ in another virtualhost. For instance, a queue named <span class="emphasis"><em>foo</em></span> defined in one
+ virtualhost is completely independent of a queue named <span class="emphasis"><em>foo</em></span> in another
+ virtualhost.</p><p>A virtualhost is identified by a name which must be unique broker-wide. Clients use the name
+ to identify the virtualhost to which they wish to connect when they connect.</p><p>A virtualhost exists in a virtualhost node.</p><p>The virtualhost comprises a number of entities. This section summaries the purpose of
+ each of the entities and describes the relationships between them. These details are developed
+ further in the sub-sections that follow.</p><p><span class="emphasis"><em>Exchanges</em></span> is a named entity within the Virtual Host which receives
+ messages from producers and routes them to matching Queues. When using AMQP 0-8, 0-9, 0-9-1, 0-10
+ the exchange is the only way ingressing a message into the virtualhost. When using AMQP 1.0
+ producers may route messages via exchanges or direct to queues.</p><p><span class="emphasis"><em>Queues</em></span> are named entities that hold messages for delivery to consumer
+ applications.</p><p><span class="emphasis"><em>Connections</em></span> represent a live connection to the virtualhost from a
+ messaging client.</p><p>A <span class="emphasis"><em>Session</em></span> represents a context for the production or consumption of
+ messages. A Connection can have many Sessions.</p><p>A <span class="emphasis"><em>Consumer</em></span> represents a live consumer that is attached to queue.</p><p><span class="emphasis"><em>Loggers</em></span> are responsible for producing logs for this virtualhost.</p><p> The following diagram depicts the Virtualhost model: </p><div class="figure"><a id="d0e523"></a><p class="title"><strong>Figure 4.3. Virtualhost Model showing major entities</strong></p><div class="figure-contents" [...]
+ </p><p>A <span class="emphasis"><em>virtualhost</em></span> is backed by storage which is used to store the
+ messages.</p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Java-Broker-Concepts-RemoteReplicationNodes.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="Java-Broker-Concepts.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="Java-Broker-Concepts-Exchanges.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">4.4. Remote Replication N [...]
<hr/>
diff --git a/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts.html b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts.html
new file mode 100644
index 000000000..f5f1f95ff
--- /dev/null
+++ b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Concepts.html
@@ -0,0 +1,178 @@
+<!DOCTYPE html>
+<!--
+ -
+ - Licensed to the Apache Software Foundation (ASF) under one
+ - or more contributor license agreements. See the NOTICE file
+ - distributed with this work for additional information
+ - regarding copyright ownership. The ASF licenses this file
+ - to you under the Apache License, Version 2.0 (the
+ - "License"); you may not use this file except in compliance
+ - with the License. You may obtain a copy of the License at
+ -
+ - http://www.apache.org/licenses/LICENSE-2.0
+ -
+ - Unless required by applicable law or agreed to in writing,
+ - software distributed under the License is distributed on an
+ - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ - KIND, either express or implied. See the License for the
+ - specific language governing permissions and limitations
+ - under the License.
+ -
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+ <head>
+ <title>Chapter 4. Concepts - Apache Qpid™</title>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+ <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
+ <link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
+ <script type="text/javascript">var _deferredFunctions = [];</script>
+ <script type="text/javascript" src="/deferred.js" defer="defer"></script>
+ <!--[if lte IE 8]>
+ <link rel="stylesheet" href="/ie.css" type="text/css"/>
+ <script type="text/javascript" src="/html5shiv.js"></script>
+ <![endif]-->
+
+ <!-- Redirects for `go get` and godoc.org -->
+ <meta name="go-import"
+ content="qpid.apache.org git https://gitbox.apache.org/repos/asf/qpid-proton.git"/>
+ <meta name="go-source"
+ content="qpid.apache.org
+https://github.com/apache/qpid-proton/blob/go1/README.md
+https://github.com/apache/qpid-proton/tree/go1{/dir}
+https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
+ </head>
+ <body>
+ <div id="-content">
+ <div id="-top" class="panel">
+ <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>
+
+ <a id="-search-link"><img width="22" height="16" src="" alt="Search"/></a>
+
+ <ul id="-global-navigation">
+ <li><a id="-logotype" href="/index.html">Apache Qpid<sup>™</sup></a></li>
+ <li><a href="/documentation.html">Documentation</a></li>
+ <li><a href="/download.html">Download</a></li>
+ <li><a href="/discussion.html">Discussion</a></li>
+ </ul>
+ </div>
+
+ <div id="-menu" class="panel" style="display: none;">
+ <div class="flex">
+ <section>
+ <h3>Project</h3>
+
+ <ul>
+ <li><a href="/overview.html">Overview</a></li>
+ <li><a href="/components/index.html">Components</a></li>
+ <li><a href="/releases/index.html">Releases</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Messaging APIs</h3>
+
+ <ul>
+ <li><a href="/proton/index.html">Qpid Proton</a></li>
+ <li><a href="/components/jms/index.html">Qpid JMS</a></li>
+ <li><a href="/components/messaging-api/index.html">Qpid Messaging API</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Servers and tools</h3>
+
+ <ul>
+ <li><a href="/components/broker-j/index.html">Broker-J</a></li>
+ <li><a href="/components/cpp-broker/index.html">C++ broker</a></li>
+ <li><a href="/components/dispatch-router/index.html">Dispatch router</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Resources</h3>
+
+ <ul>
+ <li><a href="/dashboard.html">Dashboard</a></li>
+ <li><a href="https://cwiki.apache.org/confluence/display/qpid/Index">Wiki</a></li>
+ <li><a href="/resources.html">More resources</a></li>
+ </ul>
+ </section>
+ </div>
+ </div>
+
+ <div id="-search" class="panel" style="display: none;">
+ <form action="http://www.google.com/search" method="get">
+ <input type="hidden" name="sitesearch" value="qpid.apache.org"/>
+ <input type="text" name="q" maxlength="255" autofocus="autofocus" tabindex="1"/>
+ <button type="submit">Search</button>
+ <a href="/search.html">More ways to search</a>
+ </form>
+ </div>
+
+ <div id="-middle" class="panel">
+ <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.0.0/index.html">Qpid Broker-J 9.0.0</a></li><li><a href="/releases/qpid-broker-j-9.0.0/book/index.html">Apache Qpid Broker-J</a></li><li>Chapter 4. Concepts</li></ul>
+
+ <div id="-middle-content">
+ <div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 4. Concepts</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Java-Broker-Getting-Started-CommandLine.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="Java-Broker-Concepts-Broker.html">Next</a></td></tr></table><hr /></div><div class="chapter"><div class="titlepage"><di [...]
+ the entities and describes the relationships between them. These details are developed further
+ in the sub-sections that follow.</p><p>The most important entity is the <span class="emphasis"><em>Virtualhost</em></span>. A virtualhost is an
+ independent container in which messaging is performed. A <span class="emphasis"><em>virtualhost</em></span> exists
+ in a container called a <span class="emphasis"><em>virtualhost node</em></span>. A virtualhost node has exactly
+ one virtualhost.</p><p>An <span class="emphasis"><em>Exchange</em></span> accepts messages from a producer application and routes these
+ to one or more <span class="emphasis"><em>Queues</em></span> according to pre-arranged criteria called
+ <span class="emphasis"><em>bindings</em></span>. Exchange are an AMQP 0-8, 0-9, 0-9-1, 0-10 concept. They exist to
+ produce useful messaging behaviours such as fanout. When using AMQP 0-8, 0-9, 0-9-1, or 0-10, the
+ exchange is the only way ingressing a message into the virtualhost. When using AMQP
+ 1.0, the application may route messages using an exchange (to take advantage of advanced behaviours)
+ or it may publish messages direct to a queue.
+ </p><p><span class="emphasis"><em>Queue</em></span>s are named entities that hold/buffer messages for later delivery to
+ consumer applications.
+ </p><p><span class="emphasis"><em>Ports</em></span> accept connections for messaging and management. The Broker
+ supports any number of ports. When connecting for messaging, the user specifies a virtualhost
+ name to indicate the virtualhost to which it is to be connected.</p><p><span class="emphasis"><em>Authentication Providers</em></span> assert the identity of the user as it connects
+ for messaging or management. The Broker supports any number of authentication providers. Each
+ port is associated with exactly one authentication provider. The port uses the authentication
+ provider to assert the identity of the user as new connections are received.</p><p><span class="emphasis"><em>Group Providers</em></span> provide mechanisms that provide grouping of users. A
+ Broker supports zero or more group providers.</p><p><span class="emphasis"><em>Access Control Provider</em></span> allows the abilities of users (or groups of
+ users) to be restrained. A Broker can have zero or one access control providers.</p><p><span class="emphasis"><em>Connection Limit Provider</em></span> restrains users (or groups of
+ users) at opening new connections on AMQP ports.</p><p><span class="emphasis"><em>Keystores</em></span> provide a repositories of certificates and are used when the
+ Broker accepts SSL connections. Any number of keystore providers can be defined. Keystores are
+ be associated with Ports defined to accepts SSL.</p><p><span class="emphasis"><em>Truststores</em></span> provide a repositories of trust and are used to validate a
+ peer. Any number of truststore provides can be defined. Truststores can be associated with Ports
+ and other entities that form SSL connections.</p><p><span class="emphasis"><em>Remote Replication Nodes</em></span> are used when the high availability feature is
+ in use. It is the remote representation of other virtualhost nodes that form part of the same
+ group.</p><p><span class="emphasis"><em>Loggers</em></span>, at this point in the hierarchy, are responsible for the
+ production of a log for the Broker.</p><p>These concepts will be developed over the forthcoming pages. The diagrams below also help
+ put these entities in context of one and other.</p><p>
+ </p><div class="figure"><a id="d0e403"></a><p class="title"><strong>Figure 4.1. Message Flow through Key Entities</strong></p><div class="figure-contents"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="100%"><tr><td><img src="images/Broker-MessageFlow.png" height="360" alt="Message Flow through the Key Entities of the Broker" /></td></tr></table></div></div></div><p><br class="figure-break" />
+ </p><p>
+ </p><div class="figure"><a id="d0e415"></a><p class="title"><strong>Figure 4.2. Broker Structure showing major entities</strong></p><div class="figure-contents"><div class="mediaobject"><table border="0" summary="manufactured viewport for HTML img" style="cellpadding: 0; cellspacing: 0;" width="100%"><tr><td><img src="images/Broker-Model.png" height="360" alt="Broker Structure" /></td></tr></table></div></div></div><p><br class="figure-break" />
+ </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Java-Broker-Getting-Started-CommandLine.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="Java-Broker-Concepts-Broker.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">3.5. Using the command line </td><td width="20%" align="center"><a accesskey="h" href="Apach [...]
+
+ <hr/>
+
+ <ul id="-apache-navigation">
+ <li><a href="http://www.apache.org/">Apache</a></li>
+ <li><a href="http://www.apache.org/licenses/">License</a></li>
+ <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+ <li><a href="http://www.apache.org/foundation/thanks.html">Thanks!</a></li>
+ <li><a href="/security.html">Security</a></li>
+ <li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="" alt="Apache"/></a></li>
+ </ul>
+
+ <p id="-legal">
+ Apache Qpid, Messaging built on AMQP; Copyright © 2015
+ The Apache Software Foundation; Licensed under
+ the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
+ License, Version 2.0</a>; Apache Qpid, Qpid, Qpid Proton,
+ Proton, Apache, the Apache feather logo, and the Apache Qpid
+ project logo are trademarks of The Apache Software
+ Foundation; All other marks mentioned may be trademarks or
+ registered trademarks of their respective owners
+ </p>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Getting-Started-CommandLine.html b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Getting-Started-CommandLine.html
new file mode 100644
index 000000000..855f6d57c
--- /dev/null
+++ b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Getting-Started-CommandLine.html
@@ -0,0 +1,201 @@
+<!DOCTYPE html>
+<!--
+ -
+ - Licensed to the Apache Software Foundation (ASF) under one
+ - or more contributor license agreements. See the NOTICE file
+ - distributed with this work for additional information
+ - regarding copyright ownership. The ASF licenses this file
+ - to you under the Apache License, Version 2.0 (the
+ - "License"); you may not use this file except in compliance
+ - with the License. You may obtain a copy of the License at
+ -
+ - http://www.apache.org/licenses/LICENSE-2.0
+ -
+ - Unless required by applicable law or agreed to in writing,
+ - software distributed under the License is distributed on an
+ - "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ - KIND, either express or implied. See the License for the
+ - specific language governing permissions and limitations
+ - under the License.
+ -
+-->
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
+ <head>
+ <title>3.5. Using the command line - Apache Qpid™</title>
+ <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
+ <link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
+ <link rel="stylesheet" href="/deferred.css" type="text/css" defer="defer"/>
+ <script type="text/javascript">var _deferredFunctions = [];</script>
+ <script type="text/javascript" src="/deferred.js" defer="defer"></script>
+ <!--[if lte IE 8]>
+ <link rel="stylesheet" href="/ie.css" type="text/css"/>
+ <script type="text/javascript" src="/html5shiv.js"></script>
+ <![endif]-->
+
+ <!-- Redirects for `go get` and godoc.org -->
+ <meta name="go-import"
+ content="qpid.apache.org git https://gitbox.apache.org/repos/asf/qpid-proton.git"/>
+ <meta name="go-source"
+ content="qpid.apache.org
+https://github.com/apache/qpid-proton/blob/go1/README.md
+https://github.com/apache/qpid-proton/tree/go1{/dir}
+https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
+ </head>
+ <body>
+ <div id="-content">
+ <div id="-top" class="panel">
+ <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a>
+
+ <a id="-search-link"><img width="22" height="16" src="" alt="Search"/></a>
+
+ <ul id="-global-navigation">
+ <li><a id="-logotype" href="/index.html">Apache Qpid<sup>™</sup></a></li>
+ <li><a href="/documentation.html">Documentation</a></li>
+ <li><a href="/download.html">Download</a></li>
+ <li><a href="/discussion.html">Discussion</a></li>
+ </ul>
+ </div>
+
+ <div id="-menu" class="panel" style="display: none;">
+ <div class="flex">
+ <section>
+ <h3>Project</h3>
+
+ <ul>
+ <li><a href="/overview.html">Overview</a></li>
+ <li><a href="/components/index.html">Components</a></li>
+ <li><a href="/releases/index.html">Releases</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Messaging APIs</h3>
+
+ <ul>
+ <li><a href="/proton/index.html">Qpid Proton</a></li>
+ <li><a href="/components/jms/index.html">Qpid JMS</a></li>
+ <li><a href="/components/messaging-api/index.html">Qpid Messaging API</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Servers and tools</h3>
+
+ <ul>
+ <li><a href="/components/broker-j/index.html">Broker-J</a></li>
+ <li><a href="/components/cpp-broker/index.html">C++ broker</a></li>
+ <li><a href="/components/dispatch-router/index.html">Dispatch router</a></li>
+ </ul>
+ </section>
+
+ <section>
+ <h3>Resources</h3>
+
+ <ul>
+ <li><a href="/dashboard.html">Dashboard</a></li>
+ <li><a href="https://cwiki.apache.org/confluence/display/qpid/Index">Wiki</a></li>
+ <li><a href="/resources.html">More resources</a></li>
+ </ul>
+ </section>
+ </div>
+ </div>
+
+ <div id="-search" class="panel" style="display: none;">
+ <form action="http://www.google.com/search" method="get">
+ <input type="hidden" name="sitesearch" value="qpid.apache.org"/>
+ <input type="text" name="q" maxlength="255" autofocus="autofocus" tabindex="1"/>
+ <button type="submit">Search</button>
+ <a href="/search.html">More ways to search</a>
+ </form>
+ </div>
+
+ <div id="-middle" class="panel">
+ <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.0.0/index.html">Qpid Broker-J 9.0.0</a></li><li><a href="/releases/qpid-broker-j-9.0.0/book/index.html">Apache Qpid Broker-J</a></li><li>3.5. Using the command line</li></ul>
+
+ <div id="-middle-content">
+ <div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">3.5. Using the command line</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Java-Broker-Getting-Started-Logging.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Getting Started</th><td width="20%" align="right"> <a accesskey="n" href="Java-Broker-Concepts.html">Next</a></td></tr></table><hr /></div><div class="section"><div [...]
+ For additional details about the broker configuration and related command line arguments see
+ <a class="xref" href="Java-Broker-Initial-Configuration.html" title="Chapter 5. Initial Configuration">Chapter 5, <em>Initial Configuration</em></a>.
+ The broker is fully configurable via its Web Management Console, for details of this see
+ <a class="xref" href="Java-Broker-Management-Channel-Web-Console.html" title="6.2. Web Management Console">Section 6.2, “Web Management Console”</a>.
+ </p><p>To see usage information for all command line options, use the <code class="option">--help</code> option</p><pre class="programlisting">bin/qpid-server --help</pre><pre class="screen">usage: Qpid [-cic <path>] [-h] [-icp <path>] [-mm] [-mmhttp <port>]
+ [-mmpass <password>] [-mmqv] [-os]
+ [-prop <name=value>] [-props <path>] [-sp <path>] [-st <type>] [-v]
+ -cic,--create-initial-config <path> create a copy of the
+ initial config file,
+ either to an
+ optionally specified
+ file path, or as
+ initial-config.json
+ in the current
+ directory
+ -h,--help print this message
+ -icp,--initial-config-path <path> set the location of
+ initial JSON config
+ to use when
+ creating/overwriting
+ a broker
+ configuration store
+ -mm,--management-mode start broker in
+ management mode,
+ disabling the AMQP
+ ports
+ -mmhttp,--management-mode-http-port <port> override http
+ management port in
+ management mode
+ -mmpass,--management-mode-password <password> Set the password for
+ the management mode
+ user mm_admin
+ -mmqv,--management-mode-quiesce-virtualhostnodes make virtualhost nodes
+ stay in the quiesced
+ state during
+ management mode.
+ -prop,--config-property <name=value> set a configuration
+ property to use when
+ resolving variables
+ in the broker
+ configuration store,
+ with format
+ "name=value"
+ -props,--system-properties-file <path> set the location of
+ initial properties
+ file to set
+ otherwise unset
+ system properties
+ -sp,--store-path <path> use given
+ configuration store
+ location
+ -st,--store-type <type> use given broker
+ configuration store
+ type
+ -v,--version print the version
+ information and exit
+</pre></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Java-Broker-Getting-Started-Logging.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="Java-Broker-Getting-Started.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="Java-Broker-Concepts.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">3.4. Log file </td><td width="20%" align="cente [...]
+
+ <hr/>
+
+ <ul id="-apache-navigation">
+ <li><a href="http://www.apache.org/">Apache</a></li>
+ <li><a href="http://www.apache.org/licenses/">License</a></li>
+ <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+ <li><a href="http://www.apache.org/foundation/thanks.html">Thanks!</a></li>
+ <li><a href="/security.html">Security</a></li>
+ <li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="" alt="Apache"/></a></li>
+ </ul>
+
+ <p id="-legal">
+ Apache Qpid, Messaging built on AMQP; Copyright © 2015
+ The Apache Software Foundation; Licensed under
+ the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
+ License, Version 2.0</a>; Apache Qpid, Qpid, Qpid Proton,
+ Proton, Apache, the Apache feather logo, and the Apache Qpid
+ project logo are trademarks of The Apache Software
+ Foundation; All other marks mentioned may be trademarks or
+ registered trademarks of their respective owners
+ </p>
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
diff --git a/content/releases/qpid-broker-j-8.0.0/index.html b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Getting-Started-Logging.html
similarity index 64%
copy from content/releases/qpid-broker-j-8.0.0/index.html
copy to content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Getting-Started-Logging.html
index 3457c81e3..86b7e3166 100644
--- a/content/releases/qpid-broker-j-8.0.0/index.html
+++ b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Getting-Started-Logging.html
@@ -21,7 +21,7 @@
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
- <title>Qpid Broker-J 8.0.0 - Apache Qpid™</title>
+ <title>3.4. Log file - Apache Qpid™</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
@@ -111,92 +111,13 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
</div>
<div id="-middle" class="panel">
- <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li>Qpid Broker-J 8.0.0</li></ul>
+ <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.0.0/index.html">Qpid Broker-J 9.0.0</a></li><li><a href="/releases/qpid-broker-j-9.0.0/book/index.html">Apache Qpid Broker-J</a></li><li>3.4. Log file</li></ul>
<div id="-middle-content">
- <h1 id="qpid-broker-j-800">Qpid Broker-J 8.0.0</h1>
-
-<p><a href="/components/broker-j/index.html">Qpid Broker-J</a> is a message broker written in Java that stores, routes,
-and forwards messages using AMQP 1.0, 0-10, 0-9-1, 0-9 and 0-8. More about
-<a href="/index.html">Qpid</a>.</p>
-
-<p>For a detailed list of the changes in this release, see the <a href="release-notes.html">release
-notes</a>.</p>
-
-<p>It's important to <a href="/download.html#verify-what-you-download">verify the
-integrity</a> of the
-files you download.</p>
-
-<h2 id="source-archives">Source archives</h2>
-
-<table>
-<thead>
-<tr>
- <th>Content</th>
- <th>Download</th>
- <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/8.0.0/apache-qpid-broker-j-8.0.0-src.tar.gz">apache-qpid-broker-j-8.0.0-src.tar.gz</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/apache-qpid-broker-j-8.0.0-src.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/apache-qpid-broker-j-8.0.0-src.tar.gz.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="binaries">Binaries</h2>
-
-<table>
-<thead>
-<tr>
- <th>Content</th>
- <th>Download</th>
- <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.tar.gz">apache-qpid-broker-j-8.0.0-bin.tar.gz</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.tar.gz.sha512">SHA512</a></td>
-</tr>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.zip">apache-qpid-broker-j-8.0.0-bin.zip</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.zip.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/8.0.0/binaries/apache-qpid-broker-j-8.0.0-bin.zip.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="documentation">Documentation</h2>
-
-<div class="two-column">
-
-<ul>
-<li><a href="book/Java-Broker-Installation.html">Installing Qpid Broker-J</a></li>
-<li><a href="book/index.html">Broker book</a></li>
-</ul>
-
-</div>
-
-<h2 id="more-information">More information</h2>
-
-<ul>
-<li><a href="http://archive.apache.org/dist/qpid/broker-j/8.0.0">All release artefacts</a></li>
-<li><a href="https://issues.apache.org/jira/issues/?jql=project+%3D+QPID+AND+fixVersion+%3D+%27qpid-java-broker-8.0.0%27+AND+resolution+%3D+%27fixed%27+ORDER+BY+priority+DESC">Resolved issues in JIRA</a></li>
-<li><a href="https://gitbox.apache.org/repos/asf/qpid-broker-j.git/tree/refs/tags/8.0.0">Source repository tag</a></li>
-</ul>
-
-<script type="text/javascript">
- _deferredFunctions.push(function() {
- if ("8.0.0" === "8.0.6" || "8.0.0" === "") {
- _modifyCurrentReleaseLinks();
- }
- });
-</script>
-
+ <div class="docbook"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">3.4. Log file</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Java-Broker-Getting-Started-Starting-Stopping-Unix.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Getting Started</th><td width="20%" align="right"> <a accesskey="n" href="Java-Broker-Getting-Started-CommandLine.html">Next</a></td></tr></table><hr /></div><div [...]
+ conditions. By default the log file is written within the log subdirectory beneath the work directory
+ - <code class="computeroutput">$QPID_WORK/log/qpid.log</code> (UNIX) and
+ <code class="computeroutput">%QPID_WORK%\log\qpid.log</code> (Windows).</p><p>For details of how to control the logging, see <a class="xref" href="Java-Broker-Runtime.html#Java-Broker-Runtime-Logging" title="9.1. Logging">Section 9.1, “Logging”</a></p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Java-Broker-Getting-Started-Starting-Stopping-Unix.html">Prev</a> </td><td width="20%" align="c [...]
<hr/>
diff --git a/content/releases/qpid-broker-j-7.1.12/index.html b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Getting-Started-Starting-Stopping-Unix.html
similarity index 61%
copy from content/releases/qpid-broker-j-7.1.12/index.html
copy to content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Getting-Started-Starting-Stopping-Unix.html
index 16d35d7a6..b2c62908b 100644
--- a/content/releases/qpid-broker-j-7.1.12/index.html
+++ b/content/releases/qpid-broker-j-9.0.0/book/Java-Broker-Getting-Started-Starting-Stopping-Unix.html
@@ -21,7 +21,7 @@
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
- <title>Qpid Broker-J 7.1.12 - Apache Qpid™</title>
+ <title>3.3. Starting/Stopping the broker on Unix - Apache Qpid™</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="/site.css" type="text/css" async="async"/>
@@ -111,92 +111,22 @@ https://github.com/apache/qpid-proton/blob/go1{/dir}/{file}#L{line}"/>
</div>
<div id="-middle" class="panel">
- <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li>Qpid Broker-J 7.1.12</li></ul>
+ <ul id="-path-navigation"><li><a href="/index.html">Home</a></li><li><a href="/releases/index.html">Releases</a></li><li><a href="/releases/qpid-broker-j-9.0.0/index.html">Qpid Broker-J 9.0.0</a></li><li><a href="/releases/qpid-broker-j-9.0.0/book/index.html">Apache Qpid Broker-J</a></li><li>3.3. Starting/Stopping the broker on Unix</li></ul>
<div id="-middle-content">
- <h1 id="qpid-broker-j-7112">Qpid Broker-J 7.1.12</h1>
-
-<p><a href="/components/broker-j/index.html">Qpid Broker-J</a> is a message broker written in Java that stores, routes,
-and forwards messages using AMQP 1.0, 0-10, 0-9-1, 0-9 and 0-8. More about
-<a href="/index.html">Qpid</a>.</p>
-
-<p>For a detailed list of the changes in this release, see the <a href="release-notes.html">release
-notes</a>.</p>
-
-<p>It's important to <a href="/download.html#verify-what-you-download">verify the
-integrity</a> of the
-files you download.</p>
-
-<h2 id="source-archives">Source archives</h2>
-
-<table>
-<thead>
-<tr>
- <th>Content</th>
- <th>Download</th>
- <th>Verify</th>
-</tr>
-</thead>
-<tbody>
-<tr>
- <td>Qpid Broker-J</td>
- <td><a href="http://archive.apache.org/dist/qpid/broker-j/7.1.12/apache-qpid-broker-j-7.1.12-src.tar.gz">apache-qpid-broker-j-7.1.12-src.tar.gz</a></td>
- <td><a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/apache-qpid-broker-j-7.1.12-src.tar.gz.asc">ASC</a>, <a href="https://archive.apache.org/dist/qpid/broker-j/7.1.12/apache-qpid-broker-j-7.1.12-src.tar.gz.sha512">SHA512</a></td>
-</tr>
-</tbody>
-</table>
-
-<h2 id="binaries">Binaries</h2>
-
-<table>
-<thead>
-<tr>
... 25184 lines suppressed ...
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org