qpid-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jonat...@apache.org
Subject svn commit: r1097544 [17/20] - in /qpid/site/docs/books/0.10: ./ AMQP-Messaging-Broker-CPP-Book/ AMQP-Messaging-Broker-CPP-Book/html-single/ AMQP-Messaging-Broker-CPP-Book/html-single/images/ AMQP-Messaging-Broker-CPP-Book/html-single/images/jmx_consol...
Date Thu, 28 Apr 2011 16:49:56 GMT
Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113099.png
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113099.png?rev=1097544&view=auto
==============================================================================
Binary file - no diff available.

Propchange: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113099.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113100.png
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113100.png?rev=1097544&view=auto
==============================================================================
Binary file - no diff available.

Propchange: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113100.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113101.png
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113101.png?rev=1097544&view=auto
==============================================================================
Binary file - no diff available.

Propchange: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113101.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113102.png
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113102.png?rev=1097544&view=auto
==============================================================================
Binary file - no diff available.

Propchange: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113102.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113103.png
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113103.png?rev=1097544&view=auto
==============================================================================
Binary file - no diff available.

Propchange: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113103.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113104.png
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113104.png?rev=1097544&view=auto
==============================================================================
Binary file - no diff available.

Propchange: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113104.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113105.png
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113105.png?rev=1097544&view=auto
==============================================================================
Binary file - no diff available.

Propchange: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113105.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113106.png
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113106.png?rev=1097544&view=auto
==============================================================================
Binary file - no diff available.

Propchange: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113106.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113107.png
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113107.png?rev=1097544&view=auto
==============================================================================
Binary file - no diff available.

Propchange: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113107.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113108.png
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113108.png?rev=1097544&view=auto
==============================================================================
Binary file - no diff available.

Propchange: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113108.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113109.png
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113109.png?rev=1097544&view=auto
==============================================================================
Binary file - no diff available.

Propchange: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113109.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113110.png
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113110.png?rev=1097544&view=auto
==============================================================================
Binary file - no diff available.

Propchange: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113110.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113111.png
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113111.png?rev=1097544&view=auto
==============================================================================
Binary file - no diff available.

Propchange: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113111.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113112.png
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113112.png?rev=1097544&view=auto
==============================================================================
Binary file - no diff available.

Propchange: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113112.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113113.png
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113113.png?rev=1097544&view=auto
==============================================================================
Binary file - no diff available.

Propchange: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113113.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113114.png
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113114.png?rev=1097544&view=auto
==============================================================================
Binary file - no diff available.

Propchange: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113114.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113115.png
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113115.png?rev=1097544&view=auto
==============================================================================
Binary file - no diff available.

Propchange: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113115.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113116.png
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113116.png?rev=1097544&view=auto
==============================================================================
Binary file - no diff available.

Propchange: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113116.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113117.png
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113117.png?rev=1097544&view=auto
==============================================================================
Binary file - no diff available.

Propchange: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113117.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113118.png
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113118.png?rev=1097544&view=auto
==============================================================================
Binary file - no diff available.

Propchange: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113118.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113119.png
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113119.png?rev=1097544&view=auto
==============================================================================
Binary file - no diff available.

Propchange: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/jmx_console/3113119.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/qpid-logo.png
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/qpid-logo.png?rev=1097544&view=auto
==============================================================================
Binary file - no diff available.

Propchange: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html-single/images/qpid-logo.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch01.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch01.html?rev=1097544&view=auto
==============================================================================
--- qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch01.html (added)
+++ qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch01.html Thu Apr 28 16:49:49 2011
@@ -0,0 +1,18 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 1. Introduction</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="Programming in Apache Qpid"><link rel="up" href="index.html" title="Programming in Apache Qpid"><link rel="prev" href="index.html" title="Programming in Apache Qpid"><link rel="next" href="ch02.html" title="Chapter 2. Using the Qpid Messaging API"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 1. Introduction</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ch02.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 1. Introduction">
 <div class="titlepage"><div><div><h2 class="title"><a name="id2708088"></a>Chapter 1. Introduction</h2></div></div></div><p>Apache Qpid is a reliable, asynchronous messaging system that
+      supports the AMQP messaging protocol in several common programming
+      languages. Qpid is supported on most common platforms.
+    </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
+	  On the Java platform, Qpid uses the
+	  established <a class="ulink" href="http://java.sun.com/products/jms/" target="_top">Java JMS
+	  API</a>.
+	</p></li><li class="listitem"><p>
+	  For Python, C++, and .NET, Qpid defines its own messaging API, the
+	  <em class="firstterm">Qpid Messaging API</em>, which is
+	  conceptually similar in each.
+	</p><p>
+	  On the .NET platform, Qpid also provides a WCF binding.
+	</p></li><li class="listitem"><p>
+	  Ruby will also use the Qpid Messaging API, which will soon
+	  be implemented. (Ruby currently uses an API that is closely
+	  tied to the AMQP version).
+	</p></li></ul></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Programming in Apache Qpid </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 2. Using the Qpid Messaging API</td></tr></table></div></body></html>

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch02.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch02.html?rev=1097544&view=auto
==============================================================================
--- qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch02.html (added)
+++ qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch02.html Thu Apr 28 16:49:49 2011
@@ -0,0 +1,70 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 2. Using the Qpid Messaging API</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="Programming in Apache Qpid"><link rel="up" href="index.html" title="Programming in Apache Qpid"><link rel="prev" href="ch01.html" title="Chapter 1. Introduction"><link rel="next" href="ch02s02.html" title="2.2. A Simple Messaging Program in Python"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 2. Using the Qpid Messaging API</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch01.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ch02s02.html">Next</a></td></tr></table><hr></div><div class="chapter
 " title="Chapter 2. Using the Qpid Messaging API"><div class="titlepage"><div><div><h2 class="title"><a name="id2708114"></a>Chapter 2. Using the Qpid Messaging API</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="ch02.html#id2705206">2.1. A Simple Messaging Program in C++</a></span></dt><dt><span class="section"><a href="ch02s02.html">2.2. A Simple Messaging Program in Python</a></span></dt><dt><span class="section"><a href="ch02s03.html">2.3. A Simple Messaging Program in .NET C#</a></span></dt><dt><span class="section"><a href="ch02s04.html">2.4. Addresses</a></span></dt><dd><dl><dt><span class="section"><a href="ch02s04.html#id2738348">2.4.1. Address Strings</a></span></dt><dt><span class="section"><a href="ch02s04.html#id2735610">2.4.2. Subjects</a></span></dt><dt><span class="section"><a href="ch02s04.html#id2728030">2.4.3. Address String Options</a></span></dt><dt><span class="section"><a href="ch02s04.ht
 ml#section-address-string-bnf">2.4.4. Address String Grammar</a></span></dt></dl></dd><dt><span class="section"><a href="ch02s05.html">2.5. Sender Capacity and Replay</a></span></dt><dt><span class="section"><a href="ch02s06.html">2.6. Receiver Capacity (Prefetch)</a></span></dt><dt><span class="section"><a href="ch02s07.html">2.7. Acknowledging Received Messages</a></span></dt><dt><span class="section"><a href="ch02s08.html">2.8. Receiving Messages from Multiple Sources</a></span></dt><dt><span class="section"><a href="ch02s09.html">2.9. Transactions</a></span></dt><dt><span class="section"><a href="ch02s10.html">2.10. Connection Options</a></span></dt><dt><span class="section"><a href="ch02s11.html">2.11. Maps and Lists in Message Content</a></span></dt><dd><dl><dt><span class="section"><a href="ch02s11.html#section-Python-Maps">2.11.1. Qpid Maps and Lists in Python</a></span></dt><dt><span class="section"><a href="ch02s11.html#section-cpp-Maps">2.11.2. Qpid Maps and Lists
  in C++</a></span></dt><dt><span class="section"><a href="ch02s11.html#section-dotnet-Maps">2.11.3. Qpid Maps and Lists in .NET</a></span></dt></dl></dd><dt><span class="section"><a href="ch02s12.html">2.12. The Request / Response Pattern</a></span></dt><dt><span class="section"><a href="ch02s13.html">2.13. Performance Tips</a></span></dt><dt><span class="section"><a href="ch02s14.html">2.14. Cluster Failover</a></span></dt><dt><span class="section"><a href="ch02s15.html">2.15. Logging</a></span></dt><dd><dl><dt><span class="section"><a href="ch02s15.html#id2741097">2.15.1. Logging in C++</a></span></dt><dt><span class="section"><a href="ch02s15.html#id2741146">2.15.2. Logging in Python</a></span></dt></dl></dd><dt><span class="section"><a href="ch02s16.html">2.16. The AMQP 0-10 mapping</a></span></dt></dl></div><p>The Qpid Messaging API is quite simple, consisting of only a
+      handful of core classes.
+    </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
+          A <em class="firstterm">message</em> consists of a standard set
+          of fields (e.g. <code class="literal">subject</code>,
+          <code class="literal">reply-to</code>), an application-defined set of
+          properties, and message content (the main body of the
+          message).
+        </p></li><li class="listitem"><p>
+          A <em class="firstterm">connection</em> represents a network
+          connection to a remote endpoint.
+        </p></li><li class="listitem"><p>
+          A <em class="firstterm">session</em> provides a sequentially
+          ordered context for sending and receiving
+          <span class="emphasis"><em>messages</em></span>. A session is obtained from a
+          connection.
+        </p></li><li class="listitem"><p>
+	  A <em class="firstterm">sender</em> sends messages to a target
+	  using the <code class="literal">sender.send</code> method. A sender is
+	  obtained from a session for a given target address.
+        </p></li><li class="listitem"><p>
+	  A <em class="firstterm">receiver</em> receives messages from a
+	  source using the <code class="literal">receiver.fetch</code> method.
+	  A receiver is obtained from a session for a given source
+	  address.
+        </p></li></ul></div><p>
+      The following sections show how to use these classes in a
+      simple messaging program.
+    </p><div class="section" title="2.1. A Simple Messaging Program in C++"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2705206"></a>2.1. A Simple Messaging Program in C++</h2></div></div></div><p>The following C++ program shows how to create a connection,
+        create a session, send messages using a sender, and receive
+        messages using a receiver.</p><div class="example"><a name="id2736062"></a><p class="title"><b>Example 2.1. "Hello world!" in C++</b></p><div class="example-contents"><pre lang="c++" class="programlisting">
+#include &lt;qpid/messaging/Connection.h&gt;
+#include &lt;qpid/messaging/Message.h&gt;
+#include &lt;qpid/messaging/Receiver.h&gt;
+#include &lt;qpid/messaging/Sender.h&gt;
+#include &lt;qpid/messaging/Session.h&gt;
+
+#include &lt;iostream&gt;
+
+using namespace qpid::messaging;
+
+int main(int argc, char** argv) {
+    std::string broker = argc &gt; 1 ? argv[1] : "localhost:5672";
+    std::string address = argc &gt; 2 ? argv[2] : "amq.topic";
+    std::string connectionOptions = argc &gt; 3 ? argv[3] : "";
+
+    Connection connection(broker, connectionOptions);
+    try {
+        connection.open();  <a class="co" name="hello-cpp-open" href="ch02.html#callout-cpp-open">(1)</a>
+        Session session = connection.createSession(); <a class="co" name="hello-cpp-session" href="ch02.html#callout-cpp-session">(2)</a>
+
+        Receiver receiver = session.createReceiver(address); <a class="co" name="hello-cpp-receiver" href="ch02.html#callout-cpp-receiver">(3)</a>
+        Sender sender = session.createSender(address); <a class="co" name="hello-cpp-sender" href="ch02.html#callout-cpp-sender">(4)</a>
+
+        sender.send(Message("Hello world!"));
+
+        Message message = receiver.fetch(Duration::SECOND * 1); <a class="co" name="hello-cpp-fetch" href="ch02.html#callout-cpp-fetch">(5)</a>
+        std::cout &lt;&lt; message.getContent() &lt;&lt; std::endl;
+        session.acknowledge(); <a class="co" name="hello-cpp-acknowledge" href="ch02.html#callout-cpp-acknowledge">(6)</a>
+
+        connection.close(); <a class="co" name="hello-cpp-close" href="ch02.html#callout-cpp-close">(7)</a>
+        return 0;
+    } catch(const std::exception&amp; error) {
+        std::cerr &lt;&lt; error.what() &lt;&lt; std::endl;
+        connection.close();
+        return 1;
+    }
+}</pre><div class="calloutlist"><table border="0" summary="Callout list"><tr><td width="5%" valign="top" align="left"><p><a name="callout-cpp-open"></a><a href="#hello-cpp-open">(1)</a> </p></td><td valign="top" align="left"><p>Establishes the connection with the messaging broker.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-cpp-session"></a><a href="#hello-cpp-session">(2)</a> </p></td><td valign="top" align="left"><p>Creates a session object on which messages will be sent and received.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-cpp-receiver"></a><a href="#hello-cpp-receiver">(3)</a> </p></td><td valign="top" align="left"><p>Creates a receiver that receives messages from the given address.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-cpp-sender"></a><a href="#hello-cpp-sender">(4)</a> </p></td><td valign="top" align="left"><p>Creates a sender that sends to the given address.
 </p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-cpp-fetch"></a><a href="#hello-cpp-fetch">(5)</a> </p></td><td valign="top" align="left"><p>Receives the next message. The duration is optional, if omitted, will wait indefinitely for the next message.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-cpp-acknowledge"></a><a href="#hello-cpp-acknowledge">(6)</a> </p></td><td valign="top" align="left"><p>Acknowledges receipt of all fetched messages on the
+	  session. This informs the broker that the messages were
+	  transferred and processed by the client successfully.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-cpp-close"></a><a href="#hello-cpp-close">(7)</a> </p></td><td valign="top" align="left"><p>Closes the connection, all sessions managed by the connection, and all senders and receivers managed by each session.</p></td></tr></table></div></div></div><br class="example-break"></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch01.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch02s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 1. Introduction </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 2.2. A Simple Messaging Program in Python</td></tr></table></div></body></html>

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch02s02.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch02s02.html?rev=1097544&view=auto
==============================================================================
--- qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch02s02.html (added)
+++ qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch02s02.html Thu Apr 28 16:49:49 2011
@@ -0,0 +1,31 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>2.2. A Simple Messaging Program in Python</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="Programming in Apache Qpid"><link rel="up" href="ch02.html" title="Chapter 2. Using the Qpid Messaging API"><link rel="prev" href="ch02.html" title="Chapter 2. Using the Qpid Messaging API"><link rel="next" href="ch02s03.html" title="2.3. A Simple Messaging Program in .NET C#"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.2. A Simple Messaging Program in Python</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Using the Qpid Messaging API</th><td width="20%" align="right"> <a accesskey="n" hre
 f="ch02s03.html">Next</a></td></tr></table><hr></div><div class="section" title="2.2. A Simple Messaging Program in Python"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2733219"></a>2.2. A Simple Messaging Program in Python</h2></div></div></div><p>The following Python program shows how to create a
+        connection, create a session, send messages using a sender, and
+        receive messages using a receiver.</p><div class="example"><a name="id2737917"></a><p class="title"><b>Example 2.2. "Hello world!" in Python</b></p><div class="example-contents"><pre lang="python" class="programlisting">
+import sys
+from qpid.messaging import *
+
+broker =  "localhost:5672" if len(sys.argv)&lt;2 else sys.argv[1]
+address = "amq.topic" if len(sys.argv)&lt;3 else sys.argv[2]
+
+connection = Connection(broker)
+
+try:
+  connection.open()  <a class="co" name="hello-python-open" href="ch02s02.html#callout-python-open">(1)</a>
+  session = connection.session()   <a class="co" name="hello-python-session" href="ch02s02.html#callout-python-session">(2)</a>
+
+  sender = session.sender(address)  <a class="co" name="hello-python-sender" href="ch02s02.html#callout-python-sender">(3)</a>
+  receiver = session.receiver(address)  <a class="co" name="hello-python-receiver" href="ch02s02.html#callout-python-receiver">(4)</a>
+
+  sender.send(Message("Hello world!"));
+
+  message = receiver.fetch(timeout=1)  <a class="co" name="hello-python-fetch" href="ch02s02.html#callout-python-fetch">(5)</a>
+  print message.content
+  session.acknowledge() <a class="co" name="hello-python-acknowledge" href="ch02s02.html#callout-python-acknowledge">(6)</a>
+
+except MessagingError,m:
+  print m
+finally:
+  connection.close()  <a class="co" name="hello-python-close" href="ch02s02.html#callout-python-close">(7)</a>
+</pre><div class="calloutlist"><table border="0" summary="Callout list"><tr><td width="5%" valign="top" align="left"><p><a name="callout-python-open"></a><a href="#hello-python-open">(1)</a> </p></td><td valign="top" align="left"><p>Establishes the connection with the messaging broker.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-python-session"></a><a href="#hello-python-session">(2)</a> </p></td><td valign="top" align="left"><p>Creates a session object on which messages will be sent and received.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-python-receiver"></a><a href="#hello-python-receiver">(4)</a> </p></td><td valign="top" align="left"><p>Creates a receiver that receives messages from the given address.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-python-sender"></a><a href="#hello-python-sender">(3)</a> </p></td><td valign="top" align="left"><p>Creates a sender that send
 s to the given address.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-python-fetch"></a><a href="#hello-python-fetch">(5)</a> </p></td><td valign="top" align="left"><p>Receives the next message. The duration is optional, if omitted, will wait indefinitely for the next message.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-python-acknowledge"></a><a href="#hello-python-acknowledge">(6)</a> </p></td><td valign="top" align="left"><p>Acknowledges receipt of all fetched messages on
+	  the session. This informs the broker that the messages were
+	  transfered and processed by the client successfully.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-python-close"></a><a href="#hello-python-close">(7)</a> </p></td><td valign="top" align="left"><p>Closes the connection, all sessions managed by the connection, and all senders and receivers managed by each session.</p></td></tr></table></div></div></div><br class="example-break"></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch02s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 2. Using the Qpid Messaging API </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 2.3. A Simple Messaging Progr
 am in .NET C#</td></tr></table></div></body></html>

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch02s03.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch02s03.html?rev=1097544&view=auto
==============================================================================
--- qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch02s03.html (added)
+++ qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch02s03.html Thu Apr 28 16:49:49 2011
@@ -0,0 +1,48 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>2.3. A Simple Messaging Program in .NET C#</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="Programming in Apache Qpid"><link rel="up" href="ch02.html" title="Chapter 2. Using the Qpid Messaging API"><link rel="prev" href="ch02s02.html" title="2.2. A Simple Messaging Program in Python"><link rel="next" href="ch02s04.html" title="2.4. Addresses"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.3. A Simple Messaging Program in .NET C#</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s02.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Using the Qpid Messaging API</th><td width="20%" align="right"> <a accesskey="n" href="ch02s04.html">Ne
 xt</a></td></tr></table><hr></div><div class="section" title="2.3. A Simple Messaging Program in .NET C#"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2729997"></a>2.3. A Simple Messaging Program in .NET C#</h2></div></div></div><p>The following .NET C#
+	<sup>[<a name="id2723986" href="#ftn.id2723986" class="footnote">1</a>]</sup>
+	program shows how to create a connection,
+        create a session, send messages using a sender, and receive
+        messages using a receiver.
+      </p><div class="example"><a name="id2734609"></a><p class="title"><b>Example 2.3. "Hello world!" in .NET C#</b></p><div class="example-contents"><pre lang="c++" class="programlisting">
+using System;
+using Org.Apache.Qpid.Messaging;  <a class="co" name="hello-csharp-using" href="ch02s03.html#callout-csharp-using">(1)</a>
+
+namespace Org.Apache.Qpid.Messaging {
+    class Program {
+        static void Main(string[] args) {
+            String broker = args.Length &gt; 0 ? args[0] : "localhost:5672";
+            String address = args.Length &gt; 1 ? args[1] : "amq.topic";
+
+            Connection connection = null;
+            try {
+                connection = new Connection(broker);
+                connection.Open();   <a class="co" name="hello-csharp-open" href="ch02s03.html#callout-csharp-open">(2)</a>
+                Session session = connection.CreateSession();   <a class="co" name="hello-csharp-session" href="ch02s03.html#callout-csharp-session">(3)</a>
+
+                Receiver receiver = session.CreateReceiver(address);   <a class="co" name="hello-csharp-receiver" href="ch02s03.html#callout-csharp-receiver">(4)</a>
+                Sender sender = session.CreateSender(address);   <a class="co" name="hello-csharp-sender" href="ch02s03.html#callout-csharp-sender">(5)</a>
+
+                sender.Send(new Message("Hello world!"));
+
+                Message message = new Message();
+                message = receiver.Fetch(DurationConstants.SECOND * 1);   <a class="co" name="hello-csharp-fetch" href="ch02s03.html#callout-csharp-fetch">(6)</a>
+                Console.WriteLine("{0}", message.GetContent());
+                session.Acknowledge();   <a class="co" name="hello-csharp-acknowledge" href="ch02s03.html#callout-csharp-acknowledge">(7)</a>
+
+                connection.Close();   <a class="co" name="hello-csharp-close" href="ch02s03.html#callout-csharp-close">(8)</a>
+            } catch (Exception e) {
+                Console.WriteLine("Exception {0}.", e);
+                if (null != connection)
+                    connection.Close();
+            }
+        }
+    }
+}
+
+</pre><div class="calloutlist"><table border="0" summary="Callout list"><tr><td width="5%" valign="top" align="left"><p><a name="callout-csharp-using"></a><a href="#hello-csharp-using">(1)</a> </p></td><td valign="top" align="left"><p> Permits use of Org.Apache.Qpid.Messaging types and methods without explicit namespace qualification. Any .NET project must have a project reference to the assembly file <code class="literal">Org.Apache.Qpid.Messaging.dll</code> in order to obtain the definitions of the .NET Binding for Qpid Messaging namespace.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-csharp-open"></a><a href="#hello-csharp-open">(2)</a> </p></td><td valign="top" align="left"><p>Establishes the connection with the messaging broker.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-csharp-session"></a><a href="#hello-csharp-session">(3)</a> </p></td><td valign="top" align="left"><p>Creates a session object on whic
 h messages will be sent and received.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-csharp-receiver"></a><a href="#hello-csharp-receiver">(4)</a> </p></td><td valign="top" align="left"><p>Creates a receiver that receives messages from the given address.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-csharp-sender"></a><a href="#hello-csharp-sender">(5)</a> </p></td><td valign="top" align="left"><p>Creates a sender that sends to the given address.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-csharp-fetch"></a><a href="#hello-csharp-fetch">(6)</a> </p></td><td valign="top" align="left"><p>Receives the next message. The duration is optional, if omitted, will wait indefinitely for the next message.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-csharp-acknowledge"></a><a href="#hello-csharp-acknowledge">(7)</a> </p></td><td valign="top" align="left"><p>A
 cknowledges receipt of all fetched messages on the
+	  session. This informs the broker that the messages were
+	  transfered and processed by the client successfully.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-csharp-close"></a><a href="#hello-csharp-close">(8)</a> </p></td><td valign="top" align="left"><p>Closes the connection, all sessions managed by the connection, and all senders and receivers managed by each session.</p></td></tr></table></div></div></div><br class="example-break"><div class="footnotes"><br><hr width="100" align="left"><div class="footnote"><p><sup>[<a name="ftn.id2723986" href="#id2723986" class="para">1</a>] </sup>
+	    The .NET binding for the Qpid C++ Messaging API
+            applies to all .NET Framework managed code languages. C# was chosen
+            for illustration purposes only.
+	  </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch02s04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">2.2. A Simple Messaging Program in Python </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 2.4. Addresses</td></tr></table></div></body></html>

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch02s04.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch02s04.html?rev=1097544&view=auto
==============================================================================
--- qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch02s04.html (added)
+++ qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch02s04.html Thu Apr 28 16:49:49 2011
@@ -0,0 +1,577 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>2.4. Addresses</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="Programming in Apache Qpid"><link rel="up" href="ch02.html" title="Chapter 2. Using the Qpid Messaging API"><link rel="prev" href="ch02s03.html" title="2.3. A Simple Messaging Program in .NET C#"><link rel="next" href="ch02s05.html" title="2.5. Sender Capacity and Replay"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.4. Addresses</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s03.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Using the Qpid Messaging API</th><td width="20%" align="right"> <a accesskey="n" href="ch02s05.html">Next</a></td></tr></table><hr></div><div
  class="section" title="2.4. Addresses"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="section-addresses"></a>2.4. Addresses</h2></div></div></div><p>An <em class="firstterm">address</em> is the name of a message
+      target or message source.
+
+      <sup>[<a name="id2727071" href="#ftn.id2727071" class="footnote">2</a>]</sup>
+
+      The methods that create senders and receivers require an
+      address. The details of sending to a particular target or
+      receiving from a particular source are then handled by the
+      sender or receiver. A different target or source can be used
+      simply by using a different address.
+      </p><p>An address resolves to a <em class="firstterm">node</em>. The
+      Qpid Messaging API recognises two kinds of nodes,
+      <em class="firstterm">queues</em> and <em class="firstterm">topics</em>
+
+	   <sup>[<a name="id2711234" href="#ftn.id2711234" class="footnote">3</a>]</sup>.
+
+      A queue stores each message until it has been received and
+      acknowledged, and only one receiver can receive a given message
+
+            <sup>[<a name="id2728814" href="#ftn.id2728814" class="footnote">4</a>]</sup>.
+
+      A topic immediately delivers a message to all eligible
+      receivers; if there are no eligible receivers, it discards the
+      message.  In the AMQP 0-10 implementation of the API,
+
+          <sup>[<a name="id2712715" href="#ftn.id2712715" class="footnote">5</a>]</sup>
+
+      queues map to AMQP queues, and topics map to AMQP exchanges.
+
+          <sup>[<a name="id2733926" href="#ftn.id2733926" class="footnote">6</a>]</sup>
+      </p><p>In the rest of this tutorial, we present many examples
+      using two programs that take an address as a command line
+      parameter.  <span class="command"><strong>spout</strong></span> sends messages to the
+      target address, <span class="command"><strong>drain</strong></span> receives messages from
+      the source address.  The source code is available in C++, Python, and
+	.NET C# and can be found in the examples directory for each
+      language. These programs can use any address string as a source
+      or a destination, and have many command line options to
+      configure behavior&#8212;use the <span class="command"><strong>-h</strong></span> option
+      for documentation on these options.
+
+      <sup>[<a name="id2738741" href="#ftn.id2738741" class="footnote">7</a>]</sup>
+
+
+      The examples in this tutorial also use the
+      <span class="command"><strong>qpid-config</strong></span> utility to configure AMQP 0-10
+      queues and exchanges on a Qpid broker.
+      </p><div class="example"><a name="id2728448"></a><p class="title"><b>Example 2.4. Queues</b></p><div class="example-contents"><p>Create a queue with <span class="command"><strong>qpid-config</strong></span>, send a message using
+          <span class="command"><strong>spout</strong></span>, and read it using <span class="command"><strong>drain</strong></span>:</p><pre class="screen">
+$ qpid-config add queue hello-world
+$ ./spout hello-world
+$ ./drain hello-world
+
+Message(properties={spout-id:c877e622-d57b-4df2-bf3e-6014c68da0ea:0}, content='')
+        </pre><p>The queue stored the message sent by <span class="command"><strong>spout</strong></span> and delivered
+        it to <span class="command"><strong>drain</strong></span> when requested.</p><p>Once the message has been delivered and and acknowledged
+	by <span class="command"><strong>drain</strong></span>, it is no longer available on the queue. If we run
+	<span class="command"><strong>drain</strong></span> one more time, no messages will be retrieved.</p><pre class="screen">
+$ ./drain hello-world
+$
+	</pre></div></div><br class="example-break"><div class="example"><a name="id2692830"></a><p class="title"><b>Example 2.5. Topics</b></p><div class="example-contents"><p>This example is similar to the previous example, but it
+	uses a topic instead of a queue.</p><p>First, use <span class="command"><strong>qpid-config</strong></span> to remove the queue
+	and create an exchange with the same name:</p><pre class="screen">
+$ qpid-config del queue hello-world
+$ qpid-config add exchange topic hello-world
+        </pre><p>Now run <span class="command"><strong>drain</strong></span> and <span class="command"><strong>spout</strong></span> the same way we did in the previous example:</p><pre class="screen">
+$ ./spout hello-world
+$ ./drain hello-world
+$
+        </pre><p>Topics deliver messages immediately to any interested
+        receiver, and do not store messages. Because there were no
+        receivers at the time <span class="command"><strong>spout</strong></span> sent the
+        message, it was simply discarded. When we ran
+        <span class="command"><strong>drain</strong></span>, there were no messages to
+        receive.</p><p>Now let's run <span class="command"><strong>drain</strong></span> first, using the
+	<code class="literal">-t</code> option to specify a timeout in seconds.
+	While <span class="command"><strong>drain</strong></span> is waiting for messages,
+	run <span class="command"><strong>spout</strong></span> in another window.</p><p><span class="emphasis"><em>First Window:</em></span></p><pre class="screen">
+$ ./drain -t 30 hello-word
+        </pre><p><span class="emphasis"><em>Second Window:</em></span></p><pre class="screen">
+$ ./spout hello-word
+        </pre><p>Once <span class="command"><strong>spout</strong></span> has sent a message, return
+          to the first window to see the output from
+          <span class="command"><strong>drain</strong></span>:</p><pre class="screen">
+Message(properties={spout-id:7da2d27d-93e6-4803-8a61-536d87b8d93f:0}, content='')
+        </pre><p>You can run <span class="command"><strong>drain</strong></span> in several separate
+          windows; each creates a subscription for the exchange, and
+          each receives all messages sent to the exchange.</p></div></div><br class="example-break"><div class="section" title="2.4.1. Address Strings"><div class="titlepage"><div><div><h3 class="title"><a name="id2738348"></a>2.4.1. Address Strings</h3></div></div></div><p>So far, our examples have used address strings that
+	contain only the name of a node. An <em class="firstterm">address
+	string</em> can also contain a
+	<em class="firstterm">subject</em> and
+	<em class="firstterm">options</em>.</p><p>The syntax for an address string is:</p><pre class="programlisting">
+address_string ::=  &lt;address&gt; [ / &lt;subject&gt; ] [ ; &lt;options&gt; ]
+options ::=  { &lt;key&gt; : &lt;value&gt;, ... }
+</pre><p>Addresses, subjects, and keys are strings.  Values can
+	be numbers, strings (with optional single or double quotes),
+	maps, or lists. A complete BNF for address strings appears in
+	<a class="xref" href="ch02s04.html#section-address-string-bnf" title="2.4.4. Address String Grammar">Section 2.4.4, &#8220;Address String Grammar&#8221;</a>.</p><p>So far, the address strings in this tutorial have only
+	used simple names. The following sections show how to use
+	subjects and options.</p></div><div class="section" title="2.4.2. Subjects"><div class="titlepage"><div><div><h3 class="title"><a name="id2735610"></a>2.4.2. Subjects</h3></div></div></div><p>Every message has a property called
+	<em class="firstterm">subject</em>, which is analogous to the
+	subject on an email message. If no subject is specified, the
+	message's subject is null. For convenience, address strings
+	also allow a subject. If a sender's address contains a
+	subject, it is used as the default subject for the messages
+	it sends.
+
+	If a receiver's address contains a subject, it is used to
+	select only messages that match the subject&#8212;the matching
+	algorithm depends on the message source.
+      </p><p>
+	In AMQP 0-10, each exchange type has its own matching
+	algorithm. This is discussed in
+	<a class="xref" href="ch02s16.html" title="2.16. The AMQP 0-10 mapping">Section 2.16, &#8220;The AMQP 0-10 mapping&#8221;</a>.
+      </p><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>
+	  Currently, a receiver bound to a queue ignores subjects,
+	  receiving messages from the queue without filtering. Support
+	  for subject filtering on queues will be implemented soon.
+	</p></div><div class="example"><a name="id2704754"></a><p class="title"><b>Example 2.6. Using subjects</b></p><div class="example-contents"><p>In this example we show how subjects affect message
+        flow.</p><p>First, let's use <span class="command"><strong>qpid-config</strong></span> to create a topic exchange.</p><pre class="screen">
+$ qpid-config add exchange topic news-service
+        </pre><p>Now we use drain to receive messages from <code class="literal">news-service</code> that match the subject <code class="literal">sports</code>.</p><p><span class="emphasis"><em>First Window:</em></span></p><pre class="screen">
+$ ./drain -t 30 news-service/sports
+        </pre><p>In a second window, let's send messages to <code class="literal">news-service</code> using two different subjects:</p><p><span class="emphasis"><em>Second Window:</em></span></p><pre class="screen">
+$ ./spout news-service/sports
+$ ./spout news-service/news
+        </pre><p>Now look at the first window, the message with the
+        subject <code class="literal">sports</code> has been received, but not
+        the message with the subject <code class="literal">news</code>:</p><pre class="screen">
+Message(properties={qpid.subject:sports, spout-id:9441674e-a157-4780-a78e-f7ccea998291:0}, content='')
+        </pre><p>If you run <span class="command"><strong>drain</strong></span> in multiple
+          windows using the same subject, all instances of
+          <span class="command"><strong>drain</strong></span> receive the messages for that
+          subject.</p></div></div><br class="example-break"><p>The AMQP exchange type we are using here,
+        <code class="literal">amq.topic</code>, can also do more sophisticated
+        matching.
+
+	A sender's subject can contain multiple words separated by a
+	<span class="quote">&#8220;<span class="quote">.</span>&#8221;</span> delimiter. For instance, in a news
+	application, the sender might use subjects like
+	<code class="literal">usa.news</code>, <code class="literal">usa.weather</code>,
+	<code class="literal">europe.news</code>, or
+	<code class="literal">europe.weather</code>.
+
+	The receiver's subject can include wildcard characters&#8212;
+	<span class="quote">&#8220;<span class="quote">#</span>&#8221;</span> matches one or more words in the message's
+	subject, <span class="quote">&#8220;<span class="quote">*</span>&#8221;</span> matches a single word.
+
+	For instance, if the subject in the source address is
+	<code class="literal">*.news</code>, it matches messages with the
+	subject <code class="literal">europe.news</code> or
+	<code class="literal">usa.news</code>; if it is
+	<code class="literal">europe.#</code>, it matches messages with subjects
+	like <code class="literal">europe.news</code> or
+	<code class="literal">europe.pseudo.news</code>.</p><div class="example"><a name="id2727288"></a><p class="title"><b>Example 2.7. Subjects with multi-word keys</b></p><div class="example-contents"><p>This example uses drain and spout to demonstrate the
+	    use of subjects with two-word keys.</p><p>Let's use <span class="command"><strong>drain</strong></span> with the subject
+	    <code class="literal">*.news</code> to listen for messages in which
+	    the second word of the key is
+	    <code class="literal">news</code>.</p><p><span class="emphasis"><em>First Window:</em></span></p><pre class="screen">
+$ ./drain -t 30 news-service/*.news
+	    </pre><p>Now let's send messages using several different
+	    two-word keys:</p><p><span class="emphasis"><em>Second Window:</em></span></p><pre class="screen">
+$ ./spout news-service/usa.news
+$ ./spout news-service/usa.sports
+$ ./spout news-service/europe.sports
+$ ./spout news-service/europe.news
+	    </pre><p>In the first window, the messages with
+	    <code class="literal">news</code> in the second word of the key have
+	    been received:</p><pre class="screen">
+Message(properties={qpid.subject:usa.news, spout-id:73fc8058-5af6-407c-9166-b49a9076097a:0}, content='')
+Message(properties={qpid.subject:europe.news, spout-id:f72815aa-7be4-4944-99fd-c64c9747a876:0}, content='')
+	    </pre><p>Next, let's use <span class="command"><strong>drain</strong></span> with the
+	    subject <code class="literal">#.news</code> to match any sequence of
+	    words that ends with <code class="literal">news</code>.</p><p><span class="emphasis"><em>First Window:</em></span></p><pre class="screen">
+$ ./drain -t 30 news-service/#.news
+	    </pre><p>In the second window, let's send messages using a
+	    variety of different multi-word keys:</p><p><span class="emphasis"><em>Second Window:</em></span></p><pre class="screen">
+$ ./spout news-service/news
+$ ./spout news-service/sports
+$ ./spout news-service/usa.news
+$ ./spout news-service/usa.sports
+$ ./spout news-service/usa.faux.news
+$ ./spout news-service/usa.faux.sports
+	    </pre><p>In the first window, messages with
+        <code class="literal">news</code> in the last word of the key have been
+        received:</p><pre class="screen">
+Message(properties={qpid.subject:news, spout-id:cbd42b0f-c87b-4088-8206-26d7627c9640:0}, content='')
+Message(properties={qpid.subject:usa.news, spout-id:234a78d7-daeb-4826-90e1-1c6540781eac:0}, content='')
+Message(properties={qpid.subject:usa.faux.news, spout-id:6029430a-cfcb-4700-8e9b-cbe4a81fca5f:0}, content='')
+        </pre></div></div><br class="example-break"></div><div class="section" title="2.4.3. Address String Options"><div class="titlepage"><div><div><h3 class="title"><a name="id2728030"></a>2.4.3. Address String Options</h3></div></div></div><p>
+        The options in an address string can contain additional
+        information for the senders or receivers created for it,
+        including:
+      </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
+            Policies for assertions about the node to which an address
+            refers.
+	  </p><p>
+	    For instance, in the address string <code class="literal">my-queue;
+	    {assert: always, node:{ type: queue }}</code>, the node
+	    named <code class="literal">my-queue</code> must be a queue; if not,
+	    the address does not resolve to a node, and an exception
+	    is raised.
+          </p></li><li class="listitem"><p>
+            Policies for automatically creating or deleting the node to which an address refers.
+	  </p><p>
+	    For instance, in the address string <code class="literal">xoxox ; {create: always}</code>,
+	    the queue <code class="literal">xoxox</code> is created, if it does
+	    not exist, before the address is resolved.
+          </p></li><li class="listitem"><p>
+            Extension points that can be used for sender/receiver configuration.
+	  </p><p>
+	    For instance, if the address for a receiver is
+	    <code class="literal">my-queue; {mode: browse}</code>, the receiver
+	    works in <code class="literal">browse</code> mode, leaving messages
+	    on the queue so other receivers can receive them.
+          </p></li><li class="listitem"><p>
+            Extension points providing more direct control over the underlying protocol.
+	  </p><p>
+	    For instance, the <code class="literal">x-bindings</code> property
+	    allows greater control over the AMQP 0-10 binding process
+	    when an address is resolved.
+          </p></li></ul></div><p>
+        Let's use some examples to show how these different kinds of
+        address string options affect the behavior of senders and
+        receives.
+      </p><div class="section" title="2.4.3.1. assert"><div class="titlepage"><div><div><h4 class="title"><a name="id2723172"></a>2.4.3.1. assert</h4></div></div></div><p>
+	In this section, we use the <code class="literal">assert</code> option
+	to ensure that the address resolves to a node of the required
+	type.
+      </p><div class="example"><a name="id2715611"></a><p class="title"><b>Example 2.8. Assertions on Nodes</b></p><div class="example-contents"><p>Let's use <span class="command"><strong>qpid-config</strong></span> to create a
+        queue and a topic.</p><pre class="screen">
+$ qpid-config add queue my-queue
+$ qpid-config add exchange topic my-topic
+	</pre><p>
+        We can now use the address specified to drain to assert that it is
+        of a particular type:
+	</p><pre class="screen">
+$ ./drain 'my-queue; {assert: always, node:{ type: queue }}'
+$ ./drain 'my-queue; {assert: always, node:{ type: topic }}'
+2010-04-20 17:30:46 warning Exception received from broker: not-found: not-found: Exchange not found: my-queue (../../src/qpid/broker/ExchangeRegistry.cpp:92) [caused by 2 \x07:\x01]
+Exchange my-queue does not exist
+	</pre><p>
+        The first attempt passed without error as my-queue is indeed a
+        queue. The second attempt however failed; my-queue is not a
+        topic.
+	</p><p>
+        We can do the same thing for my-topic:
+	</p><pre class="screen">
+$ ./drain 'my-topic; {assert: always, node:{ type: topic }}'
+$ ./drain 'my-topic; {assert: always, node:{ type: queue }}'
+2010-04-20 17:31:01 warning Exception received from broker: not-found: not-found: Queue not found: my-topic (../../src/qpid/broker/SessionAdapter.cpp:754) [caused by 1 \x08:\x01]
+Queue my-topic does not exist
+	</pre></div></div><br class="example-break"><p>Now let's use the <code class="literal">create</code> option to
+      create the queue <code class="literal">xoxox</code> if it does not already
+      exist:</p></div><div class="section" title="2.4.3.2. create"><div class="titlepage"><div><div><h4 class="title"><a name="id2733111"></a>2.4.3.2. create</h4></div></div></div><p>In previous examples, we created the queue before
+	listening for messages on it. Using <code class="literal">create:
+	always</code>, the queue is automatically created if it
+	does not exist.</p><div class="example"><a name="id2737415"></a><p class="title"><b>Example 2.9. Creating a Queue Automatically</b></p><div class="example-contents"><p><span class="emphasis"><em>First Window:</em></span></p><pre class="screen">$ ./drain -t 30 "xoxox ; {create: always}"</pre><p>Now we can send messages to this queue:</p><p><span class="emphasis"><em>Second Window:</em></span></p><pre class="screen">$ ./spout "xoxox ; {create: always}"</pre><p>Returning to the first window, we see that <span class="command"><strong>drain</strong></span> has received this message:</p><pre class="screen">Message(properties={spout-id:1a1a3842-1a8b-4f88-8940-b4096e615a7d:0}, content='')</pre></div></div><br class="example-break"><p>The details of the node thus created can be controlled by further options within the node. See <a class="xref" href="ch02s04.html#table-node-properties" title="Table 2.2. Node Properties">Table 2.2, &#8220;Node Properties&#8221;</a> for details.</
 p></div><div class="section" title="2.4.3.3. browse"><div class="titlepage"><div><div><h4 class="title"><a name="id2721534"></a>2.4.3.3. browse</h4></div></div></div><p>Some options specify message transfer semantics; for
+	instance, they may state whether messages should be consumed or
+	read in browsing mode, or specify reliability
+	characteristics. The following example uses the
+	<code class="literal">browse</code> option to receive messages without
+	removing them from a queue.</p><div class="example"><a name="id2722879"></a><p class="title"><b>Example 2.10. Browsing a Queue</b></p><div class="example-contents"><p>
+          Let's use the browse mode to receive messages without
+          removing them from the queue. First we send three messages to the
+          queue:
+        </p><pre class="screen">
+$ ./spout my-queue --content one
+$ ./spout my-queue --content two
+$ ./spout my-queue --content three
+        </pre><p>Now we use drain to get those messages, using the browse option:</p><pre class="screen">
+$ ./drain 'my-queue; {mode: browse}'
+Message(properties={spout-id:fbb93f30-0e82-4b6d-8c1d-be60eb132530:0}, content='one')
+Message(properties={spout-id:ab9e7c31-19b0-4455-8976-34abe83edc5f:0}, content='two')
+Message(properties={spout-id:ea75d64d-ea37-47f9-96a9-d38e01c97925:0}, content='three')
+        </pre><p>We can confirm the messages are still on the queue by repeating the drain:</p><pre class="screen">
+$ ./drain 'my-queue; {mode: browse}'
+Message(properties={spout-id:fbb93f30-0e82-4b6d-8c1d-be60eb132530:0}, content='one')
+Message(properties={spout-id:ab9e7c31-19b0-4455-8976-34abe83edc5f:0}, content='two')
+Message(properties={spout-id:ea75d64d-ea37-47f9-96a9-d38e01c97925:0}, content='three')
+        </pre></div></div><br class="example-break"></div><div class="section" title="2.4.3.4. x-bindings"><div class="titlepage"><div><div><h4 class="title"><a name="id2708209"></a>2.4.3.4. x-bindings</h4></div></div></div><p>Greater control over the AMQP 0-10 binding process can
+	be achieved by including an <code class="literal">x-bindings</code>
+	option in an address string.
+
+	For instance, the XML Exchange is an AMQP 0-10 custom exchange
+	provided by the Apache Qpid C++ broker. It allows messages to
+	be filtered using XQuery; queries can address either message
+	properties or XML content in the body of the message. The
+	xquery is specified in the arguments field of the AMQP 0-10
+	command. When using the messaging API an xquery can be
+	specified in and address that resolves to an XML exchange by
+	using the x-bindings property.</p><p>An instance of the XML Exchange must be added before it
+	can be used:</p><pre class="programlisting">
+$ qpid-config add exchange xml xml
+	</pre><p>When using the XML Exchange, a receiver provides an
+	XQuery as an x-binding argument. If the query contains a
+	context item (a path starting with <span class="quote">&#8220;<span class="quote">.</span>&#8221;</span>), then it
+	is applied to the content of the message, which must be
+	well-formed XML. For instance, <code class="literal">./weather</code> is
+	a valid XQuery, which matches any message in which the root
+	element is named <code class="literal">weather</code>. Here is an
+	address string that contains this query:</p><pre class="programlisting">
+xml; {
+ link: {
+  x-bindings: [{exchange:xml, key:weather, arguments:{xquery:"./weather"} }]
+ }
+}
+  </pre><p>When using longer queries with <span class="command"><strong>drain</strong></span>,
+	it is often useful to place the query in a file, and use
+	<span class="command"><strong>cat</strong></span> in the command line. We do this in the
+	following example.</p><div class="example"><a name="id2733650"></a><p class="title"><b>Example 2.11. Using the XML Exchange</b></p><div class="example-contents"><p>This example uses an x-binding that contains queries, which filter based on the content of XML messages. Here is an XQuery that we will use in this example:</p><pre class="programlisting">
+	  
+let $w := ./weather
+return $w/station = 'Raleigh-Durham International Airport (KRDU)'
+   and $w/temperature_f &gt; 50
+   and $w/temperature_f - $w/dewpoint &gt; 5
+   and $w/wind_speed_mph &gt; 7
+   and $w/wind_speed_mph &lt; 20 
+	</pre><p>We can specify this query in an x-binding to listen to messages that meet the criteria specified by the query:</p><p><span class="emphasis"><em>First Window:</em></span></p><pre class="screen">
+$ ./drain -f "xml; {link:{x-bindings:[{key:'weather',
+arguments:{xquery:\"$(cat rdu.xquery )\"}}]}}"
+	</pre><p>In another window, let's create an XML message that meets the criteria in the query, and place it in the file <code class="filename">rdu.xml</code>:</p><pre class="programlisting">
+
+&lt;weather&gt;
+  &lt;station&gt;Raleigh-Durham International Airport (KRDU)&lt;/station&gt;
+  &lt;wind_speed_mph&gt;16&lt;/wind_speed_mph&gt;
+  &lt;temperature_f&gt;70&lt;/temperature_f&gt;
+  &lt;dewpoint&gt;35&lt;/dewpoint&gt;
+&lt;/weather&gt;
+	</pre><p>Now let's use <span class="command"><strong>spout</strong></span> to send this message to the XML exchange:</p><p><span class="emphasis"><em>Second Window:</em></span></p><pre class="screen">
+spout --content "$(cat rdu.xml)" xml/weather
+	</pre><p>Returning to the first window, we see that the message has been received:</p><pre class="screen">$ ./drain -f "xml; {link:{x-bindings:[{exchange:'xml', key:'weather', arguments:{xquery:\"$(cat rdu.xquery )\"}}]}}"
+Message(properties={qpid.subject:weather, spout-id:31c431de-593f-4bec-a3dd-29717bd945d3:0},
+content='&lt;weather&gt;
+  &lt;station&gt;Raleigh-Durham International Airport (KRDU)&lt;/station&gt;
+  &lt;wind_speed_mph&gt;16&lt;/wind_speed_mph&gt;
+  &lt;temperature_f&gt;40&lt;/temperature_f&gt;
+  &lt;dewpoint&gt;35&lt;/dewpoint&gt;
+&lt;/weather&gt;') 
+	</pre></div></div><br class="example-break"></div><div class="section" title="2.4.3.5. Address String Options - Reference"><div class="titlepage"><div><div><h4 class="title"><a name="id2722490"></a>2.4.3.5. Address String Options - Reference</h4></div></div></div><div class="table"><a name="id2728179"></a><p class="title"><b>Table 2.1. Address String Options</b></p><div class="table-contents"><table summary="Address String Options" width="100%" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>option</th><th>value</th><th>semantics</th></tr></thead><tbody><tr><td>
+	        assert
+	      </td><td>
+	        one of: always, never, sender or receiver
+	      </td><td>
+	        Asserts that the properties specified in the node option
+	        match whatever the address resolves to. If they do not,
+	        resolution fails and an exception is raised. 
+	      </td></tr><tr><td>
+	        create
+	      </td><td>
+                one of: always, never, sender or receiver
+	      </td><td>
+	        Creates the node to which an address refers if it does
+	        not exist. No error is raised if the node does
+	        exist. The details of the node may be specified in the
+	        node option.
+	      </td></tr><tr><td>
+	        delete
+	      </td><td>
+                one of: always, never, sender or receiver
+	      </td><td>
+	        Delete the node when the sender or receiver is closed.
+	      </td></tr><tr><td>
+	        node
+	      </td><td>
+	        A nested map containing the entries shown in <a class="xref" href="ch02s04.html#table-node-properties" title="Table 2.2. Node Properties">Table 2.2, &#8220;Node Properties&#8221;</a>.
+	      </td><td>
+                Specifies properties of the node to which the address
+                refers. These are used in conjunction with the assert or
+                create options.
+	      </td></tr><tr><td>
+	        link
+	      </td><td>
+	        A nested map containing the entries shown in <a class="xref" href="ch02s04.html#table-link-properties" title="Table 2.3. Link Properties">Table 2.3, &#8220;Link Properties&#8221;</a>.
+	      </td><td>
+                Used to control the establishment of a conceptual link
+                from the client application to or from the target/source
+                address.
+	      </td></tr><tr><td>
+	        mode
+	      </td><td>
+	        one of: browse, consume
+	      </td><td>
+                This option is only of relevance for source addresses
+                that resolve to a queue. If browse is specified the
+                messages delivered to the receiver are left on the queue
+                rather than being removed. If consume is specified the
+                normal behaviour applies; messages are removed from the
+                queue once the client acknowledges their receipt.
+	      </td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="table-node-properties"></a><p class="title"><b>Table 2.2. Node Properties</b></p><div class="table-contents"><table summary="Node Properties" width="100%" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>property</th><th>value</th><th>semantics</th></tr></thead><tbody><tr><td>
+	        type
+	      </td><td>
+	        topic, queue
+	      </td><td>
+		Indicates the type of the node.
+	      </td></tr><tr><td>
+	        durable
+	      </td><td>
+	        True, False
+	      </td><td>
+                Indicates whether the node survives a loss of
+                volatile storage e.g. if the broker is restarted.
+	      </td></tr><tr><td>
+	        x-declare
+	      </td><td>
+	        A nested map whose values correspond to the valid fields
+	        on an AMQP 0-10 queue-declare or exchange-declare
+	        command.
+	      </td><td>
+                These values are used to fine tune the creation or
+                assertion process. Note however that they are protocol
+                specific.
+	      </td></tr><tr><td>
+	        x-bindings
+	      </td><td>
+	        A nested list in which each binding is represented by
+	        a map. The entries of the map for a binding contain
+	        the fields that describe an AMQP 0-10 binding. Here is
+	        the format for x-bindings:
+
+<pre class="programlisting">
+[
+ {
+  exchange: &lt;exchange&gt;,
+  queue: &lt;queue&gt;,
+  key: &lt;key&gt;,
+  arguments: {
+    &lt;key_1&gt;: &lt;value_1&gt;,
+    ...,
+    &lt;key_n&gt;: &lt;value_n&gt; }
+ },
+ ...
+]
+</pre>
+	      </td><td>
+                In conjunction with the create option, each of these
+                bindings is established as the address is resolved. In
+                conjunction with the assert option, the existence of
+                each of these bindings is verified during
+                resolution. Again, these are protocol specific.
+	      </td></tr></tbody></table></div></div><br class="table-break"><div class="table"><a name="table-link-properties"></a><p class="title"><b>Table 2.3. Link Properties</b></p><div class="table-contents"><table summary="Link Properties" width="100%" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>option</th><th>value</th><th>semantics</th></tr></thead><tbody><tr><td>
+	        reliability
+	      </td><td>
+	        one of: unreliable, at-least-once, at-most-once, exactly-once
+	      </td><td>
+		Reliability indicates the level of reliability that
+		the sender or receiver.  <code class="literal">unreliable</code>
+		and <code class="literal">at-most-once</code> are currently
+		treated as synonyms, and allow messages to be lost if
+		a broker crashes or the connection to a broker is
+		lost. <code class="literal">at-least-once</code> guarantees that
+		a message is not lost, but duplicates may be
+		received. <code class="literal">exactly-once</code> guarantees
+		that a message is not lost, and is delivered precisely
+		once. Currently only <code class="literal">unreliable</code>
+		and <code class="literal">at-least-once</code> are supported.
+                <sup>[<a name="id2681996" href="#ftn.id2681996" class="footnote">a</a>]</sup>
+	      </td></tr><tr><td>
+	        durable
+	      </td><td>
+	        True, False
+	      </td><td>
+                Indicates whether the link survives a loss of
+                volatile storage e.g. if the broker is restarted.
+	      </td></tr><tr><td>
+	        x-declare
+	      </td><td>
+	        A nested map whose values correspond to the valid fields
+	        of an AMQP 0-10 queue-declare command.
+	      </td><td>
+                These values can be used to customise the subscription
+	        queue in the case of receiving from an exchange. Note
+	        however that they are protocol specific.
+	      </td></tr><tr><td>
+	        x-subscribe
+	      </td><td>
+	        A nested map whose values correspond to the valid fields
+	        of an AMQP 0-10 message-subscribe command.
+	      </td><td>
+                These values can be used to customise the subscription.
+	      </td></tr><tr><td>
+	        x-bindings
+	      </td><td>
+	        A nested list each of whose entries is a map that may
+	        contain fields (queue, exchange, key and arguments)
+	        describing an AMQP 0-10 binding.
+	      </td><td>
+                These bindings are established during resolution
+                independent of the create option. They are considered
+                logically part of the linking process rather than of
+                node creation.
+	      </td></tr></tbody><tbody class="footnotes"><tr><td colspan="3"><div class="footnote"><p><sup>[<a name="ftn.id2681996" href="#id2681996" class="para">a</a>] </sup>If at-most-once is requested,
+                unreliable will be used and for durable messages on
+                durable queues there is the possibility that messages
+                will be redelivered; if exactly-once is requested,
+                at-most-once will be used and the application needs to
+                be able to deal with duplicates.</p></div></td></tr></tbody></table></div></div><br class="table-break"></div></div><div class="section" title="2.4.4. Address String Grammar"><div class="titlepage"><div><div><h3 class="title"><a name="section-address-string-bnf"></a>2.4.4. Address String Grammar</h3></div></div></div><p>This section provides a formal grammar for address strings.</p><p title="Tokens"><b>Tokens. </b>The following regular expressions define the tokens used
+      to parse address strings:</p><pre class="programlisting">
+LBRACE: \\{
+RBRACE: \\}
+LBRACK: \\[
+RBRACK: \\]
+COLON:  :
+SEMI:   ;
+SLASH:  /
+COMMA:  ,
+NUMBER: [+-]?[0-9]*\\.?[0-9]+
+ID:     [a-zA-Z_](?:[a-zA-Z0-9_-]*[a-zA-Z0-9_])?
+STRING: "(?:[^\\\\"]|\\\\.)*"|\'(?:[^\\\\\']|\\\\.)*\'
+ESC:    \\\\[^ux]|\\\\x[0-9a-fA-F][0-9a-fA-F]|\\\\u[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]
+SYM:    [.#*%@$^!+-]
+WSPACE: [ \\n\\r\\t]+
+</pre><p title="Grammar"><b>Grammar. </b>The formal grammar for addresses is given below:</p><pre class="programlisting">
+address := name [ SLASH subject ] [ ";" options ]
+   name := ( part | quoted )+
+subject := ( part | quoted | SLASH )*
+ quoted := STRING / ESC
+   part := LBRACE / RBRACE / COLON / COMMA / NUMBER / ID / SYM
+options := map
+    map := "{" ( keyval ( "," keyval )* )? "}"
+ keyval "= ID ":" value
+  value := NUMBER / STRING / ID / map / list
+   list := "[" ( value ( "," value )* )? "]"
+   </pre><p title="Address String Options"><b>Address String Options. </b>The address string options map supports the following parameters:</p><pre class="programlisting">
+&lt;name&gt; [ / &lt;subject&gt; ] ; {
+  create: always | sender | receiver | never,
+  delete: always | sender | receiver | never,
+  assert: always | sender | receiver | never,
+  mode: browse | consume,
+  node: {
+    type: queue | topic,
+    durable: True | False,
+    x-declare: { ... &lt;declare-overrides&gt; ... },
+    x-bindings: [&lt;binding_1&gt;, ... &lt;binding_n&gt;]
+  },
+  link: {
+    name: &lt;link-name&gt;,
+    durable: True | False,
+    reliability: unreliable | at-most-once | at-least-once | exactly-once,
+    x-declare: { ... &lt;declare-overrides&gt; ... },
+    x-bindings: [&lt;binding_1&gt;, ... &lt;binding_n&gt;],
+    x-subscribe: { ... &lt;subscribe-overrides&gt; ... }
+  }
+}
+</pre><div class="itemizedlist" title="Create, Delete, and Assert Policies"><p class="title"><b>Create, Delete, and Assert Policies</b></p><p>The create, delete, and assert policies specify who should
+      perfom the associated action:</p><ul class="itemizedlist" type="disc"><li class="listitem"><p><span class="emphasis"><em>always</em></span>: the action is performed by any messaging client</p></li><li class="listitem"><p><span class="emphasis"><em>sender</em></span>: the action is only performed by a sender</p></li><li class="listitem"><p><span class="emphasis"><em>receiver</em></span>: the action is only performed by a receiver</p></li><li class="listitem"><p><span class="emphasis"><em>never</em></span>: the action is never performed (this is the default)</p></li></ul></div><div class="itemizedlist" title="Node-Type"><p class="title"><b>Node-Type</b></p><p>The node-type is one of:</p><ul class="itemizedlist" type="disc"><li class="listitem"><p><span class="emphasis"><em>topic</em></span>: in the AMQP 0-10
+       mapping, a topic node defaults to the topic exchange, x-declare
+       may be used to specify other exchange types</p></li><li class="listitem"><p><span class="emphasis"><em>queue</em></span>: this is the default node-type</p></li></ul></div></div><div class="footnotes"><br><hr width="100" align="left"><div class="footnote"><p><sup>[<a name="ftn.id2727071" href="#id2727071" class="para">2</a>] </sup>In the programs we have just seen, we used
+      <code class="literal">amq.topic</code> as the default address if none is
+      passed in. This is the name of a standard exchange that always
+      exists on an AMQP 0-10 messaging broker.</p></div><div class="footnote"><p><sup>[<a name="ftn.id2711234" href="#id2711234" class="para">3</a>] </sup>The terms <span class="emphasis"><em>queue</em></span> and
+	   <span class="emphasis"><em>topic</em></span> here were chosen to align with
+	   their meaning in JMS. These two addressing 'patterns',
+	   queue and topic, are sometimes refered as point-to-point
+	   and publish-subscribe. AMQP 0-10 has an exchange type
+	   called a <span class="emphasis"><em>topic exchange</em></span>. When the term
+	   <span class="emphasis"><em>topic</em></span> occurs alone, it refers to a
+	   Messaging API topic, not the topic
+	   exchange.</p></div><div class="footnote"><p><sup>[<a name="ftn.id2728814" href="#id2728814" class="para">4</a>] </sup>There are exceptions to this rule; for instance,
+	    a receiver can use <code class="literal">browse</code> mode, which leaves
+	    messages on the queue for other receivers to
+	    read.</p></div><div class="footnote"><p><sup>[<a name="ftn.id2712715" href="#id2712715" class="para">5</a>] </sup>The AMQP 0-10 implementation is the only one
+          that currently exists.</p></div><div class="footnote"><p><sup>[<a name="ftn.id2733926" href="#id2733926" class="para">6</a>] </sup>In AMQP 0-10, messages are sent to
+          exchanges, and read from queues. The Messaging API also
+          allows a sender to send messages to a queue; internally,
+          Qpid implements this by sending the message to the default
+          exchange, with the name of the queue as the routing key. The
+          Messaging API also allows a receiver to receive messages
+          from a topic; internally, Qpid implements this by setting up
+          a private subscription queue for the receiver and binding
+          the subscription queue to the exchange that corresponds to
+          the topic.</p></div><div class="footnote"><p><sup>[<a name="ftn.id2738741" href="#id2738741" class="para">7</a>] </sup>Currently, the C++, Python, and .NET C#
+      implementations of <span class="command"><strong>drain</strong></span> and
+      <span class="command"><strong>spout</strong></span> have slightly different
+      options. This tutorial uses the C++ implementation. The
+      options will be reconciled in the near
+      future.</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch02s05.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">2.3. A Simple Messaging Program in .NET C# </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 2.5. Sender Capacity and Replay</td></tr></table></div></body></html>

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch02s05.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch02s05.html?rev=1097544&view=auto
==============================================================================
--- qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch02s05.html (added)
+++ qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch02s05.html Thu Apr 28 16:49:49 2011
@@ -0,0 +1,25 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>2.5. Sender Capacity and Replay</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="Programming in Apache Qpid"><link rel="up" href="ch02.html" title="Chapter 2. Using the Qpid Messaging API"><link rel="prev" href="ch02s04.html" title="2.4. Addresses"><link rel="next" href="ch02s06.html" title="2.6. Receiver Capacity (Prefetch)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.5. Sender Capacity and Replay</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s04.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Using the Qpid Messaging API</th><td width="20%" align="right"> <a accesskey="n" href="ch02s06.html">Next</a></td></tr></table><hr></
 div><div class="section" title="2.5. Sender Capacity and Replay"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="replay"></a>2.5. Sender Capacity and Replay</h2></div></div></div><p>The send method of a sender has an optional second parameter
+    that controls whether the send call is synchronous or not. A
+    synchronous send call will block until the broker has confirmed
+    receipt of the message. An asynchronous send call will return
+    before the broker confirms receipt of the message, allowing for
+    example further send calls to be made without waiting for a
+    roundtrip to the broker for each message. This is desirable where
+    increased throughput is important.</p><p>The sender maintains a list of sent messages whose receipt
+    has yet to be confirmed by the broker. The maximum number of such
+    messages that it will hold is defined by the capacity of the
+    sender, which can be set by the application. If an application
+    tries to send with a sender whose capacity is already fully used
+    up, the send call will block waiting for capacity regardless of
+    the value of the sync flag.</p><p>The sender can be queried for the available space (i.e. the
+    unused capacity), and for the current count of unsettled messages
+    (i.e. those held in the replay list pending confirmation by the
+    server). When the unsettled count is zero, all messages on that
+    sender have been successfully sent.</p><p>If the connection fails and is transparently reconnected
+    (see <a class="xref" href="ch02s10.html" title="2.10. Connection Options">Section 2.10, &#8220;Connection Options&#8221;</a> for details on how to control
+    this feature), the unsettled messages for each sender over that
+    connection will be re-transmitted. This provides a transparent
+    level of reliability. This feature can be controlled through the
+    link's reliability as defined in the address (see
+    <a class="xref" href="ch02s04.html#table-link-properties" title="Table 2.3. Link Properties">Table 2.3, &#8220;Link Properties&#8221;</a>). At present only
+    at-least-once guarantees are offered. </p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s04.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch02s06.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">2.4. Addresses </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 2.6. Receiver Capacity (Prefetch)</td></tr></table></div></body></html>

Added: qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch02s06.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch02s06.html?rev=1097544&view=auto
==============================================================================
--- qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch02s06.html (added)
+++ qpid/site/docs/books/0.10/Programming-In-Apache-Qpid/html/ch02s06.html Thu Apr 28 16:49:49 2011
@@ -0,0 +1,9 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>2.6. Receiver Capacity (Prefetch)</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="Programming in Apache Qpid"><link rel="up" href="ch02.html" title="Chapter 2. Using the Qpid Messaging API"><link rel="prev" href="ch02s05.html" title="2.5. Sender Capacity and Replay"><link rel="next" href="ch02s07.html" title="2.7. Acknowledging Received Messages"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.6. Receiver Capacity (Prefetch)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s05.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Using the Qpid Messaging API</th><td width="20%" align="right"> <a accesskey="n" href="ch02s07.html">Next</a>
 </td></tr></table><hr></div><div class="section" title="2.6. Receiver Capacity (Prefetch)"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="prefetch"></a>2.6. Receiver Capacity (Prefetch)</h2></div></div></div><p>By default, a receiver requests the next message from the
+    server in response to each fetch call, resulting in messages being
+    sent to the receiver one at a time. As in the case of sending, it
+    is often desirable to avoid this roundtrip for each message. This
+    can be achieved by allowing the receiver
+    to <em class="firstterm">prefetch</em> messages in anticipation of
+    fetch calls being made. The receiver needs to be able to store
+    these prefetched messages, the number it can hold is controlled by
+    the receivers capacity.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s05.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch02s07.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">2.5. Sender Capacity and Replay </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 2.7. Acknowledging Received Messages</td></tr></table></div></body></html>



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org


Mime
View raw message