Modified: qpid/site/docs/releases/qpid-proton-master/proton/python/examples/tx_recv_interactive.py.html URL: http://svn.apache.org/viewvc/qpid/site/docs/releases/qpid-proton-master/proton/python/examples/tx_recv_interactive.py.html?rev=1705923&r1=1705922&r2=1705923&view=diff ============================================================================== --- qpid/site/docs/releases/qpid-proton-master/proton/python/examples/tx_recv_interactive.py.html (original) +++ qpid/site/docs/releases/qpid-proton-master/proton/python/examples/tx_recv_interactive.py.html Tue Sep 29 20:27:56 2015 @@ -31,65 +31,65 @@ <!--[if lte IE 8]> <link rel="stylesheet" href="/ie.css" type="text/css"/> <script type="text/javascript" src="/html5shiv.js"></script> - <![endif]--> - + <![endif]--> </head> <body> <div id="-content"> <div id="-top" class="panel"> - <a id="-menu-link"><img width="16" height="16" src="data:image/png;base64," alt="Menu"/></a> + <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a> - <a id="-search-link"><img width="22" height="16" src="data:image/png;base64," alt="Search"/></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="/download.html">Download</a></li> <li><a href="/documentation.html">Documentation</a></li> - <li><a href="/components/index.html">Components</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;"> - <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/java-broker/index.html">Java broker</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 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/java-broker/index.html">Java broker</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;"> @@ -97,13 +97,15 @@ <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> - <p><a href="/search.html">More ways to search</a></p> + <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-proton-master/index.html">Qpid Proton Development</a></li><li><a href="/releases/qpid-proton-master/proton/python/examples/index.html">Python AMQP Examples</a></li><li>tx_recv_interactive.py</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-proton-master/index.html">Qpid Proton Master</a></li><li><a href="/releases/qpid-proton-master/proton/python/examples/index.html">Python AMQP Examples</a></li><li>tx_recv_interactive.py</li></ul> + + <div id="-middle-content"> + <h1>tx_recv_interactive.py</h1> <div class="highlight"><pre><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span> <span class="kn">import</span> <span class="nn">sys</span> @@ -172,27 +174,28 @@ <p><a href="tx_recv_interactive.py">Download this file</a></p> - <hr/> + <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="http://www.apache.org/security/">Security</a></li> - <li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="data:image/png;base64," alt="Apache"/></a></li> - </ul> + <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="http://www.apache.org/security/">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 © 2013 - 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> + <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>
Modified: qpid/site/docs/releases/qpid-proton-master/proton/python/examples/tx_send.py.html URL: http://svn.apache.org/viewvc/qpid/site/docs/releases/qpid-proton-master/proton/python/examples/tx_send.py.html?rev=1705923&r1=1705922&r2=1705923&view=diff ============================================================================== --- qpid/site/docs/releases/qpid-proton-master/proton/python/examples/tx_send.py.html (original) +++ qpid/site/docs/releases/qpid-proton-master/proton/python/examples/tx_send.py.html Tue Sep 29 20:27:56 2015 @@ -31,65 +31,65 @@ <!--[if lte IE 8]> <link rel="stylesheet" href="/ie.css" type="text/css"/> <script type="text/javascript" src="/html5shiv.js"></script> - <![endif]--> - + <![endif]--> </head> <body> <div id="-content"> <div id="-top" class="panel"> - <a id="-menu-link"><img width="16" height="16" src="data:image/png;base64," alt="Menu"/></a> + <a id="-menu-link"><img width="16" height="16" src="" alt="Menu"/></a> - <a id="-search-link"><img width="22" height="16" src="data:image/png;base64," alt="Search"/></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="/download.html">Download</a></li> <li><a href="/documentation.html">Documentation</a></li> - <li><a href="/components/index.html">Components</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;"> - <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/java-broker/index.html">Java broker</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 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/java-broker/index.html">Java broker</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;"> @@ -97,13 +97,15 @@ <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> - <p><a href="/search.html">More ways to search</a></p> + <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-proton-master/index.html">Qpid Proton Development</a></li><li><a href="/releases/qpid-proton-master/proton/python/examples/index.html">Python AMQP Examples</a></li><li>tx_send.py</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-proton-master/index.html">Qpid Proton Master</a></li><li><a href="/releases/qpid-proton-master/proton/python/examples/index.html">Python AMQP Examples</a></li><li>tx_send.py</li></ul> + + <div id="-middle-content"> + <h1>tx_send.py</h1> <div class="highlight"><pre><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">print_function</span><span class="p">,</span> <span class="n">unicode_literals</span> <span class="kn">import</span> <span class="nn">optparse</span> @@ -179,27 +181,28 @@ <p><a href="tx_send.py">Download this file</a></p> - <hr/> + <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="http://www.apache.org/security/">Security</a></li> - <li><a href="http://www.apache.org/"><img id="-apache-feather" width="48" height="14" src="data:image/png;base64," alt="Apache"/></a></li> - </ul> + <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="http://www.apache.org/security/">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 © 2013 - 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> + <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> Modified: qpid/site/docs/releases/qpid-proton-master/release-notes.html URL: http://svn.apache.org/viewvc/qpid/site/docs/releases/qpid-proton-master/release-notes.html?rev=1705923&r1=1705922&r2=1705923&view=diff ============================================================================== --- qpid/site/docs/releases/qpid-proton-master/release-notes.html (original) +++ qpid/site/docs/releases/qpid-proton-master/release-notes.html Tue Sep 29 20:27:56 2015 @@ -102,7 +102,7 @@ </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-proton-master/index.html">Qpid Proton Development</a></li><li>Qpid Proton master Release Notes</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-proton-master/index.html">Qpid Proton Master</a></li><li>Qpid Proton master Release Notes</li></ul> <div id="-middle-content"> <h1 id="qpid-proton-master-release-notes">Qpid Proton master Release Notes</h1> Modified: qpid/site/input/proton/amqp/index.md URL: http://svn.apache.org/viewvc/qpid/site/input/proton/amqp/index.md?rev=1705923&r1=1705922&r2=1705923&view=diff ============================================================================== --- qpid/site/input/proton/amqp/index.md (original) +++ qpid/site/input/proton/amqp/index.md Tue Sep 29 20:27:56 2015 @@ -1 +1 @@ -link /home/aconway/svn/qpid-site/input/proton/stub.md \ No newline at end of file +link ../stub.md \ No newline at end of file Modified: qpid/site/input/proton/concurrent/index.md URL: http://svn.apache.org/viewvc/qpid/site/input/proton/concurrent/index.md?rev=1705923&r1=1705922&r2=1705923&view=diff ============================================================================== --- qpid/site/input/proton/concurrent/index.md (original) +++ qpid/site/input/proton/concurrent/index.md Tue Sep 29 20:27:56 2015 @@ -1 +1 @@ -link /home/aconway/svn/qpid-site/input/proton/stub.md \ No newline at end of file +link ../stub.md \ No newline at end of file Modified: qpid/site/input/releases/index.md URL: http://svn.apache.org/viewvc/qpid/site/input/releases/index.md?rev=1705923&r1=1705922&r2=1705923&view=diff ============================================================================== --- qpid/site/input/releases/index.md (original) +++ qpid/site/input/releases/index.md Tue Sep 29 20:27:56 2015 @@ -72,7 +72,9 @@ Still older releases are available in th Warning! These are snapshots of work in progress. - [Qpid C++ trunk](qpid-cpp-trunk/index.html) + - [Qpid Dispatch master](qpid-dispatch-master/index.html) - [Qpid Java trunk](qpid-java-trunk/index.html) + - [Qpid JMS master](qpid-jms-master/index.html) - [Qpid Proton master](qpid-proton-master/index.html) ## More information Modified: qpid/site/input/releases/qpid-dispatch-master/index.md URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-dispatch-master/index.md?rev=1705923&r1=1705922&r2=1705923&view=diff ============================================================================== --- qpid/site/input/releases/qpid-dispatch-master/index.md (original) +++ qpid/site/input/releases/qpid-dispatch-master/index.md Tue Sep 29 20:27:56 2015 @@ -17,7 +17,7 @@ ;; under the License. ;; -# Qpid Dispatch Development +# Qpid Dispatch Master <div class="feature" markdown="1"> @@ -27,7 +27,7 @@ Code and documentation found here may be incomplete. For a smoother experience, see the [current stable release]({{current_dispatch_release_url}}/index.html). -This content was generated at 12:16 on Tuesday, 29 September 2015. +This content was generated at 16:25 on Tuesday, 29 September 2015. </div> @@ -36,7 +36,7 @@ This content was generated at 12:16 on <div class="two-column" markdown="1"> - - [Installing Qpid Dispatch](https://git-wip-us.apache.org/repos/asf?p=qpid-dispatch.git;a=blob_plain;f=README;hb={release}) + - [Installing Qpid Dispatch](https://git-wip-us.apache.org/repos/asf?p=qpid-dispatch.git;a=blob_plain;f=README;hb=master) - [Dispatch router book](book/book.html) - [qdrouterd](man/qdrouterd.html) - Router daemon - [qdrouterd.conf](man/qdrouterd.conf.html) - Daemon configuration @@ -48,4 +48,4 @@ This content was generated at 12:16 on ## More information -- [Source repository](https://git-wip-us.apache.org/repos/asf/qpid-dispatch.git) \ No newline at end of file + - [Source repository](https://git-wip-us.apache.org/repos/asf/qpid-dispatch.git) \ No newline at end of file Added: qpid/site/input/releases/qpid-jms-master/building.md URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-jms-master/building.md?rev=1705923&view=auto ============================================================================== --- qpid/site/input/releases/qpid-jms-master/building.md (added) +++ qpid/site/input/releases/qpid-jms-master/building.md Tue Sep 29 20:27:56 2015 @@ -0,0 +1,43 @@ +# QpidJMS + +The QpidJMS project provides a JMS based client that uses the AMQP v1.0 protocol. + +Below are some quick pointers you might find useful. + +## Building the code + +The project requires Maven 3. Some example commands follow. + +Clean previous builds output and install all modules to local repository without +running the tests: + + mvn clean install -DskipTests + +Install all modules to the local repository after running all the tests: + + mvn clean install + +Perform a subset tests on the packaged release artifacts without +installing: + + mvn clean verify -Dtest=TestNamePattern* + +Execute the tests and produce code coverage report: + + mvn clean test jacoco:report + +## Examples + +First build and install all the modules as detailed above (if running against +a source checkout/release, rather than against released binaries) and then +consult the README in the qpid-jms-examples module itself. + +## Documentation + +There is some basic documentation in the qpid-jms-docs module. + +## Distribution assemblies + +After building the modules, src and binary distribution assemblies can be found at: + + apache-qpid-jms/target Added: qpid/site/input/releases/qpid-jms-master/docs/index.md URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-jms-master/docs/index.md?rev=1705923&view=auto ============================================================================== --- qpid/site/input/releases/qpid-jms-master/docs/index.md (added) +++ qpid/site/input/releases/qpid-jms-master/docs/index.md Tue Sep 29 20:27:56 2015 @@ -0,0 +1,221 @@ +# Client configuration + +This file details various configuration options for the client, such as how to configure and create a JNDI InitialContext, the syntax for its related configuration, and various URI options that can be set when defining a ConnectionFactory. + +## Configuring a JNDI InitialContext + +Applications use a JNDI InitialContext, itself obtained from an InitialContextFactory, to look up JMS objects such as ConnectionFactory. The Qpid JMS client provides an implementation of the InitialContextFactory in class *org.apache.qpid.jms.jndi.JmsInitialContextFactory*. This may be configured and used in three main ways: + +1. Via jndi.properties file on the Java Classpath. + + By including a file named jndi.properties on the Classpath and setting the *java.naming.factory.initial* property + to value *org.apache.qpid.jms.jndi.JmsInitialContextFactory*, the Qpid InitialContextFactory implementation will + be discovered when instantiating InitialContext object. + + javax.naming.Context ctx = new javax.naming.InitialContext(); + + The particular ConnectionFactory, Queue and Topic objects you wish the context to contain are configured using + properties (the syntax for which is detailed below) either directly within the jndi.properties file, + or in a separate file which is referenced in jndi.properties using the *java.naming.provider.url* property. + +2. Via system properties. + + By setting the *java.naming.factory.initial* system property to value *org.apache.qpid.jms.jndi.JmsInitialContextFactory*, + the Qpid InitialContextFactory implementation will be discovered when instantiating InitialContext object. + + javax.naming.Context ctx = new javax.naming.InitialContext(); + + The particular ConnectionFactory, Queue and Topic objects you wish the context to contain are configured as properties in + a file, which is passed using the *java.naming.provider.url* system property. The syntax for these properties is detailed + below. + +3. Programmatically using an environment Hashtable. + + The InitialContext may also be configured directly by passing an environment during creation: + + Hashtable<Object, Object> env = new Hashtable<Object, Object>(); + env.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.qpid.jms.jndi.JmsInitialContextFactory"); + javax.naming.Context context = new javax.naming.InitialContext(env); + + The particular ConnectionFactory, Queue and Topic objects you wish the context to contain are configured as properties + (the syntax for which is detailed below), either directly within the environment Hashtable, or in a + separate file which is referenced using the *java.naming.provider.url* property within the environment Hashtable. + +The property syntax used in the properties file or environment Hashtable is as follows: + ++ To define a ConnectionFactory, use format: *connectionfactory.lookupName = URI* ++ To define a Queue, use format: *queue.lookupName = queueName* ++ To define a Topic use format: *topic.lookupName = topicName* + +For more details of the Connection URI, see the next section. + +As an example, consider the following properties used to define a ConnectionFactory, Queue, and Topic: + + connectionfactory.myFactoryLookup = amqp://localhost:5672 + queue.myQueueLookup = queueA + topic.myTopicLookup = topicA + +These objects could then be looked up from a Context as follows: + + ConnectionFactory factory = (ConnectionFactory) context.lookup("myFactoryLookup"); + Queue queue = (Queue) context.lookup("myQueueLookup"); + Topic topic = (Topic) context.lookup("myTopicLookup"); + +## Connection URI + +The basic format of the clients Connection URI is as follows: + + amqp://hostname:port[?option=value[&option2=value...]] + +The client can be configured with a number of different settings using the URI while defining the ConnectionFactory, these are detailed in the following sections. + +### JMS Configuration options + +The options apply to the behaviour of the JMS objects such as Connection, Session, MessageConsumer and MessageProducer. + ++ **jms.username** User name value used to authenticate the connection ++ **jms.password** The password value used to authenticate the connection ++ **jms.clientID** The ClientID value that is applied to the connection. ++ **jms.forceAsyncSend** Configures whether all Messages sent from a MessageProducer are sent asynchronously or only those Message that qualify such as Messages inside a transaction or non-persistent messages. ++ **jms.alwaysSyncSend** Override all asynchronous send conditions and always sends every Message from a MessageProducer synchronously. ++ **jms.sendAcksAsync** Causes all Message acknowledgments to be sent asynchronously. ++ **jms.localMessageExpiry** Controls whether MessageConsumer instances will locally filter expired Messages or deliver them. By default this value is set to true and expired messages will be filtered. ++ **jms.localMessagePriority** If enabled prefetched messages are reordered locally based on their given Message priority value. Default is false. ++ **jms.validatePropertyNames** If message property names should be validated as valid Java identifiers. Default is true. ++ **jms.queuePrefix** Optional prefix value added to the name of any Queue created from a JMS Session. ++ **jms.topicPrefix** Optional prefix value added to the name of any Topic created from a JMS Session. ++ **jms.closeTimeout** Timeout value that controls how long the client waits on Connection close before returning. (By default the client waits 15 seconds for a normal close completion event). ++ **jms.connectTimeout** Timeout value that controls how long the client waits on Connection establishment before returning with an error. (By default the client waits 15 seconds for a connection to be established before failing). ++ **jms.clientIDPrefix** Optional prefix value that is used for generated Client ID values when a new Connection is created for the JMS ConnectionFactory. The default prefix is 'ID:'. ++ **jms.connectionIDPrefix** Optional prefix value that is used for generated Connection ID values when a new Connection is created for the JMS ConnectionFactory. This connection ID is used when logging some information from the JMS Connection object so a configurable prefix can make breadcrumbing the logs easier. The default prefix is 'ID:'. + +These values control how many messages the remote peer can send to the client and be held in a prefetch buffer for each consumer instance. + ++ **jms.prefetchPolicy.queuePrefetch** defaults to 1000 ++ **jms.prefetchPolicy.topicPrefetch** defaults to 1000 ++ **jms.prefetchPolicy.queueBrowserPrefetch** defaults to 1000 ++ **jms.prefetchPolicy.durableTopicPrefetch** defaults to 1000 ++ **jms.prefetchPolicy.all** used to set all prefetch values at once. + +The RedeliveryPolicy controls how redelivered messages are handled on the client. + ++ **jms.redeliveryPolicy.maxRedeliveries** controls when an incoming message is rejected based on the number of times it has been redelivered, the default value is (-1) disabled. A value of zero would indicate no message redeliveries are accepted, a value of five would allow a message to be redelivered five times, etc. + +### TCP Transport Configuration options + +When connected to a remote using plain TCP these options configure the behaviour of the underlying socket. These options are appended to the connection URI along with the other configuration options, for example: + + amqp://localhost:5672?jms.clientID=foo&transport.connectTimeout=30000 + +The complete set of TCP Transport options is listed below: + ++ **transport.sendBufferSize** default is 64k ++ **transport.receiveBufferSize** default is 64k ++ **transport.trafficClass** default is 0 ++ **transport.connectTimeout** default is 60 seconds ++ **transport.soTimeout** default is -1 ++ **transport.soLinger** default is -1 ++ **transport.tcpKeepAlive** default is false ++ **transport.tcpNoDelay** default is true + +### SSL Transport Configuration options + +The SSL Transport extends the TCP Transport and is enabled using the *amqps* URI scheme. Because the SSL Transport extends the functionality of the TCP based Transport all the TCP Transport options are valid on an SSL Transport URI. + +A simple SSL based client URI is shown below: + + amqps://localhost:5673 + +The complete set of SSL Transport options is listed below: + ++ **transport.keyStoreLocation** default is to read from the system property "javax.net.ssl.keyStore" ++ **transport.keyStorePassword** default is to read from the system property "javax.net.ssl.keyStorePassword" ++ **transport.trustStoreLocation** default is to read from the system property "javax.net.ssl.trustStore" ++ **transport.trustStorePassword** default is to read from the system property "javax.net.ssl.keyStorePassword" ++ **transport.storeType** The type of trust store being used. Default is "JKS". ++ **transport.contextProtocol** The protocol argument used when getting an SSLContext. Default is "TLS". ++ **transport.enabledCipherSuites** The cipher suites to enable, comma separated. No default, meaning the context default ciphers are used. Any disabled ciphers are removed from this. ++ **transport.disabledCipherSuites** The cipher suites to disable, comma separated. Ciphers listed here are removed from the enabled ciphers. No default. ++ **transport.enabledProtocols** The protocols to enable, comma separated. No default, meaning the context default protocols are used. Any disabled protocols are removed from this. ++ **transport.disabledProtocols** The protocols to disable, comma separated. Protocols listed here are removed from the enabled protocols. Default is "SSLv2Hello,SSLv3". ++ **transport.trustAll** Whether to trust the provided server certificate implicitly, regardless of any configured trust store. Defaults to false. ++ **transport.verifyHost** Whether to verify that the hostname being connected to matches with the provided server certificate. Defaults to true. ++ **transport.keyAlias** The alias to use when selecting a keypair from the keystore if required to send a client certificate to the server. No default. + +### AMQP Configuration options + +These options apply to the behaviour of certain AMQP functionality. + ++ **amqp.idleTimeout** The idle timeout in milliseconds after which the connection will be failed if the peer sends no AMQP frames. Default is 60000. ++ **amqp.vhost** The vhost to connect to. Used to populate the Sasl and Open hostname fields. Default is the main hostname from the Connection URI. ++ **amqp.saslLayer** Controls whether connections should use a SASL layer or not. Default is true. ++ **amqp.saslMechanisms** Which SASL mechanism(s) the client should allow selection of, if offered by the server and usable with the configured credentials. Comma separated if specifying more than 1 mechanism. Default is to allow selection from all the clients supported mechanisms, which are currently EXTERNAL, CRAM-MD5, PLAIN, and ANONYMOUS. ++ **amqp.maxFrameSize** The max-frame-size value in bytes that is advertised to the peer. Default is 1048576. + +### Failover Configuration options + +With failover enabled the client can reconnect to a different broker automatically when the connection to the current connection is lost for some reason. The failover URI is always initiated with the *failover* prefix and a list of URIs for the brokers is contained inside a set of parentheses. The "jms." options are applied to the overall failover URI, outside the parentheses, and affect the JMS Connection object for its lifetime. + +The URI for failover looks something like the following: + + failover:(amqp://host1:5672,amqp://host2:5672)?jms.clientID=foo&failover.maxReconnectAttempts=20 + +The individual broker details within the parentheses can use the "transport." or "amqp." options defined earlier, with these being applied as each host is connected to: + + failover:(amqp://host1:5672?amqp.option=value,amqp://host2:5672?transport.option=value)?jms.clientID=foo + +The complete set of configuration options for failover is listed below: + ++ **failover.initialReconnectDelay** The amount of time the client will wait before the first attempt to reconnect to a remote peer. The default value is zero, meaning the first attempt happens immediately. ++ **failover.reconnectDelay** Controls the delay between successive reconnection attempts, defaults to 10 milliseconds. If the backoff option is not enabled this value remains constant. ++ **failover.maxReconnectDelay** The maximum time that the client will wait before attempting a reconnect. This value is only used when the backoff feature is enabled to ensure that the delay doesn't not grow too large. Defaults to 30 seconds as the max time between connect attempts. ++ **failover.useReconnectBackOff** Controls whether the time between reconnection attempts should grow based on a configured multiplier. This option defaults to true. ++ **failover.reconnectBackOffMultiplier** The multiplier used to grow the reconnection delay value, defaults to 2.0d. ++ **failover.maxReconnectAttempts** The number of reconnection attempts allowed before reporting the connection as failed to the client. The default is no limit or (-1). ++ **failover.startupMaxReconnectAttempts** For a client that has never connected to a remote peer before this option control how many attempts are made to connect before reporting the connection as failed. The default is to use the value of maxReconnectAttempts. ++ **failover.warnAfterReconnectAttempts** Controls how often the client will log a message indicating that failover reconnection is being attempted. The default is to log every 10 connection attempts. + +The failover URI also supports defining 'nested' options as a means of specifying AMQP and transport option values applicable to all the individual nested broker URI's, which can be useful to avoid repetition. This is accomplished using the same "transport." and "amqp." URI options outlined earlier for a non-failover broker URI but prefixed with *failover.nested.*. For example, to apply the same value for the *amqp.vhost* option to every broker connected to you might have a URI like: + + failover:(amqp://host1:5672,amqp://host2:5672)?jms.clientID=foo&failover.nested.amqp.vhost=myhost + + + +### Discovery Configuration options + +The client has an optional Discovery module, which provides a customised failover layer where the broker URIs to connect to are not given in the initial URI, but discovered as the client operates via associated discovery agents. There are currently two discovery agent implementations, a file watcher that loads URIs from a file, and a multicast listener that works with ActiveMQ 5 brokers which have been configured to broadcast their broker addresses for listening clients. + +The general set of failover related options when using discovery are the same as those detailed earlier, with the main prefix updated from *failover.* to *discovery.*, and with the 'nested' options prefix used to supply URI options common to all the discovered broker URIs bring updated from *failover.nested.* to *discovery.discovered*. For example, without the agent URI details, a general discovery URI might look like: + + discovery:(<agent-uri>)?discovery.maxReconnectAttempts=20&discovery.discovered.jms.clientID=foo + +To use the file watcher discovery agent, utilise an agent URI of the form: + + discovery:(file:///path/to/monitored-file?updateInterval=60000) + +The URI options for the file watcher discovery agent are listed below: + ++ **updateInterval** Controls the frequency in milliseconds which the file is inspected for change. The default value is 30000. + + +To use the multicast discovery agent with an ActiveMQ 5 broker, utilise an agent URI of the form: + + discovery:(multicast://default?group=default) + +Note that the use of *default* as the host in the multicast agent URI above is a special value (that is substituted by the agent with the default "239.255.2.3:6155"). You may change this to specify the actual IP and port in use with your multicast configuration. + +The URI options for the multicast discovery agent are listed below: + ++ **group** Controls which multicast group messages are listened for on. The default value is "default". + + +## Logging + +The client makes use of the SLF4J API, allowing users to select a particular logging implementation based on their needs by supplying a SLF4J 'binding', such as *slf4j-log4j* in order to use Log4J. More details on SLF4J are available from http://www.slf4j.org/. + +The client uses Logger names residing within the *org.apache.qpid.jms* hierarchy, which you can use to configure a logging implementation based on your needs. + +When debugging some issues, it may sometimes be useful to enable additional protocol trace logging from the Qpid Proton AMQP 1.0 library. There are two options to achieve this: + ++ Set the environment variable (not Java system property) *PN_TRACE_FRM* to *true*, which will cause Proton to emit frame logging to stdout. ++ Add the option *amqp.traceFrames=true* to your connection URI to have the client add a protocol tracer to Proton, and configure the *org.apache.qpid.jms.provider.amqp.FRAMES* Logger to *TRACE* level to include the output in your logs. Added: qpid/site/input/releases/qpid-jms-master/index.md URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-jms-master/index.md?rev=1705923&view=auto ============================================================================== --- qpid/site/input/releases/qpid-jms-master/index.md (added) +++ qpid/site/input/releases/qpid-jms-master/index.md Tue Sep 29 20:27:56 2015 @@ -0,0 +1,49 @@ +;; +;; 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. +;; + +# Qpid JMS Master + +<div class="feature" markdown="1"> + +## Warning! This is a snapshot of work in progress + +Code and documentation found here may be unstable, incorrect, or +incomplete. For a smoother experience, see the +[current stable release]({{current_jms_release_url}}/index.html). + +This content was generated at 13:50 on Tuesday, 29 September 2015. + +</div> + +## Documentation + + +<div class="two-column" markdown="1"> + + - [API reference](http://docs.oracle.com/javaee/1.4/api/javax/jms/package-summary.html) + - [Examples](https://github.com/apache/qpid-jms/tree/master/qpid-jms-examples) + - [Configuration](docs/index.html) + - [Building Qpid JMS](building.html) + +</div> + + +## More information + + - [Source repository](https://git-wip-us.apache.org/repos/asf/qpid-jms.git) \ No newline at end of file Added: qpid/site/input/releases/qpid-jms-master/release-notes.md URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-jms-master/release-notes.md?rev=1705923&view=auto ============================================================================== --- qpid/site/input/releases/qpid-jms-master/release-notes.md (added) +++ qpid/site/input/releases/qpid-jms-master/release-notes.md Tue Sep 29 20:27:56 2015 @@ -0,0 +1,29 @@ +;; +;; 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. +;; + +# Qpid JMS master Release Notes + +Qpid JMS is a complete [Java Message Service][jms] 1.1 client built +using the [Qpid Proton]({{site_url}}/proton/index.html) protocol +engine. + +For more information about this release, including download links and +documentation, see the [release overview](index.html). + +[jms]: http://en.wikipedia.org/wiki/Java_Message_Service \ No newline at end of file Modified: qpid/site/input/releases/qpid-proton-master/index.md URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/index.md?rev=1705923&r1=1705922&r2=1705923&view=diff ============================================================================== --- qpid/site/input/releases/qpid-proton-master/index.md (original) +++ qpid/site/input/releases/qpid-proton-master/index.md Tue Sep 29 20:27:56 2015 @@ -17,32 +17,37 @@ ;; under the License. ;; -# Qpid Proton Development +# Qpid Proton Master <div class="feature" markdown="1"> ## Warning! This is a snapshot of work in progress Code and documentation found here may be unstable, incorrect, or -incomplete. For a smoother experience, see the -[current stable release]({{current_proton_release_url}}/index.html). +incomplete. For a smoother experience, see the [current stable +release]({{current_proton_release_url}}/index.html). -This content was generated at 15:55 on Friday, 04 September 2015. +This content was generated at 16:07 on Tuesday, 29 September 2015. </div> ## Documentation + <div class="two-column" markdown="1"> - [C API reference](proton/c/api/files.html) - [C++ API reference](proton/cpp/api/index.html) - [Java API reference](proton/java/api/index.html) - [Python API reference](proton/python/api/index.html) - - [Installing Qpid Proton](https://git-wip-us.apache.org/repos/asf?p=qpid-proton.git;a=blob_plain;f=README;hb=HEAD) + - [Python tutorial](proton/python/book/tutorial.html) + - [Python examples](proton/python/examples/index.html) + - [Go binding](https://github.com/apache/qpid-proton/tree/master/proton-c/bindings/go/README.md) + - [Installing Qpid Proton](https://git-wip-us.apache.org/repos/asf?p=qpid-proton.git;a=blob;f=INSTALL.md;hb=master) </div> + ## More information - [Source repository](https://git-wip-us.apache.org/repos/asf/qpid-proton.git?a=tree) \ No newline at end of file Added: qpid/site/input/releases/qpid-proton-master/proton/java/api/org/apache/qpid/proton/engine/ExtendableAccessor.html URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/java/api/org/apache/qpid/proton/engine/ExtendableAccessor.html?rev=1705923&view=auto ============================================================================== --- qpid/site/input/releases/qpid-proton-master/proton/java/api/org/apache/qpid/proton/engine/ExtendableAccessor.html (added) +++ qpid/site/input/releases/qpid-proton-master/proton/java/api/org/apache/qpid/proton/engine/ExtendableAccessor.html Tue Sep 29 20:27:56 2015 @@ -0,0 +1,308 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<!-- NewPage --> +<html lang="en"> +<head> +<!-- Generated by javadoc --> +<title>ExtendableAccessor (Java AMQP Protocol Engine API)</title> +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style"> +<script type="text/javascript" src="../../../../../script.js"></script> +</head> +<body> +<script type="text/javascript"><!-- + try { + if (location.href.indexOf('is-external=true') == -1) { + parent.document.title="ExtendableAccessor (Java AMQP Protocol Engine API)"; + } + } + catch(err) { + } +//--> +var methods = {"i0":10,"i1":10}; +var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]}; +var altColor = "altColor"; +var rowColor = "rowColor"; +var tableTab = "tableTab"; +var activeTableTab = "activeTableTab"; +</script> +<noscript> +<div>JavaScript is disabled on your browser.</div> +</noscript> +<!-- ========= START OF TOP NAVBAR ======= --> +<div class="topNav"><a name="navbar.top"> +<!-- --> +</a> +<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div> +<a name="navbar.top.firstrow"> +<!-- --> +</a> +<ul class="navList" title="Navigation"> +<li><a href="../../../../../overview-summary.html">Overview</a></li> +<li><a href="package-summary.html">Package</a></li> +<li class="navBarCell1Rev">Class</li> +<li><a href="package-tree.html">Tree</a></li> +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li> +<li><a href="../../../../../index-all.html">Index</a></li> +<li><a href="../../../../../help-doc.html">Help</a></li> +</ul> +</div> +<div class="subNav"> +<ul class="navList"> +<li><a href="../../../../../org/apache/qpid/proton/engine/Extendable.html" title="interface in org.apache.qpid.proton.engine"><span class="typeNameLink">Prev Class</span></a></li> +<li><a href="../../../../../org/apache/qpid/proton/engine/Handler.html" title="interface in org.apache.qpid.proton.engine"><span class="typeNameLink">Next Class</span></a></li> +</ul> +<ul class="navList"> +<li><a href="../../../../../index.html?org/apache/qpid/proton/engine/ExtendableAccessor.html" target="_top">Frames</a></li> +<li><a href="ExtendableAccessor.html" target="_top">No Frames</a></li> +</ul> +<ul class="navList" id="allclasses_navbar_top"> +<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li> +</ul> +<div> +<script type="text/javascript"><!-- + allClassesLink = document.getElementById("allclasses_navbar_top"); + if(window==top) { + allClassesLink.style.display = "block"; + } + else { + allClassesLink.style.display = "none"; + } + //--> +</script> +</div> +<div> +<ul class="subNavList"> +<li>Summary: </li> +<li>Nested | </li> +<li>Field | </li> +<li><a href="#constructor.summary">Constr</a> | </li> +<li><a href="#method.summary">Method</a></li> +</ul> +<ul class="subNavList"> +<li>Detail: </li> +<li>Field | </li> +<li><a href="#constructor.detail">Constr</a> | </li> +<li><a href="#method.detail">Method</a></li> +</ul> +</div> +<a name="skip.navbar.top"> +<!-- --> +</a></div> +<!-- ========= END OF TOP NAVBAR ========= --> +<!-- ======== START OF CLASS DATA ======== --> +<div class="header"> +<div class="subTitle">org.apache.qpid.proton.engine</div> +<h2 title="Class ExtendableAccessor" class="title">Class ExtendableAccessor<E extends <a href="../../../../../org/apache/qpid/proton/engine/Extendable.html" title="interface in org.apache.qpid.proton.engine">Extendable</a>,T></h2> +</div> +<div class="contentContainer"> +<ul class="inheritance"> +<li>java.lang.Object</li> +<li> +<ul class="inheritance"> +<li>org.apache.qpid.proton.engine.ExtendableAccessor<E,T></li> +</ul> +</li> +</ul> +<div class="description"> +<ul class="blockList"> +<li class="blockList"> +<dl> +<dt><span class="paramLabel">Type Parameters:</span></dt> +<dd><code>E</code> - An <a href="../../../../../org/apache/qpid/proton/engine/Extendable.html" title="interface in org.apache.qpid.proton.engine"><code>Extendable</code></a> type where the data is to be stored</dd> +<dd><code>T</code> - The type of the data to be stored</dd> +</dl> +<hr> +<br> +<pre>public final class <span class="typeNameLabel">ExtendableAccessor<E extends <a href="../../../../../org/apache/qpid/proton/engine/Extendable.html" title="interface in org.apache.qpid.proton.engine">Extendable</a>,T></span> +extends java.lang.Object</pre> +<div class="block">A typesafe convenience class for associating additional data with <a href="../../../../../org/apache/qpid/proton/engine/Extendable.html" title="interface in org.apache.qpid.proton.engine"><code>Extendable</code></a> classes. + <p> + An instance of <code>ExtendableAccessor</code> uses itself as the key in the <a href="../../../../../org/apache/qpid/proton/engine/Extendable.html#attachments--"><code>Extendable.attachments()</code></a> + so it's best instantiated as a static final member. + <pre><code> + class Foo extends BaseHandler { + private static ExtendableAccessor<Link, Bar> LINK_BAR = new ExtendableAccessor<>(Bar.class); + void onLinkRemoteOpen(Event e) { + Bar bar = LINK_BAR.get(e.getLink()); + if (bar == null) { + bar = new Bar(); + LINK_BAR.set(e.getLink(), bar); + } + } + } + </code></pre></div> +</li> +</ul> +</div> +<div class="summary"> +<ul class="blockList"> +<li class="blockList"> +<!-- ======== CONSTRUCTOR SUMMARY ======== --> +<ul class="blockList"> +<li class="blockList"><a name="constructor.summary"> +<!-- --> +</a> +<h3>Constructor Summary</h3> +<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation"> +<caption><span>Constructors</span><span class="tabEnd"> </span></caption> +<tr> +<th class="colOne" scope="col">Constructor and Description</th> +</tr> +<tr class="altColor"> +<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/qpid/proton/engine/ExtendableAccessor.html#ExtendableAccessor-java.lang.Class-">ExtendableAccessor</a></span>(java.lang.Class<<a href="../../../../../org/apache/qpid/proton/engine/ExtendableAccessor.html" title="type parameter in ExtendableAccessor">T</a>> klass)</code> </td> +</tr> +</table> +</li> +</ul> +<!-- ========== METHOD SUMMARY =========== --> +<ul class="blockList"> +<li class="blockList"><a name="method.summary"> +<!-- --> +</a> +<h3>Method Summary</h3> +<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation"> +<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </span></span></caption> +<tr> +<th class="colFirst" scope="col">Modifier and Type</th> +<th class="colLast" scope="col">Method and Description</th> +</tr> +<tr id="i0" class="altColor"> +<td class="colFirst"><code><a href="../../../../../org/apache/qpid/proton/engine/ExtendableAccessor.html" title="type parameter in ExtendableAccessor">T</a></code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/qpid/proton/engine/ExtendableAccessor.html#get-E-">get</a></span>(<a href="../../../../../org/apache/qpid/proton/engine/ExtendableAccessor.html" title="type parameter in ExtendableAccessor">E</a> e)</code> </td> +</tr> +<tr id="i1" class="rowColor"> +<td class="colFirst"><code>void</code></td> +<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/qpid/proton/engine/ExtendableAccessor.html#set-E-T-">set</a></span>(<a href="../../../../../org/apache/qpid/proton/engine/ExtendableAccessor.html" title="type parameter in ExtendableAccessor">E</a> e, + <a href="../../../../../org/apache/qpid/proton/engine/ExtendableAccessor.html" title="type parameter in ExtendableAccessor">T</a> value)</code> </td> +</tr> +</table> +<ul class="blockList"> +<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object"> +<!-- --> +</a> +<h3>Methods inherited from class java.lang.Object</h3> +<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li> +</ul> +</li> +</ul> +</li> +</ul> +</div> +<div class="details"> +<ul class="blockList"> +<li class="blockList"> +<!-- ========= CONSTRUCTOR DETAIL ======== --> +<ul class="blockList"> +<li class="blockList"><a name="constructor.detail"> +<!-- --> +</a> +<h3>Constructor Detail</h3> +<a name="ExtendableAccessor-java.lang.Class-"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>ExtendableAccessor</h4> +<pre>public ExtendableAccessor(java.lang.Class<<a href="../../../../../org/apache/qpid/proton/engine/ExtendableAccessor.html" title="type parameter in ExtendableAccessor">T</a>> klass)</pre> +</li> +</ul> +</li> +</ul> +<!-- ============ METHOD DETAIL ========== --> +<ul class="blockList"> +<li class="blockList"><a name="method.detail"> +<!-- --> +</a> +<h3>Method Detail</h3> +<a name="get-org.apache.qpid.proton.engine.Extendable-"> +<!-- --> +</a><a name="get-E-"> +<!-- --> +</a> +<ul class="blockList"> +<li class="blockList"> +<h4>get</h4> +<pre>public <a href="../../../../../org/apache/qpid/proton/engine/ExtendableAccessor.html" title="type parameter in ExtendableAccessor">T</a> get(<a href="../../../../../org/apache/qpid/proton/engine/ExtendableAccessor.html" title="type parameter in ExtendableAccessor">E</a> e)</pre> +</li> +</ul> +<a name="set-org.apache.qpid.proton.engine.Extendable-java.lang.Object-"> +<!-- --> +</a><a name="set-E-T-"> +<!-- --> +</a> +<ul class="blockListLast"> +<li class="blockList"> +<h4>set</h4> +<pre>public void set(<a href="../../../../../org/apache/qpid/proton/engine/ExtendableAccessor.html" title="type parameter in ExtendableAccessor">E</a> e, + <a href="../../../../../org/apache/qpid/proton/engine/ExtendableAccessor.html" title="type parameter in ExtendableAccessor">T</a> value)</pre> +</li> +</ul> +</li> +</ul> +</li> +</ul> +</div> +</div> +<!-- ========= END OF CLASS DATA ========= --> +<!-- ======= START OF BOTTOM NAVBAR ====== --> +<div class="bottomNav"><a name="navbar.bottom"> +<!-- --> +</a> +<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div> +<a name="navbar.bottom.firstrow"> +<!-- --> +</a> +<ul class="navList" title="Navigation"> +<li><a href="../../../../../overview-summary.html">Overview</a></li> +<li><a href="package-summary.html">Package</a></li> +<li class="navBarCell1Rev">Class</li> +<li><a href="package-tree.html">Tree</a></li> +<li><a href="../../../../../deprecated-list.html">Deprecated</a></li> +<li><a href="../../../../../index-all.html">Index</a></li> +<li><a href="../../../../../help-doc.html">Help</a></li> +</ul> +</div> +<div class="subNav"> +<ul class="navList"> +<li><a href="../../../../../org/apache/qpid/proton/engine/Extendable.html" title="interface in org.apache.qpid.proton.engine"><span class="typeNameLink">Prev Class</span></a></li> +<li><a href="../../../../../org/apache/qpid/proton/engine/Handler.html" title="interface in org.apache.qpid.proton.engine"><span class="typeNameLink">Next Class</span></a></li> +</ul> +<ul class="navList"> +<li><a href="../../../../../index.html?org/apache/qpid/proton/engine/ExtendableAccessor.html" target="_top">Frames</a></li> +<li><a href="ExtendableAccessor.html" target="_top">No Frames</a></li> +</ul> +<ul class="navList" id="allclasses_navbar_bottom"> +<li><a href="../../../../../allclasses-noframe.html">All Classes</a></li> +</ul> +<div> +<script type="text/javascript"><!-- + allClassesLink = document.getElementById("allclasses_navbar_bottom"); + if(window==top) { + allClassesLink.style.display = "block"; + } + else { + allClassesLink.style.display = "none"; + } + //--> +</script> +</div> +<div> +<ul class="subNavList"> +<li>Summary: </li> +<li>Nested | </li> +<li>Field | </li> +<li><a href="#constructor.summary">Constr</a> | </li> +<li><a href="#method.summary">Method</a></li> +</ul> +<ul class="subNavList"> +<li>Detail: </li> +<li>Field | </li> +<li><a href="#constructor.detail">Constr</a> | </li> +<li><a href="#method.detail">Method</a></li> +</ul> +</div> +<a name="skip.navbar.bottom"> +<!-- --> +</a></div> +<!-- ======== END OF BOTTOM NAVBAR ======= --> +</body> +</html> Added: qpid/site/input/releases/qpid-proton-master/proton/python/api/proton.EventType-class.html URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/api/proton.EventType-class.html?rev=1705923&view=auto ============================================================================== Binary file - no diff available. Propchange: qpid/site/input/releases/qpid-proton-master/proton/python/api/proton.EventType-class.html ------------------------------------------------------------------------------ svn:mime-type = application/xml Added: qpid/site/input/releases/qpid-proton-master/proton/python/api/uml_class_diagram_for_proton_e_3.png URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/api/uml_class_diagram_for_proton_e_3.png?rev=1705923&view=auto ============================================================================== Binary file - no diff available. Propchange: qpid/site/input/releases/qpid-proton-master/proton/python/api/uml_class_diagram_for_proton_e_3.png ------------------------------------------------------------------------------ svn:mime-type = image/png Added: qpid/site/input/releases/qpid-proton-master/proton/python/book/.buildinfo URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/book/.buildinfo?rev=1705923&view=auto ============================================================================== --- qpid/site/input/releases/qpid-proton-master/proton/python/book/.buildinfo (added) +++ qpid/site/input/releases/qpid-proton-master/proton/python/book/.buildinfo Tue Sep 29 20:27:56 2015 @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: b7c6c5e39e824de995733c5a6e1a6cfa +tags: 645f666f9bcd5a90fca523b33c5a78b7 Added: qpid/site/input/releases/qpid-proton-master/proton/python/book/_sources/index.txt URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/book/_sources/index.txt?rev=1705923&view=auto ============================================================================== --- qpid/site/input/releases/qpid-proton-master/proton/python/book/_sources/index.txt (added) +++ qpid/site/input/releases/qpid-proton-master/proton/python/book/_sources/index.txt Tue Sep 29 20:27:56 2015 @@ -0,0 +1,11 @@ +Apache Qpid Proton: python documentation +======================================== + +Contents: + +.. toctree:: + :maxdepth: 2 + + tutorial + overview + Added: qpid/site/input/releases/qpid-proton-master/proton/python/book/_sources/overview.txt URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/book/_sources/overview.txt?rev=1705923&view=auto ============================================================================== --- qpid/site/input/releases/qpid-proton-master/proton/python/book/_sources/overview.txt (added) +++ qpid/site/input/releases/qpid-proton-master/proton/python/book/_sources/overview.txt Tue Sep 29 20:27:56 2015 @@ -0,0 +1,160 @@ +############ +API Overview +############ + +========================= +An overview of the model +========================= + +Messages are transferred between connected peers over 'links'. At the +sending peer the link is called a sender. At the receiving peer it is +called a receiver. Messages are sent by senders and received by +receivers. Links may have named 'source' and 'target' addresses (for +example to identify the queue from which message were to be received +or to which they were to be sent). + +Links are established over sessions. Sessions are established over +connections. Connections are (generally) established between two +uniquely identified containers. Though a connection can have multiple +sessions, often this is not needed. The container API allows you to +ignore sessions unless you actually require them. + +The sending of a message over a link is called a delivery. The message +is the content sent, including all meta-data such as headers and +annotations. The delivery is the protocol exchange associated with the +transfer of that content. + +To indicate that a delivery is complete, either the sender or the +receiver 'settles' it. When the other side learns that it has been +settled, they will no longer communicate about that delivery. The +receiver can also indicate whether they accept or reject the +message. + +Three different delivery levels or 'guarantees' can be achieved: +at-most-once, at-least-once or exactly-once. See +:ref:`delivery-guarantees` for more detail. + +======================================================= +A summary of the most commonly used classes and members +======================================================= + +A brief summary of some of the key classes follows. + +The :py:class:`~proton.reactor.Container` class is a convenient entry +point into the API, allowing connections and links to be +established. Applications are structured as one or more event +handlers. Handlers can be set at Container, Connection, or Link +scope. Messages are sent by establishing an approprate sender and +invoking its :py:meth:`~proton.Sender.send()` method. This is +typically done when the sender is sendable, a condition indicated by +the :py:meth:`~proton.handlers.MessagingHandler.on_sendable()` event, to +avoid execessive build up of messages. Messages can be received by +establishing an appropriate receiver and handling the +:py:meth:`~proton.handlers.MessagingHandler.on_message()` event. + +.. autoclass:: proton.reactor.Container + :show-inheritance: proton.reactor.Reactor + :members: connect, create_receiver, create_sender, run, schedule + :undoc-members: + + .. py:attribute:: container_id + + The identifier used to identify this container in any + connections it establishes. Container names should be + unique. By default a UUID will be used. + + The :py:meth:`~proton.reactor.Container.connect()` method returns + an instance of :py:class:`~proton.Connection`, the + :py:meth:`~proton.reactor.Container.create_receiver()` method + returns an instance of :py:class:`~proton.Receiver` and the + :py:meth:`~proton.reactor.Container.create_sender()` method + returns an instance of :py:class:`~proton.Sender`. + +.. autoclass:: proton.Connection + :members: open, close, state, session, hostname, container, + remote_container, remote_desired_capabilities, remote_hostname, remote_offered_capabilities , remote_properties + :undoc-members: + +.. autoclass:: proton.Receiver + :show-inheritance: proton.Link + :members: flow, recv, drain, draining + :undoc-members: + +.. autoclass:: proton.Sender + :show-inheritance: proton.Link + :members: offered, send + :undoc-members: + +.. autoclass:: proton.Link + :members: name, state, is_sender, is_receiver, + credit, queued, session, connection, + source, target, remote_source, remote_target + :undoc-members: + + The :py:meth:`~proton.Link.source()`, + :py:meth:`~proton.Link.target()`, + :py:meth:`~proton.Link.remote_source()` and + :py:meth:`~proton.Link.remote_target()` methods all return an + instance of :py:class:`~proton.Terminus`. + + +.. autoclass:: proton.Delivery + :members: update, settle, settled, remote_state, local_state, partial, readable, writable, + link, session, connection + :undoc-members: + +.. autoclass:: proton.handlers.MessagingHandler + :members: on_start, on_reactor_init, + on_message, + on_accepted, + on_rejected, + on_settled, + on_sendable, + on_connection_error, + on_link_error, + on_session_error, + on_disconnected, + accept, reject, release, settle + :undoc-members: + +.. autoclass:: proton.Event + :members: delivery, link, receiver, sender, session, connection, reactor, context + :undoc-members: + +.. autoclass:: proton.Message + :members: address, id, priority, subject, ttl, reply_to, correlation_id, durable, user_id, + content_type, content_encoding, creation_time, expiry_time, delivery_count, first_acquirer, + group_id, group_sequence, reply_to_group_id, + send, recv, encode, decode + :undoc-members: + +.. autoclass:: proton.Terminus + :members: address, dynamic, properties, capabilities, filter + :undoc-members: + +.. _delivery-guarantees: + +=================== +Delivery guarantees +=================== + +For at-most-once, the sender settles the message as soon as it sends +it. If the connection is lost before the message is received by the +receiver, the message will not be delivered. + +For at-least-once, the receiver accepts and settles the message on +receipt. If the connection is lost before the sender is informed of +the settlement, then the delivery is considered in-doubt and should be +retried. This will ensure it eventually gets delivered (provided of +course the connection and link can be reestablished). It may mean that +it is delivered multiple times though. + +Finally, for exactly-once, the receiver accepts the message but +doesn't settle it. The sender settles once it is aware that the +receiver accepted it. In this way the receiver retains knowledge of an +accepted message until it is sure the sender knows it has been +accepted. If the connection is lost before settlement, the receiver +informs the sender of all the unsettled deliveries it knows about, and +from this the sender can deduce which need to be redelivered. The +sender likewise informs the receiver which deliveries it knows about, +from which the receiver can deduce which have already been settled. Added: qpid/site/input/releases/qpid-proton-master/proton/python/book/_sources/tutorial.txt URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/book/_sources/tutorial.txt?rev=1705923&view=auto ============================================================================== --- qpid/site/input/releases/qpid-proton-master/proton/python/book/_sources/tutorial.txt (added) +++ qpid/site/input/releases/qpid-proton-master/proton/python/book/_sources/tutorial.txt Tue Sep 29 20:27:56 2015 @@ -0,0 +1,301 @@ +######## +Tutorial +######## + +============ +Hello World! +============ + +Tradition dictates that we start with hello world! However rather than +simply striving for the shortest program possible, we'll aim for a +more illustrative example while still restricting the functionality to +sending and receiving a single message. + +.. literalinclude:: ../../../../examples/python/helloworld.py + :lines: 21- + :linenos: + +You can see the import of :py:class:`~proton.reactor.Container` from ``proton.reactor`` on the +second line. This is a class that makes programming with proton a +little easier for the common cases. It includes within it an event +loop, and programs written using this utility are generally structured +to react to various events. This reactive style is particularly suited +to messaging applications. + +To be notified of a particular event, you define a class with the +appropriately name method on it. That method is then called by the +event loop when the event occurs. + +We define a class here, ``HelloWorld``, which handles the key events of +interest in sending and receiving a message. + +The ``on_start()`` method is called when the event loop first +starts. We handle that by establishing our connection (line 12), a +sender over which to send the message (line 13) and a receiver over +which to receive it back again (line 14). + +The ``on_sendable()`` method is called when message can be transferred +over the associated sender link to the remote peer. We send out our +``Hello World!`` message (line 17), then close the sender (line 18) as +we only want to send one message. The closing of the sender will +prevent further calls to ``on_sendable()``. + +The ``on_message()`` method is called when a message is +received. Within that we simply print the body of the message (line +21) and then close the connection (line 22). + +Now that we have defined the logic for handling these events, we +create an instance of a :py:class:`~proton.reactor.Container`, pass it +our handler and then enter the event loop by calling +:py:meth:`~proton.reactor.Container.run()`. At this point control +passes to the container instance, which will make the appropriate +callbacks to any defined handlers. + +To run the example you will need to have a broker (or similar) +accepting connections on that url either with a queue (or topic) +matching the given address or else configured to create such a queue +(or topic) dynamically. There is a simple broker.py script included +alongside the examples that can be used for this purpose if +desired. (It is also written using the API described here, and as such +gives an example of a slightly more involved application). + +==================== +Hello World, Direct! +==================== + +Though often used in conjunction with a broker, AMQP does not +*require* this. It also allows senders and receivers can communicate +directly if desired. + +Let's modify our example to demonstrate this. + +.. literalinclude:: ../../../../examples/python/helloworld_direct.py + :lines: 21- + :emphasize-lines: 11,21-22,24-25 + :linenos: + +The first difference, on line 11, is that rather than creating a +receiver on the same connection as our sender, we listen for incoming +connections by invoking the +:py:meth:`~proton.reactor.Container.listen()` method on the +container. + +As we only need then to initiate one link, the sender, we can do that +by passing in a url rather than an existing connection, and the +connection will also be automatically established for us. + +We send the message in response to the ``on_sendable()`` callback and +print the message out in response to the ``on_message()`` callback +exactly as before. + +However we also handle two new events. We now close the connection +from the senders side once the message has been accepted (line +22). The acceptance of the message is an indication of successful +transfer to the peer. We are notified of that event through the +``on_accepted()`` callback. Then, once the connection has been closed, +of which we are notified through the ``on_closed()`` callback, we stop +accepting incoming connections (line 25) at which point there is no +work to be done and the event loop exits, and the run() method will +return. + +So now we have our example working without a broker involved! + +============================= +Asynchronous Send and Receive +============================= + +Of course, these ``HelloWorld!`` examples are very artificial, +communicating as they do over a network connection but with the same +process. A more realistic example involves communication between +separate processes (which could indeed be running on completely +separate machines). + +Let's separate the sender from the receiver, and let's transfer more than +a single message between them. + +We'll start with a simple sender. + +.. literalinclude:: ../../../../examples/python/simple_send.py + :lines: 21- + :linenos: + +As with the previous example, we define the application logic in a +class that handles various events. As before, we use the +``on_start()`` event to establish our sender link over which we will +transfer messages and the ``on_sendable()`` event to know when we can +transfer our messages. + +Because we are transferring more than one message, we need to keep +track of how many we have sent. We'll use a ``sent`` member variable +for that. The ``total`` member variable will hold the number of +messages we want to send. + +AMQP defines a credit-based flow control mechanism. Flow control +allows the receiver to control how many messages it is prepared to +receive at a given time and thus prevents any component being +overwhelmed by the number of messages it is sent. + +In the ``on_sendable()`` callback, we check that our sender has credit +before sending messages. We also check that we haven't already sent +the required number of messages. + +The ``send()`` call on line 20 is of course asynchronous. When it +returns the message has not yet actually been transferred across the +network to the receiver. By handling the ``on_accepted()`` event, we +can get notified when the receiver has received and accepted the +message. In our example we use this event to track the confirmation of +the messages we have sent. We only close the connection and exit when +the receiver has received all the messages we wanted to send. + +If we are disconnected after a message is sent and before it has been +confirmed by the receiver, it is said to be ``in doubt``. We don't +know whether or not it was received. In this example, we will handle +that by resending any in-doubt messages. This is known as an +'at-least-once' guarantee, since each message should eventually be +received at least once, though a given message may be received more +than once (i.e. duplicates are possible). In the ``on_disconnected()`` +callback, we reset the sent count to reflect only those that have been +confirmed. The library will automatically try to reconnect for us, and +when our sender is sendable again, we can restart from the point we +know the receiver got to. + +Now let's look at the corresponding receiver: + +.. literalinclude:: ../../../../examples/python/simple_recv.py + :lines: 21- + :linenos: + +Here we handle the ``on_start()`` by creating our receiver, much like +we did for the sender. We also handle the ``on_message()`` event for +received messages and print the message out as in the ``Hello World!`` +examples. However we add some logic to allow the receiver to wait for +a given number of messages, then to close the connection and exit. We +also add some logic to check for and ignore duplicates, using a simple +sequential id scheme. + +Again, though sending between these two examples requires some sort of +intermediary process (e.g. a broker), AMQP allows us to send messages +directly between two processes without this if we so wish. In that +case one or other of the processes needs to accept incoming socket +connections. Let's create a modified version of the receiving example +that does this: + +.. literalinclude:: ../../../../examples/python/direct_recv.py + :lines: 21- + :emphasize-lines: 13,25 + :linenos: + +There are only two differences here. On line 13, instead of initiating +a link (and implicitly a connection), we listen for incoming +connections. On line 25, when we have received all the expected +messages, we then stop listening for incoming connections by closing +the acceptor object. + +You can use the original send example now to send to this receiver +directly. (Note: you will need to stop any broker that is listening on +the 5672 port, or else change the port used by specifying a different +address to each example via the -a command line switch). + +We could equally well modify the original sender to allow the original +receiver to connect to it. Again that just requires two modifications: + +.. literalinclude:: ../../../../examples/python/direct_send.py + :lines: 21- + :emphasize-lines: 15,28 + :linenos: + +As with the modified receiver, instead of initiating establishment of +a link, we listen for incoming connections on line 15 and then on line +28, when we have received confirmation of all the messages we sent, we +can close the acceptor in order to exit. The symmetry in the +underlying AMQP that enables this is quite unique and elegant, and in +reflecting this the proton API provides a flexible toolkit for +implementing all sorts of interesting intermediaries (the broker.py +script provided as a simple broker for testing purposes provides an +example of this). + +To try this modified sender, run the original receiver against it. + +================ +Request/Response +================ + +A common pattern is to send a request message and expect a response +message in return. AMQP has special support for this pattern. Let's +have a look at a simple example. We'll start with the 'server', +i.e. the program that will process the request and send the +response. Note that we are still using a broker in this example. + +Our server will provide a very simple service: it will respond with +the body of the request converted to uppercase. + +.. literalinclude:: ../../../../examples/python/server.py + :lines: 21- + :linenos: + +The code here is not too different from the simple receiver +example. When we receive a request however, we look at the +:py:attr:`~proton.Message.reply_to` address on the +:py:class:`~proton.Message` and create a sender for that over which to +send the response. We'll cache the senders incase we get further +requests with the same reply_to. + +Now let's create a simple client to test this service out. + +.. literalinclude:: ../../../../examples/python/client.py + :lines: 21- + :linenos: + +As well as sending requests, we need to be able to get back the +responses. We create a receiver for that (see line 14), but we don't +specify an address, we set the dynamic option which tells the broker +we are connected to to create a temporary address over which we can +receive our responses. + +We need to use the address allocated by the broker as the reply_to +address of our requests, so we can't send them until the broker has +confirmed our receiving link has been set up (at which point we will +have our allocated address). To do that, we add an +``on_link_opened()`` method to our handler class, and if the link +associated with event is the receiver, we use that as the trigger to +send our first request. + +Again, we could avoid having any intermediary process here if we +wished. The following code implementas a server to which the client +above could connect directly without any need for a broker or similar. + +.. literalinclude:: ../../../../examples/python/server_direct.py + :lines: 21- + :linenos: + +Though this requires some more extensive changes than the simple +sending and receiving examples, the essence of the program is still +the same. Here though, rather than the server establishing a link for +the response, it relies on the link that the client established, since +that now comes in directly to the server process. + +Miscellaneous +============= + +Many brokers offer the ability to consume messages based on a +'selector' that defines which messages are of interest based on +particular values of the headers. The following example shows how that +can be achieved: + +.. literalinclude:: ../../../../examples/python/selected_recv.py + :lines: 21- + :emphasize-lines: 10 + :linenos: + +When creating the receiver, we specify a Selector object as an +option. The options argument can take a single object or a +list. Another option that is sometimes of interest when using a broker +is the ability to 'browse' the messages on a queue, rather than +consumig them. This is done in AMQP by specifying a distribution mode +of 'copy' (instead of 'move' which is the expected default for +queues). An example of that is shown next: + +.. literalinclude:: ../../../../examples/python/queue_browser.py + :lines: 21- + :emphasize-lines: 10 + :linenos: Added: qpid/site/input/releases/qpid-proton-master/proton/python/book/_static/ajax-loader.gif URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-proton-master/proton/python/book/_static/ajax-loader.gif?rev=1705923&view=auto ============================================================================== Binary file - no diff available. Propchange: qpid/site/input/releases/qpid-proton-master/proton/python/book/_static/ajax-loader.gif ------------------------------------------------------------------------------ svn:mime-type = image/gif --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
