Return-Path: X-Original-To: apmail-qpid-commits-archive@www.apache.org Delivered-To: apmail-qpid-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id AF7A2172D4 for ; Thu, 12 Mar 2015 20:25:50 +0000 (UTC) Received: (qmail 19059 invoked by uid 500); 12 Mar 2015 20:25:47 -0000 Delivered-To: apmail-qpid-commits-archive@qpid.apache.org Received: (qmail 19015 invoked by uid 500); 12 Mar 2015 20:25:47 -0000 Mailing-List: contact commits-help@qpid.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@qpid.apache.org Delivered-To: mailing list commits@qpid.apache.org Received: (qmail 18989 invoked by uid 99); 12 Mar 2015 20:25:47 -0000 Received: from eris.apache.org (HELO hades.apache.org) (140.211.11.105) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 12 Mar 2015 20:25:47 +0000 Received: from hades.apache.org (localhost [127.0.0.1]) by hades.apache.org (ASF Mail Server at hades.apache.org) with ESMTP id 40716AC013F for ; Thu, 12 Mar 2015 20:25:47 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1666288 [1/8] - in /qpid/dispatch/branches/0.4/doc/pre_built: ./ doc/ doc/qpid-dispatch/ doc/qpid-dispatch/book/ doc/qpid-dispatch/html/ doc/qpid-dispatch/html/_sources/ doc/qpid-dispatch/html/_sources/book/ doc/qpid-dispatch/html/_sources... Date: Thu, 12 Mar 2015 20:25:45 -0000 To: commits@qpid.apache.org From: aconway@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20150312202547.40716AC013F@hades.apache.org> Author: aconway Date: Thu Mar 12 20:25:44 2015 New Revision: 1666288 URL: http://svn.apache.org/r1666288 Log: DISPATCH-125: Check-in pre-built documentation to simplify building packages. The python-sphinx package needed to build the documentation is not available or too old on some current distros. Checked in a pre-built copy of the documentation for such situations. Added: qpid/dispatch/branches/0.4/doc/pre_built/ qpid/dispatch/branches/0.4/doc/pre_built/doc/ qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/ qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/LICENSE qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/README qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/TODO qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/book/ qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/book/addressing.rst qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/book/amqp-mapping.rst qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/book/book.rst qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/book/introduction.rst qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/book/schema.rst qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/book/using.rst qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/ qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/.buildinfo qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/README.html qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_sources/ qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_sources/README.txt qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_sources/book/ qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_sources/book/addressing.txt qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_sources/book/amqp-mapping.txt qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_sources/book/book.txt qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_sources/book/introduction.txt qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_sources/book/schema.txt qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_sources/book/using.txt qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_sources/index.txt qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_sources/man/ qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_sources/man/qdmanage.txt qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_sources/man/qdrouterd.conf.txt qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_sources/man/qdrouterd.txt qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_sources/man/qdstat.txt qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_sources/notes/ qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_sources/notes/code-conventions.txt qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_static/ qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_static/ajax-loader.gif qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_static/basic.css qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_static/comment-bright.png qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_static/comment-close.png qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_static/comment.png qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_static/contents.png qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_static/doctools.js qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_static/down-pressed.png qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_static/down.png qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_static/file.png qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_static/jquery.js qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_static/minus.png qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_static/navigation.png qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_static/plus.png qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_static/pygments.css qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_static/searchtools.js qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_static/sphinxdoc.css qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_static/underscore.js qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_static/up-pressed.png qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_static/up.png qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/_static/websupport.js qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/book/ qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/book/addressing.html qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/book/amqp-mapping.html qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/book/book.html qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/book/introduction.html qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/book/schema.html qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/book/using.html qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/genindex.html qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/index.html qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/man/ qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/man/qdmanage.html qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/man/qdrouterd.conf.html qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/man/qdrouterd.html qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/man/qdstat.html qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/notes/ qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/notes/code-conventions.html qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/objects.inv qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/search.html qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/html/searchindex.js qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/qdrouter.json qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/qdrouter.json.readme.txt qpid/dispatch/branches/0.4/doc/pre_built/man/ qpid/dispatch/branches/0.4/doc/pre_built/man/man5/ qpid/dispatch/branches/0.4/doc/pre_built/man/man5/qdrouterd.conf.5 qpid/dispatch/branches/0.4/doc/pre_built/man/man8/ qpid/dispatch/branches/0.4/doc/pre_built/man/man8/qdmanage.8 qpid/dispatch/branches/0.4/doc/pre_built/man/man8/qdrouterd.8 qpid/dispatch/branches/0.4/doc/pre_built/man/man8/qdstat.8 Added: qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/LICENSE URL: http://svn.apache.org/viewvc/qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/LICENSE?rev=1666288&view=auto ============================================================================== --- qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/LICENSE (added) +++ qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/LICENSE Thu Mar 12 20:25:44 2015 @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed 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. Added: qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/README URL: http://svn.apache.org/viewvc/qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/README?rev=1666288&view=auto ============================================================================== --- qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/README (added) +++ qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/README Thu Mar 12 20:25:44 2015 @@ -0,0 +1,72 @@ +Qpid Dispatch +============= + +A lightweight AMQP router for building scalable, available, and performant messaging +interconnect. + +Dependencies +============ + +To build dispatch on a yum-based Linux system, you will need the following +packages installed: + +- qpid-proton-c-devel (0.9 or later) +- python-qpid-proton (0.9 or later) +- cmake +- make +- gcc +- python-devel + +Dispatch will not build on Windows. + +To build formatted documentation (man pages, HTML, PDF) see the requirements in doc/README + +Building and testing +==================== + +From the dispatch directory: + +$ mkdir my_build # or directory of your choice. +$ cd my_build +$ cmake .. +$ make +$ ctest -VV + + +Running The Tests +================= + +From the directory you can run all the system and tests with: +$ ctest -VV + +ctest uses the script /test/run.py to set up the correct environment for +tests. You can use it to run tests individually from the /tests +directory, for example: + +$ ./run.py unit_tests_size 3 +$ ./run.py -m unittest system_tests_qdstat + +Run it without arguments to get a summary of how it can be used: +$ ./run.py + + +Clean build, install and test +============================= + +$ source config.sh; test.sh + +This does the following: +- NOTE: delete any existing directories 'build' and 'install' +- Do a fresh cmake and make in directory 'build' +- Run unit tests (not system tests) in 'build' +- Do 'make install' into the directory 'install' +- Run system tests on the installation in 'install'. + + +Valgrind support +================ + +If valgrind is installed it will be used by default when running the tests. +Set the cmake option 'USE_VALGRIND' to 'ON' or 'OFF' to enable/disable valgrind. +You can also set the environment variable 'USE_VALGRIND' to 'ON or 'OFF'. +If set the environment variable takes precendence over the cmake option. Added: qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/TODO URL: http://svn.apache.org/viewvc/qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/TODO?rev=1666288&view=auto ============================================================================== --- qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/TODO (added) +++ qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/TODO Thu Mar 12 20:25:44 2015 @@ -0,0 +1,89 @@ + + +# Qpid Dispatch TODO List + +Beyond this simple laundry list, you can find the list of bugs and +enhancements at the [Qpid Dispatch JIRA instance](http://issues.apache.org/jira/browse/DISPATCH) + +- Router Mode + - Stand-Alone-Router - Does not participate in routing protocol, does not permit inter-router + links, acts as a normal interior-router otherwise. + - Interior-Router - Participates in the routing protocol + - Edge-Concentrator - Does not participate in routing protocol, requires uplink connection(s) + This mode should be used when Dispatch is integrated into an endpoint + application or when it is acting as a connection concentrator. + Proxy and access-protocol functions will be available in this mode. + +- Connection Annotation: + - Type: Inter-router, uplink, endpoint, etc. This formal annotation can be accessed internally + by the connection handlers to guide Dispatch's handling of new connections. + - Weight-{in,out}: Weight/Cost metrics for inter-router links + +- Statistics for Instrumentation: + - Link + . delivery count {unsettled, pre-settled} + . deliveries {accepted, rejected, released, modified} + . octets of delivery {accepted, rejected, released, modified} + . flow frame count + . disposition frame count {forward, backward} + - Address + . deliveries {ingress, egress, transit} + . octets of delivery {ingress, egress, transit} + +- Infrastructure + - Router_Link - Buffer and Iterator for a copy of the link's target address (for use + as an address for messages with no 'to' field). + - Router Event Queue - Event queue to feed alerts to the Python router code. + Neighbor-link-loss is a valuable event because it accelerates the + detection of topology change. + - All PyRouter stimulus through a work queue. + - Router Code Updates + . Report address mappings to routers + . Generate RA immediately after updating routing tables + . Generate unsolicited updates for mobile addresses? + - Expose idle-timeout/keepalive on connectors and listeners + +- Major Roadmap Features + - Security Policy Enforcement + - Proxy (Translation Node) Capability + - Address Provisioning with variable semantics + - Link Routing + - Management, Instrumentation, and Accounting + - Link Cost + - Area Routing + +## Link routing + +Link routing occurs when a new link is attached to the router across one of its AMQP connections. +It is done based on the `target.address` field of an inbound link and the `source.address` field +of an outbound link. + +Link routing uses the same routing table that message routing uses. The difference is that the +routing occurs during the link-attach operation, and link attaches are propagated along the appropriate +path to the destination. What results is a chain of links, connected end-to-end, from source to +destination. It is similar to a *virtual circuit* in a telecom system. + +Each router in the chain holds pairs of link termini that are tied together. The router then simply +exchanges all deliveries, delivery state changes, and link state changes between the two termini. + +The endpoints that use the link chain do not see any difference in behavior between a link chain and +a single point-to-point link. All of the features available in the link protocol (flow control, +transactional delivery, etc.) are available over a routed link-chain. + Added: qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/book/addressing.rst URL: http://svn.apache.org/viewvc/qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/book/addressing.rst?rev=1666288&view=auto ============================================================================== --- qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/book/addressing.rst (added) +++ qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/book/addressing.rst Thu Mar 12 20:25:44 2015 @@ -0,0 +1,127 @@ +.. 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. + +Addressing +========== + +AMQP addresses are used to control the flow of messages across a network +of routers. Addresses are used in a number of different places in the +AMQP 1.0 protocol. They can be used in a specific message in the `to` +and `reply-to` fields of a message's properties. They are also used +during the creation of links in the `address` field of a `source` or +a `target`. + +Addresses designate various kinds of entities in a messaging network: + +- Endpoint processes that consume data or offer a service +- Topics that match multiple consumers to multiple producers +- Entities within a messaging broker: + - Queues + - Durable Topics + - Exchanges + +The syntax of an AMQP address is opaque as far as the router network is +concerned. A syntactical structure may be used by the administrator that +creates addresses, but the router treats them as opaque strings. Routers +consider addresses to be mobile such that any address may be directly +connected to any router in a network and may move around the topology. +In cases where messages are broadcast to or balanced across multiple +consumers, an address may be connected to multiple routers in the +network. + +Addresses have semantics associated with them. When an address is +created in the network, it is assigned a set of semantics (and access +rules) during a process called provisioning. The semantics of an address +control how routers behave when they see the address being used. + +Address semantics include the following considerations: + +- *Routing pattern* - direct, multicast, balanced +- *Undeliverable action* - drop, hold and retry, redirect +- *Reliability* - N destinations, etc. + +Routing patterns +---------------- + +Routing patterns constrain the paths that a message can take across a +network. + ++---------------+-------------------------------------------------------------------------+ +| *Pattern* | *Description* | ++===============+=========================================================================+ +| *Direct* |Direct routing allows for only one consumer to use an address at a | +| |time. Messages (or links) follow the lowest cost path across the network | +| |from the sender to the one receiver. | ++---------------+-------------------------------------------------------------------------+ +| *Multicast* |Multicast routing allows multiple consumers to use the same address at | +| |the same time. Messages are routed such that each consumer receives a | +| |copy of the message. | ++---------------+-------------------------------------------------------------------------+ +| *Balanced* |Balanced routing also allows multiple consumers to use the same | +| |address. In this case, messages are routed to exactly one of the | +| |consumers, and the network attempts to balance the traffic load across | +| |the set of consumers using the same address. | ++---------------+-------------------------------------------------------------------------+ + +Routing mechanisms +------------------ + +The fact that addresses can be used in different ways suggests that +message routing can be accomplished in different ways. Before going into +the specifics of the different routing mechanisms, it would be good to +first define what is meant by the term *routing*: + + In a network built of multiple routers connected by connections + (i.e., nodes and edges in a graph), *routing* determines which + connection to use to send a message directly to its destination or + one step closer to its destination. + +Each router serves as the terminus of a collection of incoming and +outgoing links. The links either connect directly to endpoints that +produce and consume messages, or they connect to other routers in the +network along previously established connections. + +Message routing +~~~~~~~~~~~~~~~ + +Message routing occurs upon delivery of a message and is done based on +the address in the message's `to` field. + +When a delivery arrives on an incoming link, the router extracts the +address from the delivered message's `to` field and looks the address +up in its routing table. The lookup results in zero or more outgoing +links onto which the message shall be resent. + ++-----------------+-----------------------------------------------------------------------+ +| *Delivery* | *Handling* | ++=================+=======================================================================+ +| *pre-settled* |If the arriving delivery is pre-settled (i.e., fire and forget), the | +| |incoming delivery shall be settled by the router, and the outgoing | +| |deliveries shall also be pre-settled. In other words, the pre-settled | +| |nature of the message delivery is propagated across the network to the | +| |message's destination. | +| | | ++-----------------+-----------------------------------------------------------------------+ +| *unsettled* |Unsettled delivery is also propagated across the network. Because | +| |unsettled delivery records cannot be discarded, the router tracks the | +| |incoming deliveries and keeps the association of the incoming | +| |deliveries to the resulting outgoing deliveries. This kept association | +| |allows the router to continue to propagate changes in delivery state | +| |(settlement and disposition) back and forth along the path which the | +| |message traveled. | +| | | ++-----------------+-----------------------------------------------------------------------+ Added: qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/book/amqp-mapping.rst URL: http://svn.apache.org/viewvc/qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/book/amqp-mapping.rst?rev=1666288&view=auto ============================================================================== --- qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/book/amqp-mapping.rst (added) +++ qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/book/amqp-mapping.rst Thu Mar 12 20:25:44 2015 @@ -0,0 +1,204 @@ +.. 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. + +AMQP Mapping +============ + +Dispatch Router is an AMQP router and as such, it provides extensions, +code-points, and semantics for routing over AMQP. This page documents the +details of Dispatch Router's use of AMQP. + +Message Annotations +------------------- + +The following Message Annotation fields are defined by Dispatch Router: + ++--------------------+------------------+-------------------------------------------------------+ +| *Field* | *Type* | *Description* | ++====================+==================+=======================================================+ +| x-opt-qd.ingress | string |The identity of the ingress router for a message-routed| +| | |message. The ingress router is the first router | +| | |encountered by a transiting message. The router will, | +| | |if this field is present, leave it unaltered. If the | +| | |field is not present, the router shall insert the field| +| | |with its own identity. | +| | | | +| | | | +| | | | ++--------------------+------------------+-------------------------------------------------------+ +| x-opt-qd.trace | list of string |The list of routers through which this message-routed | +| | |message has transited. If this field is not present, | +| | |the router shall do nothing. If the field is present, | +| | |the router shall append its own identity to the end of | +| | |the list. | +| | | | +| | | | ++--------------------+------------------+-------------------------------------------------------+ +| x-opt-qd.to | string |To-Override for message-routed messages. If this field | +| | |is present, the address in this field shall be used for| +| | |routing in lieu of the *to* field in the message | +| | |properties. A router may append, remove, or modify this| +| | |annotation field depending on the policy in place for | +| | |routing the message. | +| | | | +| | | | +| | | | ++--------------------+------------------+-------------------------------------------------------+ +| x-opt-qd.class | string |Message class. This is used to allow the router to | +| | |provide separate paths for different classes of | +| | |traffic. | ++--------------------+------------------+-------------------------------------------------------+ + +Source/Target Capabilities +-------------------------- + +The following Capability values are used in Sources and Targets. + ++----------------+----------------------------------------------------------------------------+ +| *Capability* | *Description* | ++================+============================================================================+ +| qd.router |This capability is added to sources and targets that are used for | +| |inter-router message exchange. | +| | | ++----------------+----------------------------------------------------------------------------+ + +Dynamic-Node-Properties +----------------------- + +The following dynamic-node-properties are used by Dispatch in Sources. + ++--------------------+-----------------------------------------------------------------------+ +| *Property* | *Description* | ++====================+=======================================================================+ +| x-opt-qd.address |The node address describing the destination desired for a dynamic | +| |source. If this is absent, the router will terminate any dynamic | +| |receivers. If this address is present, the router will use the address | +| |to route the dynamic link attach to the proper destination container. | +| | | ++--------------------+-----------------------------------------------------------------------+ + +Addresses and Address Formats +----------------------------- + +The following AMQP addresses and address patterns are used within +Dispatch Router. + +Address Patterns +~~~~~~~~~~~~~~~~ + ++--------------------------------+-------------------------------------------------------+ +| *Pattern* | *Description* | ++================================+=======================================================+ +| `_local/` |An address that references a locally attached | +| |endpoint. Messages using this address pattern shall not| +| |be routed over more than one link. | +| | | +| | | +| | | +| | | +| | | +| | | ++--------------------------------+-------------------------------------------------------+ +| `_topo///` |An address that references an endpoint attached to a | +| |specific router node in the network topology. Messages | +| |with addresses that follow this pattern shall be routed| +| |along the shortest path to the specified router. Note | +| |that addresses of this form are a-priori routable in | +| |that the address itself contains enough information to | +| |route the message to its destination. | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | ++--------------------------------+-------------------------------------------------------+ +| `` |A mobile address. An address of this format represents | +| |an endpoint or a set of distinct endpoints that are | +| |attached to the network in arbitrary locations. It is | +| |the responsibility of the router network to determine | +| |which router nodes are valid destinations for mobile | +| |addresses. | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | +| | | ++--------------------------------+-------------------------------------------------------+ + +Supported Addresses +~~~~~~~~~~~~~~~~~~~ + ++------------------------------+------------------------------------------------------------+ +| *Address* | *Description* | ++==============================+============================================================+ +| `_local/$management` |The management agent on the attached router/container. This | +| |address would be used by an endpoint that is a management | +| |client/console/tool wishing to access management data from | +| |the attached container. | ++------------------------------+------------------------------------------------------------+ +| `_topo/0/Router.E/agent` |The management agent at Router.E in area 0. This address | +| |would be used by a management client wishing to access | +| |management data from a specific container that is reachable | +| |within the network. | ++------------------------------+------------------------------------------------------------+ +| `_local/qdhello` |The router entity in each of the connected routers. This | +| |address is used to communicate with neighbor routers and is | +| |exclusively for the HELLO discovery protocol. | ++------------------------------+------------------------------------------------------------+ +| `_local/qdrouter` |The router entity in each of the connected routers. This | +| |address is used by a router to communicate with other | +| |routers in the network. | ++------------------------------+------------------------------------------------------------+ +| `_topo/0/Router.E/qdxrouter` |The router entity at the specifically indicated router. This| +| |address form is used by a router to communicate with a | +| |specific router that may or may not be a neighbor. | ++------------------------------+------------------------------------------------------------+ + +Implementation of the AMQP Management Specification +--------------------------------------------------- + +Qpid Dispatch is manageable remotely via AMQP. It is compliant with the +emerging AMQP Management specification (draft 9). + +Differences from the specification: + +- The `name` attribute is not required when an entity is created. If + not supplied it will be set to the same value as the system-generated + "identity" attribute. Otherwise it is treated as per the standard. +- The `REGISTER` and `DEREGISTER` operations are not implemented. The router + automatically discovers peer routers via the router network and makes + their management addresses available via the standard GET-MGMT-NODES + operation. Added: qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/book/book.rst URL: http://svn.apache.org/viewvc/qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/book/book.rst?rev=1666288&view=auto ============================================================================== --- qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/book/book.rst (added) +++ qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/book/book.rst Thu Mar 12 20:25:44 2015 @@ -0,0 +1,17 @@ +.. Qpid Dispatch documentation master file, created by + sphinx-quickstart on Tue Feb 24 11:25:59 2015. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Qpid Dispatch Router Book +========================= + +.. toctree:: + :numbered: + :maxdepth: 3 + + introduction + using + addressing + amqp-mapping + schema Added: qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/book/introduction.rst URL: http://svn.apache.org/viewvc/qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/book/introduction.rst?rev=1666288&view=auto ============================================================================== --- qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/book/introduction.rst (added) +++ qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/book/introduction.rst Thu Mar 12 20:25:44 2015 @@ -0,0 +1,113 @@ +.. 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. + +Introduction +============ + +Overview +-------- + +The Dispatch router is an AMQP message message router that provides +advanced interconnect capabilities. It allows flexible routing of +messages between any AMQP-enabled endpoints, whether they be clients, +servers, brokers or any other entity that can send or receive standard +AMQP messages. + +A messaging client can make a single AMQP connection into a messaging +bus built of Dispatch routers and, over that connection, exchange +messages with one or more message brokers, and at the same time exchange +messages directly with other endpoints without involving a broker at +all. + +The router is an intermediary for messages but it is *not* a broker. It +does not *take responsibility for* messages. It will, however, propagate +settlement and disposition across a network such that delivery +guarantees are met. In other words: the router network will deliver the +message, possibly via several intermediate routers, *and* it will route +the acknowledgement of that message by the ultimate reciever back across +the same path. This means that *responsibility* for the message is +transfered from the original sender to the ultimate receiver *as if they +were directly connected*. However this is done via a flexible network +that allows highly configurable routing of the message transparent to +both sender and receiver. + +There are some patterns where this enables "brokerless messaging" +approaches that are preferable to brokered approaches. In other cases a +broker is essential (in particular where you need the separation of +responsibility and/or the buffering provided by store-and-forward) but a +dispatch network can still be useful to tie brokers and clients together +into patterns that are difficult with a single broker. + +For a "brokerless" example, consider the common brokered implementation +of the request-response pattern, a client puts a request on a queue and +then waits for a reply on another queue. In this case the broker can be +a hindrance - the client may want to know immediatly if there is nobody +to serve the request, but typically it can only wait for a timeout to +discover this. With a dispatch network, the client can be informed +immediately if its message cannot be delivered because nobody is +listening. When the client receives acknowledgement of the request it +knows not just that it is sitting on a queue, but that it has actually +been received by the server. + +For an exampe of using dispatch to enhance the use of brokers, consider +using an array of brokers to implement a scalable distributed work +queue. A dispatch network can make this appear as a single queue, with +senders publishing to a single address and receivers subscribing to a +single address. The dispatch network can distribute work to any broker +in the array and collect work from any broker for any receiver. Brokers +can be shut down or added without affecting clients. This elegantly +solves the common difficult of "stuck messages" when implementing this +pattern with brokers alone. If a receiver is connected to a broker that +has no messages, but there are messages on another broker, you have to +somehow transfer them or leave them "stuck". With a dispatch network, +*all* the receivers are connected to *all* the brokers. If there is a +message anywhere it can be delivered to any receiver. + +The router is meant to be deployed in topologies of multiple routers, +preferably with redundant paths. It uses link-state routing protocols +and algorithms (similar to OSPF or IS-IS from the networking world) to +calculate the best path from every point to every other point and to +recover quickly from failures. It does not need to use clustering for +high availability; rather, it relies on redundant paths to provide +continued connectivity in the face of system or network failure. Because +it never takes responsibility for messages it is effectively stateless, +messages not delivered to their final destination will not be +acknowledged to the sender and therefore the sender can re-send such +messages if it is disconnected from the network. + +Benefits +-------- + +Simplifies connectivity + +- An endpoint can do all of its messaging through a single transport connection +- Avoid opening holes in firewalls for incoming connections + +Simplifies reliability + +- Reliability and availability are provided using redundant topology, not server clustering +- Reliable end-to-end messaging without persistent stores +- Use a message broker only when you need store-and-forward semantics + +Features +-------- + +- Supports arbitrary topology - no restrictions on redundancy +- Automatic route computation - adjusts quickly to changes in topology +- Cost-based route computation +- `Rich addressing semantics <#addressing>`__ +- Security Added: qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/book/schema.rst URL: http://svn.apache.org/viewvc/qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/book/schema.rst?rev=1666288&view=auto ============================================================================== --- qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/book/schema.rst (added) +++ qpid/dispatch/branches/0.4/doc/pre_built/doc/qpid-dispatch/book/schema.rst Thu Mar 12 20:25:44 2015 @@ -0,0 +1,828 @@ + +Management Schema +================= + + +This chapter documents the set of *management entity types* that define +configuration and management of a Dispatch Router. A management entity type has +a set of *attributes* that can be read, some attributes can also be +updated. Some entity types also support *operations* that can be called. + +All management entity types have the following standard attributes: + +*type* + The fully qualified type of the entity, + e.g. `org.apache.qpid.dispatch.router`. This document uses the short name + without the `org.apache.qpid.dispatch` prefix e.g. `router`. The dispatch + tools will accept the short or long name. + +*identity* + A system-generated identity of the entity. It includes + the short type name and some identifying information. E.g. `log/AGENT` or + `listener/localhost:amqp` + +There are two main categories of management entity type. + +*Configuration* Entities + Parameters that can be set in the configuration file + (see `qdrouterd.conf(5)` man page) or set at run-time with the `qdmanage(8)` + tool. + +*Operational* Entities + Run-time status values that can be queried using `qdstat(8)` or `qdmanage(8)` tools. + + +Configuration Entities +---------------------- + + +Configuration entities define the attributes allowed in the configuration file +(see `qdrouterd.conf(5)`) but you can also create entities once the router is +running using the `qdrouterd(8)` tool's `create` operation. Some entities can also +be modified using the `update` operation, see the entity descriptions below. + + +container ++++++++++ + +Attributes related to the AMQP container. + +Operations allowed: `READ` + + + +*containerName* (string, `CREATE`) + The name of the AMQP container. If not specified, the container name will be set to a value of the container's choosing. The automatically assigned container name is not guaranteed to be persistent across restarts of the container. + +*workerThreads* (integer, default=1, `CREATE`) + The number of threads that will be created to process message traffic and other application work (timers, non-amqp file descriptors, etc.) . + +*debugDump* (path, `CREATE`) + A file to dump debugging information that can't be logged normally. + + +router +++++++ + +Tracks peer routers and computes routes to destinations. + +Operations allowed: `READ` + + + +*routerId* (string, `CREATE`) + Router's unique identity. + +*mode* (One of ['standalone', 'interior', 'edge', 'endpoint'], default='standalone', `CREATE`) + In standalone mode, the router operates as a single component. It does not participate in the routing protocol and therefore will not cooperate with other routers. In interior mode, the router operates in cooperation with other interior routers in an interconnected network. In edge mode, the router operates with an up link into an interior router network. Edge routers are typically used as connection concentrators or as security firewalls for access into the interior network. + +*area* (string) + Unused placeholder. + +*helloInterval* (integer, default=1, `CREATE`) + Interval in seconds between HELLO messages sent to neighbor routers. + +*helloMaxAge* (integer, default=3, `CREATE`) + Time in seconds after which a neighbor is declared lost if no HELLO is received. + +*raInterval* (integer, default=30, `CREATE`) + Interval in seconds between Router-Advertisements sent to all routers in a stable network. + +*raIntervalFlux* (integer, default=4, `CREATE`) + Interval in seconds between Router-Advertisements sent to all routers during topology fluctuations. + +*remoteLsMaxAge* (integer, default=60, `CREATE`) + Time in seconds after which link state is declared stale if no RA is received. + +*mobileAddrMaxAge* (integer, default=60, `CREATE`) + Deprecated - This value is no longer used in the router. + +*addrCount* (integer) + Number of addresses known to the router. + +*linkCount* (integer) + Number of links attached to the router node. + +*nodeCount* (integer) + Number of known peer router nodes. + + +listener +++++++++ + +Listens for incoming connections to the router. + +Operations allowed: `CREATE`, `READ` + + + +*addr* (string, default='0.0.0.0', `CREATE`) + IP address: ipv4 or ipv6 literal or a host name. + +*port* (string, default='amqp', `CREATE`) + Port number or symbolic service name. + +*role* (One of ['normal', 'inter-router', 'on-demand'], default='normal', `CREATE`) + The role of an established connection. In the normal role, the connection is assumed to be used for AMQP clients that are doing normal message delivery over the connection. In the inter-router role, the connection is assumed to be to another router in the network. Inter-router discovery and routing protocols can only be used over inter-router connections. + +*certDb* (path, `CREATE`) + The path to the database that contains the public certificates of trusted certificate authorities (CA). + +*certFile* (path, `CREATE`) + The path to the file containing the PEM-formatted public certificate to be used on the local end of any connections using this profile. + +*keyFile* (path, `CREATE`) + The path to the file containing the PEM-formatted private key for the above certificate. + +*passwordFile* (path, `CREATE`) + If the above private key is password protected, this is the path to a file containing the password that unlocks the certificate key. + +*password* (string, `CREATE`) + An alternative to storing the password in a file referenced by passwordFile is to supply the password right here in the configuration file. This option can be used by supplying the password in the 'password' option. Don't use both password and passwordFile in the same profile. + +*saslMechanisms* (string, required, `CREATE`) + Comma separated list of accepted SASL authentication mechanisms. + +*requirePeerAuth* (boolean, default=True, `CREATE`) + Only for listeners using SSL. If set to 'yes', attached clients will be required to supply a certificate. If the certificate is not traceable to a CA in the ssl profile's cert-db, authentication fails for the connection. + +*trustedCerts* (path, `CREATE`) + This optional setting can be used to reduce the set of available CAs for client authentication. If used, this setting must provide a path to a PEM file that contains the trusted certificates. + +*allowUnsecured* (boolean, `CREATE`) + For listeners using SSL only. If set to 'yes' the listener will allow both SSL-secured clients and non-SSL clients to connect. + +*allowNoSasl* (boolean, `CREATE`) + If set to 'yes', this option causes the listener to allow clients to connect even if they skip the SASL authentication protocol. + +*maxFrameSize* (integer, default=65536, `CREATE`) + Defaults to 65536. If specified, it is the maximum frame size in octets that will be used in the connection-open negotiation with a connected peer. The frame size is the largest contiguous set of uninterrupted data that can be sent for a message delivery over the connection. Interleaving of messages on different links is done at frame granularity. + + +connector ++++++++++ + +Establishes an outgoing connections from the router. + +Operations allowed: `CREATE`, `READ` + + + +*addr* (string, default='0.0.0.0', `CREATE`) + IP address: ipv4 or ipv6 literal or a host name. + +*port* (string, default='amqp', `CREATE`) + Port number or symbolic service name. + +*role* (One of ['normal', 'inter-router', 'on-demand'], default='normal', `CREATE`) + The role of an established connection. In the normal role, the connection is assumed to be used for AMQP clients that are doing normal message delivery over the connection. In the inter-router role, the connection is assumed to be to another router in the network. Inter-router discovery and routing protocols can only be used over inter-router connections. + +*certDb* (path, `CREATE`) + The path to the database that contains the public certificates of trusted certificate authorities (CA). + +*certFile* (path, `CREATE`) + The path to the file containing the PEM-formatted public certificate to be used on the local end of any connections using this profile. + +*keyFile* (path, `CREATE`) + The path to the file containing the PEM-formatted private key for the above certificate. + +*passwordFile* (path, `CREATE`) + If the above private key is password protected, this is the path to a file containing the password that unlocks the certificate key. + +*password* (string, `CREATE`) + An alternative to storing the password in a file referenced by passwordFile is to supply the password right here in the configuration file. This option can be used by supplying the password in the 'password' option. Don't use both password and passwordFile in the same profile. + +*saslMechanisms* (string, required, `CREATE`) + Comma separated list of accepted SASL authentication mechanisms. + +*allowRedirect* (boolean, default=True, `CREATE`) + Allow the peer to redirect this connection to another address. + +*maxFrameSize* (integer, default=65536, `CREATE`) + Maximum frame size in octets that will be used in the connection-open negotiation with a connected peer. The frame size is the largest contiguous set of uninterrupted data that can be sent for a message delivery over the connection. Interleaving of messages on different links is done at frame granularity. + + +log ++++ + +Configure logging for a particular module. You can use the `UPDATE` operation to change log settings while the router is running. + +Operations allowed: `UPDATE`, `READ` + + + +*module* (One of ['ROUTER', 'ROUTER_HELLO', 'ROUTER_LS', 'ROUTER_MA', 'MESSAGE', 'SERVER', 'AGENT', 'CONTAINER', 'CONFIG', 'ERROR', 'DISPATCH', 'DEFAULT'], required) + Module to configure. The special module 'DEFAULT' specifies defaults for all modules. + +*enable* (string, default='default', required, `UPDATE`) + Levels are: trace, debug, info, notice, warning, error, critical. The enable string is a comma-separated list of levels. A level may have a trailing '+' to enable that level and above. For example 'trace,debug,warning+' means enable trace, debug, warning, error and critical. The value 'none' means disable logging for the module. The value 'default' means use the value from the DEFAULT module. + +*timestamp* (boolean, `UPDATE`) + Include timestamp in log messages. + +*source* (boolean, `UPDATE`) + Include source file and line number in log messages. + +*output* (string, `UPDATE`) + Where to send log messages. Can be 'stderr', 'syslog' or a file name. + + +fixedAddress +++++++++++++ + +Establishes semantics for addresses starting with a prefix. + +Operations allowed: `CREATE`, `READ` + + + +*prefix* (string, required, `CREATE`) + The address prefix (always starting with '/'). + +*phase* (integer, `CREATE`) + The phase of a multi-hop address passing through one or more waypoints. + +*fanout* (One of ['multiple', 'single'], default='multiple', `CREATE`) + One of 'multiple' or 'single'. Multiple fanout is a non-competing pattern. If there are multiple consumers using the same address, each consumer will receive its own copy of every message sent to the address. Single fanout is a competing pattern where each message is sent to only one consumer. + +*bias* (One of ['closest', 'spread'], default='closest', `CREATE`) + Only if fanout is single. One of 'closest' or 'spread'. Closest bias means that messages to an address will always be delivered to the closest (lowest cost) subscribed consumer. Spread bias will distribute the messages across subscribers in an approximately even manner. + + +waypoint +++++++++ + +A remote node that messages for an address pass through. + +Operations allowed: `CREATE`, `READ` + + + +*address* (string, required, `CREATE`) + The AMQP address of the waypoint. + +*connector* (string, required, `CREATE`) + The name of the on-demand connector used to reach the waypoint's container. + +*inPhase* (integer, default=-1, `CREATE`) + The phase of the address as it is routed _to_ the waypoint. + +*outPhase* (integer, default=-1, `CREATE`) + The phase of the address as it is routed _from_ the waypoint. + + +linkRoutePattern +++++++++++++++++ + +A pattern to match a connected container to endpoints for routed links. + +Operations allowed: `CREATE`, `READ` + + + +*prefix* (string, required, `CREATE`) + The AMQP address prefix for nodes on the container. + +*connector* (string, `CREATE`) + The name of the on-demand connector used to reach the waypoint's container. + + +Operational Entities +-------------------- + + +Operational entities provide statistics and other run-time attributes of the router. +The `qdstat(8)` tool provides a convenient way to query run-time statistics. +You can also use the general-purpose management tool `qdmanage(8)` to query +operational attributes. + + +org.amqp.management ++++++++++++++++++++ + +The standard AMQP management node interface. + +Operations allowed: `QUERY`, `GET-TYPES`, `GET-ANNOTATIONS`, `GET-OPERATIONS`, `GET-ATTRIBUTES`, `GET-MGMT-NODES`, `READ` + + + + +Operation GET-TYPES +^^^^^^^^^^^^^^^^^^^ + +Get the set of entity types and their inheritance relationships + +**Request properties:** + +*entityType* (string) + If set, restrict query results to entities that extend (directly or indirectly) this type + +*identity* (string) + Set to the value `self` + +**Response body** (map)A map where each key is an entity type name (string) and the corresponding value is the list of the entity types (strings) that it extends. + + +Operation GET-ATTRIBUTES +^^^^^^^^^^^^^^^^^^^^^^^^ + +Get the set of entity types and the annotations they implement + +**Request properties:** + +*entityType* (string) + If set, restrict query results to entities that extend (directly or indirectly) this type + +*identity* (string) + Set to the value `self` + +**Response body** (map)A map where each key is an entity type name (string) and the corresponding value is a list (of strings) of attributes on that entity type. + + +Operation GET-OPERATIONS +^^^^^^^^^^^^^^^^^^^^^^^^ + +Get the set of entity types and the operations they support + +**Request properties:** + +*entityType* (string) + If set, restrict query results to entities that extend (directly or indirectly) this type + +*identity* (string) + Set to the value `self` + +**Response body** (map)A map where each key is an entity type name (string) and the corresponding value is the list of operation names (strings) that it supports. + + +Operation GET-ANNOTATIONS +^^^^^^^^^^^^^^^^^^^^^^^^^ + +**Request properties:** + +*entityType* (string) + If set, restrict query results to entities that extend (directly or indirectly) this type + +*identity* (string) + Set to the value `self` + +**Response body** (map)A map where each key is an entity type name (string) and the corresponding value is the list of annotations (strings) that it implements. + + +Operation QUERY +^^^^^^^^^^^^^^^ + +Query for attribute values of multiple entities. + +**Request body** (map)A map containing the key `attributeNames` with value a list of (string) attribute names to return. If the list or the map is empty or the body is missing all attributes are returned. + +**Request properties:** + +*count* (integer) + If set, specifies the number of entries from the result set to return. If not set return all from `offset` + +*entityType* (string) + If set, restrict query results to entities that extend (directly or indirectly) this type + +*identity* (string) + Set to the value `self` + +*offset* (integer) + If set, specifies the number of the first element of the result set to be returned. + +**Response body** (map)A map with two entries. `attributeNames` is a list of the attribute names returned. `results` is a list of lists each containing the attribute values for a single entity in the same order as the names in the `attributeNames` entry. If an attribute name is not applicable for an entity then the corresponding value is `null` + +**Response properties:** + +*count* (integer) + Number of results returned + +*identity* (string) + Set to the value `self` + + +Operation GET-MGMT-NODES +^^^^^^^^^^^^^^^^^^^^^^^^ + +Get the addresses of all management nodes known to this router + +**Request properties:** + +*identity* (string) + Set to the value `self` + +**Response body** (list)A list of addresses (strings) of management nodes known to this management node. + + +management +++++++++++ + +Qpid dispatch router extensions to the standard org.amqp.management interface. + +Operations allowed: `GET-SCHEMA`, `GET-JSON-SCHEMA`, `QUERY`, `GET-TYPES`, `GET-ANNOTATIONS`, `GET-OPERATIONS`, `GET-ATTRIBUTES`, `GET-MGMT-NODES`, `READ` + + + + +Operation GET-SCHEMA-JSON +^^^^^^^^^^^^^^^^^^^^^^^^^ + +Get the qdrouterd schema for this router in JSON format + +**Request properties:** + +*indent* (integer) + Number of spaces to indent the formatted result. If not specified, the result is in minimal format, no unnecessary spaces or newlines. + +*identity* (string) + Set to the value `self` + +**Response body** (string)The qdrouter schema as a JSON string. + + +Operation GET-SCHEMA +^^^^^^^^^^^^^^^^^^^^ + +Get the qdrouterd schema for this router in AMQP map format + +**Request properties:** + +*identity* (string) + Set to the value `self` + +**Response body** (map)The qdrouter schema as a map. + + +router.link ++++++++++++ + +Link to another AMQP endpoint: router node, client or other AMQP process. + +Operations allowed: `READ` + + + +*linkName* (string) + +*linkType* (One of ['endpoint', 'waypoint', 'inter-router', 'inter-area']) + +*linkDir* (One of ['in', 'out']) + +*owningAddr* (string) + +*eventFifoDepth* (integer) + +*msgFifoDepth* (integer) + +*remoteContainer* (string) + + +router.address +++++++++++++++ + +AMQP address managed by the router. + +Operations allowed: `READ` + + + +*inProcess* (boolean) + +*subscriberCount* (integer) + +*remoteCount* (integer) + +*deliveriesIngress* (integer) + +*deliveriesEgress* (integer) + +*deliveriesTransit* (integer) + +*deliveriesToContainer* (integer) + +*deliveriesFromContainer* (integer) + +*key* (string) + Internal unique (to this router) key to identify the address + + +router.node ++++++++++++ + +Remote router node connected to this router. + +Operations allowed: `READ` + + + +*routerId* (string) + Remote node identifier. + +*instance* (integer) + Remote node boot number. + +*linkState* (list) + List of remote node's neighbours. + +*nextHop* (string) + Neighbour ID of next hop to remote node from here. + +*validOrigins* (list) + List of valid origin nodes for messages arriving via the remote node, used for duplicate elimination in redundant networks. + +*address* (string) + Address of the remote node + +*routerLink* (entityId) + Local link to remote node + + +connection +++++++++++ + +Connections to the router's container. + +Operations allowed: `READ` + + + +*container* (string) + The container for this connection + +*state* (One of ['connecting', 'opening', 'operational', 'failed', 'user']) + +*host* (string) + IP address and port number in the form addr:port. + +*dir* (One of ['in', 'out']) + Direction of connection establishment in or out of the router. + +*role* (string) + +*sasl* (string) + SASL mechanism used for authentication. + + +allocator ++++++++++ + +Memory allocation pool. + +Operations allowed: `READ` + + + +*typeName* (string) + +*typeSize* (integer) + +*transferBatchSize* (integer) + +*localFreeListMax* (integer) + +*globalFreeListMax* (integer) + +*totalAllocFromHeap* (integer) + +*totalFreeToHeap* (integer) + +*heldByThreads* (integer) + +*batchesRebalancedToThreads* (integer) + +*batchesRebalancedToGlobal* (integer) + + +Management Operations +--------------------- + + +The `qdstat(8)` and `qdmanage(8)` tools allow you to view or modify management entity +attributes. They work by invoking *management operations*. You can invoke these operations +from any AMQP client by sending a message with the appropriate properties and body to the +`$management` address. The message should have a `reply-to` address indicating where the +response should be sent. + + +Operations for all entity types ++++++++++++++++++++++++++++++++ + + +Operation READ +^^^^^^^^^^^^^^ + +Read attributes of an entity + +**Request properties:** + +*type* (string) + Type of desired entity. + +*name* (string) + Name of desired entity. Must supply name or identity. + +*identity* (string) + Identity of desired entity. Must supply name or identity. + +**Response body** (map)Attributes of the entity + + +Operation CREATE +^^^^^^^^^^^^^^^^ + +Create a new entity. + +**Request body** (map, required)Attributes for the new entity. Can include name and/or type. + +**Request properties:** + +*type* (string, required) + Type of new entity. + +*name* (string) + Name of new entity. Optional, defaults to identity. + +**Response body** (map)Attributes of the entity + + +Operation UPDATE +^^^^^^^^^^^^^^^^ + +Update attributes of an entity + +**Request body** (map)Attributes to update for the entity. Can include name or identity. + +**Request properties:** + +*type* (string) + Type of desired entity. + +*name* (string) + Name of desired entity. Must supply name or identity. + +*identity* (string) + Identity of desired entity. Must supply name or identity. + +**Response body** (map)Updated attributes of the entity + + +Operation DELETE +^^^^^^^^^^^^^^^^ + +Delete an entity + +**Request properties:** + +*type* (string) + Type of desired entity. + +*name* (string) + Name of desired entity. Must supply name or identity. + +*identity* (string) + Identity of desired entity. Must supply name or identity. + + +Operations for `org.amqp.management` entity type +++++++++++++++++++++++++++++++++++++++++++++++++ + + +Operation GET-TYPES +^^^^^^^^^^^^^^^^^^^ + +Get the set of entity types and their inheritance relationships + +**Request properties:** + +*entityType* (string) + If set, restrict query results to entities that extend (directly or indirectly) this type + +*identity* (string) + Set to the value `self` + +**Response body** (map)A map where each key is an entity type name (string) and the corresponding value is the list of the entity types (strings) that it extends. + + +Operation GET-ATTRIBUTES +^^^^^^^^^^^^^^^^^^^^^^^^ + +Get the set of entity types and the annotations they implement + +**Request properties:** + +*entityType* (string) + If set, restrict query results to entities that extend (directly or indirectly) this type + +*identity* (string) + Set to the value `self` + +**Response body** (map)A map where each key is an entity type name (string) and the corresponding value is a list (of strings) of attributes on that entity type. + + +Operation GET-OPERATIONS +^^^^^^^^^^^^^^^^^^^^^^^^ + +Get the set of entity types and the operations they support + +**Request properties:** + +*entityType* (string) + If set, restrict query results to entities that extend (directly or indirectly) this type + +*identity* (string) + Set to the value `self` + +**Response body** (map)A map where each key is an entity type name (string) and the corresponding value is the list of operation names (strings) that it supports. + + +Operation GET-ANNOTATIONS +^^^^^^^^^^^^^^^^^^^^^^^^^ + +**Request properties:** + +*entityType* (string) + If set, restrict query results to entities that extend (directly or indirectly) this type + +*identity* (string) + Set to the value `self` + +**Response body** (map)A map where each key is an entity type name (string) and the corresponding value is the list of annotations (strings) that it implements. + + +Operation QUERY +^^^^^^^^^^^^^^^ + +Query for attribute values of multiple entities. + +**Request body** (map)A map containing the key `attributeNames` with value a list of (string) attribute names to return. If the list or the map is empty or the body is missing all attributes are returned. + +**Request properties:** + +*count* (integer) + If set, specifies the number of entries from the result set to return. If not set return all from `offset` + +*entityType* (string) + If set, restrict query results to entities that extend (directly or indirectly) this type + +*identity* (string) + Set to the value `self` + +*offset* (integer) + If set, specifies the number of the first element of the result set to be returned. + +**Response body** (map)A map with two entries. `attributeNames` is a list of the attribute names returned. `results` is a list of lists each containing the attribute values for a single entity in the same order as the names in the `attributeNames` entry. If an attribute name is not applicable for an entity then the corresponding value is `null` + +**Response properties:** + +*count* (integer) + Number of results returned + +*identity* (string) + Set to the value `self` + + +Operation GET-MGMT-NODES +^^^^^^^^^^^^^^^^^^^^^^^^ + +Get the addresses of all management nodes known to this router + +**Request properties:** + +*identity* (string) + Set to the value `self` + +**Response body** (list)A list of addresses (strings) of management nodes known to this management node. + + +Operations for `management` entity type ++++++++++++++++++++++++++++++++++++++++ + + +Operation GET-SCHEMA-JSON +^^^^^^^^^^^^^^^^^^^^^^^^^ + +Get the qdrouterd schema for this router in JSON format + +**Request properties:** + +*indent* (integer) + Number of spaces to indent the formatted result. If not specified, the result is in minimal format, no unnecessary spaces or newlines. + +*identity* (string) + Set to the value `self` + +**Response body** (string)The qdrouter schema as a JSON string. + + +Operation GET-SCHEMA +^^^^^^^^^^^^^^^^^^^^ + +Get the qdrouterd schema for this router in AMQP map format + +**Request properties:** + +*identity* (string) + Set to the value `self` + +**Response body** (map)The qdrouter schema as a map. + --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org For additional commands, e-mail: commits-help@qpid.apache.org