You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by jo...@apache.org on 2010/06/24 20:50:25 UTC

svn commit: r957678 [3/11] - in /qpid/site/docs/books: 0.5/AMQP-Messaging-Broker-CPP-Book/html/ 0.5/AMQP-Messaging-Broker-CPP-Book/pdf/ 0.6/AMQP-Messaging-Broker-CPP-Book/html/ 0.6/AMQP-Messaging-Broker-CPP-Book/pdf/ 0.7/AMQP-Messaging-Broker-CPP-Book/...

Modified: qpid/site/docs/books/0.5/AMQP-Messaging-Broker-CPP-Book/html/ch02.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.5/AMQP-Messaging-Broker-CPP-Book/html/ch02.html?rev=957678&r1=957677&r2=957678&view=diff
==============================================================================
--- qpid/site/docs/books/0.5/AMQP-Messaging-Broker-CPP-Book/html/ch02.html (original)
+++ qpid/site/docs/books/0.5/AMQP-Messaging-Broker-CPP-Book/html/ch02.html Thu Jun 24 18:50:21 2010
@@ -1,257 +1,449 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 2.  AMQP compatibility</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="AMQP Messaging Broker (Implemented in C++)"><link rel="up" href="ch01.html" title="Chapter 1.  Running the AMQP Messaging Broker"><link rel="prev" href="ch01s09.html" title="9.  ACL"><link rel="next" href="ch02s02.html" title="2.  Interop table by AMQP specification version"></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. 
-      AMQP compatibility
-    </th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch01s09.html">Prev</a> </td><th width="60%" align="center">Chapter 1.             
-      Running the AMQP Messaging Broker
-    </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.  AMQP compatibility"><div class="titlepage"><div><div><h2 class="title"><a name="AMQP-Compatibility"></a>Chapter 2. 
-      AMQP compatibility
-    </h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="ch02.html#AMQPcompatibility-AMQPCompatibilityofQpidreleases-3A">1. 
-            AMQP
-            Compatibility of Qpid releases:
-          </a></span></dt><dt><span class="section"><a href="ch02s02.html">2. 
-            Interop
-            table by AMQP specification version
-          </a></span></dt></dl></div><p>
-            Qpid provides the most complete and compatible implementation
-            of AMQP. And is the most aggressive in implementing the latest
-            version of the specification.
-          </p><p>
-            There are two brokers:
-          </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>C++ with support for AMQP 0-10</p></li><li class="listitem"><p>Java with support for AMQP 0-8 and 0-9 (0-10 planned)</p></li></ul></div><p>
-            There are client libraries for C++, Java (JMS), .Net (written in
-            C#), python and ruby.
-          </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>All clients support 0-10 and interoperate with the C++
-            broker.
-            </p></li></ul></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>The JMS client supports 0-8, 0-9 and 0-10 and interoperates
-            with both brokers.
-            </p></li></ul></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>The python and ruby clients will also support all versions,
-            but the API is dynamically driven by the specification used and
-            so differs between versions. To work with the Java broker you
-            must use 0-8 or 0-9, to work with the C++ broker you must use
-            0-10.
-            </p></li></ul></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>There are two separate C# clients, one for 0-8 that
-            interoperates with the Java broker, one for 0-10 that
-            inteoperates with the C++ broker.
-            </p></li></ul></div><p>
-            QMF Management is supported in Ruby, Python, C++, and via QMan
-            for Java JMX &amp; WS-DM.
-          </p><div class="section" title="1.  AMQP Compatibility of Qpid releases:"><div class="titlepage"><div><div><h3 class="title"><a name="AMQPcompatibility-AMQPCompatibilityofQpidreleases-3A"></a>1. 
-            AMQP
-            Compatibility of Qpid releases:
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 2.  Managing the AMQP Messaging Broker</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="AMQP Messaging Broker (Implemented in C++)"><link rel="up" href="index.html" title="AMQP Messaging Broker (Implemented in C++)"><link rel="prev" href="ch01s11.html" title="1.11.  Qpid Interoperability Documentation"><link rel="next" href="ch02s02.html" title="2.2.  Qpid Management Framework"></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.             
+      Managing the AMQP Messaging Broker
+    </th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch01s11.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.  Managing the AMQP Messaging Broker"><div class="titlepage"><div><div><h2 class="title"><a name="chapter-Managing-CPP-Broker"></a>Chapter 2.             
+      Managing the AMQP Messaging Broker
+    </h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="ch02.html#section-Managing-CPP-Broker">2.1.  Managing the C++ Broker </a></span></dt><dd><dl><dt><span class="section"><a href="ch02.html#MgmtC-2B-2B-Usingqpidconfig">2.1.1. 
+            Using qpid-config
+          </a></span></dt><dt><span class="section"><a href="ch02.html#MgmtC-2B-2B-Usingqpidroute">2.1.2. 
+            Using qpid-route
+          </a></span></dt><dt><span class="section"><a href="ch02.html#MgmtC-2B-2B-Usingqpidtool">2.1.3. 
+            Using qpid-tool
+          </a></span></dt><dt><span class="section"><a href="ch02.html#MgmtC-2B-2B-Usingqpidprintevents">2.1.4. 
+            Using
+            qpid-printevents
+          </a></span></dt></dl></dd><dt><span class="section"><a href="ch02s02.html">2.2. 
+      Qpid Management Framework
+    </a></span></dt><dd><dl><dt><span class="section"><a href="ch02s02.html#QpidManagementFramework-WhatIsQMF">2.2.1. 
+            What Is QMF
+          </a></span></dt><dt><span class="section"><a href="ch02s02.html#QpidManagementFramework-GettingStartedwithQMF">2.2.2. 
+            Getting
+            Started with QMF
+          </a></span></dt><dt><span class="section"><a href="ch02s02.html#QpidManagementFramework-QMFConcepts">2.2.3. 
+            QMF Concepts
+          </a></span></dt><dt><span class="section"><a href="ch02s02.html#QpidManagementFramework-TheQMFProtocol">2.2.4. 
+            The QMF
+            Protocol
+          </a></span></dt><dt><span class="section"><a href="ch02s02.html#QpidManagementFramework-HowtoWriteaQMFConsole">2.2.5. 
+            How
+            to Write a QMF Console
+          </a></span></dt><dt><span class="section"><a href="ch02s02.html#QpidManagementFramework-HowtoWriteaQMFAgent">2.2.6. 
+            How to
+            Write a QMF Agent
+          </a></span></dt></dl></dd><dt><span class="section"><a href="ch02s03.html">2.3. 
+      QMF Python Console Tutorial
+    </a></span></dt><dd><dl><dt><span class="section"><a href="ch02s03.html#QMFPythonConsoleTutorial-PrerequisiteInstallQpidMessaging">2.3.1. 
+            Prerequisite
+            - Install Qpid Messaging
+          </a></span></dt><dt><span class="section"><a href="ch02s03.html#QMFPythonConsoleTutorial-SynchronousConsoleOperations">2.3.2. 
+            Synchronous
+            Console Operations
+          </a></span></dt><dt><span class="section"><a href="ch02s03.html#QMFPythonConsoleTutorial-AsynchronousConsoleOperations">2.3.3. 
+            Asynchronous
+            Console Operations
+          </a></span></dt><dt><span class="section"><a href="ch02s03.html#QMFPythonConsoleTutorial-DiscoveringwhatKindsofObjectsareAvailable">2.3.4. 
+            Discovering what Kinds of Objects are Available
+          </a></span></dt></dl></dd></dl></div><div class="section" title="2.1.  Managing the C++ Broker"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="section-Managing-CPP-Broker"></a>2.1.  Managing the C++ Broker </h2></div></div></div><p>
+            There are quite a few ways to interact with the C++ broker. The
+            command line tools
+            include:
+          </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>qpid-route - used to configure federation (a set of federated
+            brokers)
+            </p></li><li class="listitem"><p>qpid-config - used to configure queues, exchanges, bindings
+            and list them etc
+            </p></li><li class="listitem"><p>qpid-tool - used to view management information/statistics
+            and call any management actions on the broker
+            </p></li><li class="listitem"><p>qpid-printevents - used to receive and print QMF events
+            </p></li></ul></div><div class="section" title="2.1.1.  Using qpid-config"><div class="titlepage"><div><div><h3 class="title"><a name="MgmtC-2B-2B-Usingqpidconfig"></a>2.1.1. 
+            Using qpid-config
           </h3></div></div></div><p>
-            Qpid implements the AMQP Specification, and as the specification
-            has progressed Qpid is keeping up with the updates. This means
-            that different Qpid versions support different versions of AMQP.
-            Here is a simple guide on what use.
-          </p><p>
-            Here is a matrix that describes the different versions supported
-            by each release. The status symbols are interpreted as follows:
-          </p><div class="variablelist"><dl><dt><span class="term">Y</span></dt><dd><p>supported</p></dd><dt><span class="term">N</span></dt><dd><p>unsupported</p></dd><dt><span class="term">IP</span></dt><dd><p>in progress</p></dd><dt><span class="term">P</span></dt><dd><p>planned</p></dd></dl></div><div class="table"><a name="id2916252"></a><p class="title"><b>Table 2.1. AMQP Version Support by Qpid Release</b></p><div class="table-contents"><table summary="AMQP Version Support by Qpid Release" border="1"><colgroup><col><col><col><col><col><col></colgroup><tbody><tr><td>
-                  Component
-                </td><td>
-                  Spec
-                </td><td>
-                   
-                </td><td>
-                   
-                </td><td>
-                   
-                </td><td>
-                   
-                </td></tr><tr><td>
-                   
-                </td><td>
-                   
-                </td><td>
-                  M2.1
-                </td><td>
-                  M3
-                </td><td>
-                  M4
-                </td><td>
-                  0.5
-                </td></tr><tr><td>
-                  java client
-                </td><td>
-                  0-10
-                </td><td>
-                   
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td></tr><tr><td>
-                   
-                </td><td>
-                  0-9
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td></tr><tr><td>
-                   
-                </td><td>
-                  0-8
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td></tr><tr><td>
-                  java broker
-                </td><td>
-                  0-10
-                </td><td>
-                   
-                </td><td>
-                   
-                </td><td>
-                   
-                </td><td>
-                  P
-                </td></tr><tr><td>
-                   
-                </td><td>
-                  0-9
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td></tr><tr><td>
-                   
-                </td><td>
-                  0-8
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td></tr><tr><td>
-                  c++ client/broker
-                </td><td>
-                  0-10
-                </td><td>
-                   
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td></tr><tr><td>
-                   
-                </td><td>
-                  0-9
-                </td><td>
-                  Y
-                </td><td>
-                   
-                </td><td>
-                   
-                </td><td>
-                   
-                </td></tr><tr><td>
-                  python client
-                </td><td>
-                  0-10
-                </td><td>
-                   
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td></tr><tr><td>
-                   
-                </td><td>
-                  0-9
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td></tr><tr><td>
-                   
-                </td><td>
-                  0-8
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td></tr><tr><td>
-                  ruby client
-                </td><td>
-                  0-10
-                </td><td>
-                   
-                </td><td>
-                   
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td></tr><tr><td>
-                   
-                </td><td>
-                  0-8
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td></tr><tr><td>
-                  C# client
-                </td><td>
-                  0-10
-                </td><td>
-                   
-                </td><td>
-                   
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td></tr><tr><td>
-                   
-                </td><td>
-                  0-8
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td><td>
-                  Y
-                </td></tr></tbody></table></div></div><br class="table-break"></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch01s09.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch01.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch02s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">9. 
-      ACL
-   </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 2. 
-            Interop
-            table by AMQP specification version
-          </td></tr></table></div></body></html>
+            This utility can be used to create queues exchanges and bindings,
+            both durable and transient. Always check for latest options by
+            running --help command.
+          </p><pre class="programlisting">
+$ qpid-config --help
+Usage:  qpid-config [OPTIONS]
+        qpid-config [OPTIONS] exchanges [filter-string]
+        qpid-config [OPTIONS] queues    [filter-string]
+        qpid-config [OPTIONS] add exchange &lt;type&gt; &lt;name&gt; [AddExchangeOptions]
+        qpid-config [OPTIONS] del exchange &lt;name&gt;
+        qpid-config [OPTIONS] add queue &lt;name&gt; [AddQueueOptions]
+        qpid-config [OPTIONS] del queue &lt;name&gt;
+        qpid-config [OPTIONS] bind   &lt;exchange-name&gt; &lt;queue-name&gt; [binding-key]
+        qpid-config [OPTIONS] unbind &lt;exchange-name&gt; &lt;queue-name&gt; [binding-key]
+
+Options:
+    -b [ --bindings ]                         Show bindings in queue or exchange list
+    -a [ --broker-addr ] Address (localhost)  Address of qpidd broker
+         broker-addr is in the form:   [username/password@] hostname | ip-address [:&lt;port&gt;]
+         ex:  localhost, 10.1.1.7:10000, broker-host:10000, guest/guest@localhost
+
+Add Queue Options:
+    --durable            Queue is durable
+    --cluster-durable    Queue becomes durable if there is only one functioning cluster node
+    --file-count N (8)   Number of files in queue's persistence journal
+    --file-size  N (24)  File size in pages (64Kib/page)
+    --max-queue-size N   Maximum in-memory queue size as bytes
+    --max-queue-count N  Maximum in-memory queue size as a number of messages
+    --limit-policy [none | reject | flow-to-disk | ring | ring-strict]
+                         Action taken when queue limit is reached:
+                             none (default) - Use broker's default policy
+                             reject         - Reject enqueued messages
+                             flow-to-disk   - Page messages to disk
+                             ring           - Replace oldest unacquired message with new
+                             ring-strict    - Replace oldest message, reject if oldest is acquired
+    --order [fifo | lvq | lvq-no-browse]
+                         Set queue ordering policy:
+                             fifo (default) - First in, first out
+                             lvq            - Last Value Queue ordering, allows queue browsing
+                             lvq-no-browse  - Last Value Queue ordering, browsing clients may lose data
+    --generate-queue-events N
+                         If set to 1, every enqueue will generate an event that can be processed by
+                         registered listeners (e.g. for replication). If set to 2, events will be
+                         generated for enqueues and dequeues
+
+Add Exchange Options:
+    --durable    Exchange is durable
+    --sequence   Exchange will insert a 'qpid.msg_sequence' field in the message header
+                 with a value that increments for each message forwarded.
+    --ive        Exchange will behave as an 'initial-value-exchange', keeping a reference
+                 to the last message forwarded and enqueuing that message to newly bound
+                 queues.
+</pre><p>
+            Get the summary page
+          </p><pre class="programlisting">
+$ qpid-config
+Total Exchanges: 6
+          topic: 2
+        headers: 1
+         fanout: 1
+         direct: 2
+   Total Queues: 7
+        durable: 0
+    non-durable: 7
+</pre><p>
+            List the queues
+          </p><pre class="programlisting">
+$ qpid-config queues
+Queue Name                                  Attributes
+=================================================================
+pub_start                                  
+pub_done                                   
+sub_ready                                  
+sub_done                                   
+perftest0                                   --durable
+reply-dhcp-100-18-254.bos.redhat.com.20713  auto-del excl
+topic-dhcp-100-18-254.bos.redhat.com.20713  auto-del excl
+
+</pre><p>
+            List the exchanges with bindings
+          </p><pre class="programlisting">
+$ ./qpid-config -b exchanges
+Exchange '' (direct)
+    bind pub_start =&gt; pub_start
+    bind pub_done =&gt; pub_done
+    bind sub_ready =&gt; sub_ready
+    bind sub_done =&gt; sub_done
+    bind perftest0 =&gt; perftest0
+    bind mgmt-3206ff16-fb29-4a30-82ea-e76f50dd7d15 =&gt; mgmt-3206ff16-fb29-4a30-82ea-e76f50dd7d15
+    bind repl-3206ff16-fb29-4a30-82ea-e76f50dd7d15 =&gt; repl-3206ff16-fb29-4a30-82ea-e76f50dd7d15
+Exchange 'amq.direct' (direct)
+    bind repl-3206ff16-fb29-4a30-82ea-e76f50dd7d15 =&gt; repl-3206ff16-fb29-4a30-82ea-e76f50dd7d15
+    bind repl-df06c7a6-4ce7-426a-9f66-da91a2a6a837 =&gt; repl-df06c7a6-4ce7-426a-9f66-da91a2a6a837
+    bind repl-c55915c2-2fda-43ee-9410-b1c1cbb3e4ae =&gt; repl-c55915c2-2fda-43ee-9410-b1c1cbb3e4ae
+Exchange 'amq.topic' (topic)
+Exchange 'amq.fanout' (fanout)
+Exchange 'amq.match' (headers)
+Exchange 'qpid.management' (topic)
+    bind mgmt.# =&gt; mgmt-3206ff16-fb29-4a30-82ea-e76f50dd7d15
+</pre></div><div class="section" title="2.1.2.  Using qpid-route"><div class="titlepage"><div><div><h3 class="title"><a name="MgmtC-2B-2B-Usingqpidroute"></a>2.1.2. 
+            Using qpid-route
+          </h3></div></div></div><p>
+            This utility is to create federated networks of brokers, This
+            allows you for forward messages between brokers in a network.
+            Messages can be routed statically (using "qpid-route route add")
+            where the bindings that control message forwarding are supplied
+            in the route. Message routing can also be dynamic (using
+            "qpid-route dynamic add") where the messages are automatically
+            forwarded to clients based on their bindings to the local broker.
+          </p><pre class="programlisting">
+$ qpid-route
+Usage:  qpid-route [OPTIONS] dynamic add &lt;dest-broker&gt; &lt;src-broker&gt; &lt;exchange&gt; [tag] [exclude-list]
+        qpid-route [OPTIONS] dynamic del &lt;dest-broker&gt; &lt;src-broker&gt; &lt;exchange&gt;
+
+        qpid-route [OPTIONS] route add   &lt;dest-broker&gt; &lt;src-broker&gt; &lt;exchange&gt; &lt;routing-key&gt; [tag] [exclude-list]
+        qpid-route [OPTIONS] route del   &lt;dest-broker&gt; &lt;src-broker&gt; &lt;exchange&gt; &lt;routing-key&gt;
+        qpid-route [OPTIONS] queue add   &lt;dest-broker&gt; &lt;src-broker&gt; &lt;exchange&gt; &lt;queue&gt;
+        qpid-route [OPTIONS] queue del   &lt;dest-broker&gt; &lt;src-broker&gt; &lt;exchange&gt; &lt;queue&gt;
+        qpid-route [OPTIONS] route list  [&lt;dest-broker&gt;]
+        qpid-route [OPTIONS] route flush [&lt;dest-broker&gt;]
+        qpid-route [OPTIONS] route map   [&lt;broker&gt;]
+
+        qpid-route [OPTIONS] link add  &lt;dest-broker&gt; &lt;src-broker&gt;
+        qpid-route [OPTIONS] link del  &lt;dest-broker&gt; &lt;src-broker&gt;
+        qpid-route [OPTIONS] link list [&lt;dest-broker&gt;]
+
+Options:
+    -v [ --verbose ]         Verbose output
+    -q [ --quiet ]           Quiet output, don't print duplicate warnings
+    -d [ --durable ]         Added configuration shall be durable
+    -e [ --del-empty-link ]  Delete link after deleting last route on the link
+    -s [ --src-local ]       Make connection to source broker (push route)
+    -t &lt;transport&gt; [ --transport &lt;transport&gt;]
+                             Specify transport to use for links, defaults to tcp
+
+  dest-broker and src-broker are in the form:  [username/password@] hostname | ip-address [:&lt;port&gt;]
+  ex:  localhost, 10.1.1.7:10000, broker-host:10000, guest/guest@localhost
+</pre><p>
+            A few examples:
+          </p><pre class="programlisting">
+qpid-route dynamic add host1 host2 fed.topic
+qpid-route dynamic add host2 host1 fed.topic
+
+qpid-route -v route add host1 host2 hub1.topic hub2.topic.stock.buy
+qpid-route -v route add host1 host2 hub1.topic hub2.topic.stock.sell
+qpid-route -v route add host1 host2 hub1.topic 'hub2.topic.stock.#'
+qpid-route -v route add host1 host2 hub1.topic 'hub2.#'
+qpid-route -v route add host1 host2 hub1.topic 'hub2.topic.#'
+qpid-route -v route add host1 host2 hub1.topic 'hub2.global.#'
+</pre><p>
+            The link map feature can be used to display the entire federated
+            network configuration by supplying a single broker as an entry
+            point:
+          </p><pre class="programlisting">
+$ qpid-route route map localhost:10001
+
+Finding Linked Brokers:
+    localhost:10001... Ok
+    localhost:10002... Ok
+    localhost:10003... Ok
+    localhost:10004... Ok
+    localhost:10005... Ok
+    localhost:10006... Ok
+    localhost:10007... Ok
+    localhost:10008... Ok
+
+Dynamic Routes:
+
+  Exchange fed.topic:
+    localhost:10002 &lt;=&gt; localhost:10001
+    localhost:10003 &lt;=&gt; localhost:10002
+    localhost:10004 &lt;=&gt; localhost:10002
+    localhost:10005 &lt;=&gt; localhost:10002
+    localhost:10006 &lt;=&gt; localhost:10005
+    localhost:10007 &lt;=&gt; localhost:10006
+    localhost:10008 &lt;=&gt; localhost:10006
+
+  Exchange fed.direct:
+    localhost:10002  =&gt; localhost:10001
+    localhost:10004  =&gt; localhost:10003
+    localhost:10003  =&gt; localhost:10002
+    localhost:10001  =&gt; localhost:10004
+
+Static Routes:
+
+  localhost:10003(ex=amq.direct) &lt;= localhost:10005(ex=amq.direct) key=rkey
+  localhost:10003(ex=amq.direct) &lt;= localhost:10005(ex=amq.direct) key=rkey2
+</pre></div><div class="section" title="2.1.3.  Using qpid-tool"><div class="titlepage"><div><div><h3 class="title"><a name="MgmtC-2B-2B-Usingqpidtool"></a>2.1.3. 
+            Using qpid-tool
+          </h3></div></div></div><p>
+            This utility provided a telnet style interface to be able to
+            view, list all stats and action
+            all the methods. Simple capture below. Best to just play with it
+            and mail the list if you have
+            questions or want features added.
+          </p><pre class="programlisting">
+qpid:
+qpid: help
+Management Tool for QPID
+Commands:
+    list                            - Print summary of existing objects by class
+    list &lt;className&gt;                - Print list of objects of the specified class
+    list &lt;className&gt; all            - Print contents of all objects of specified class
+    list &lt;className&gt; active         - Print contents of all non-deleted objects of specified class
+    list &lt;list-of-IDs&gt;              - Print contents of one or more objects (infer className)
+    list &lt;className&gt; &lt;list-of-IDs&gt;  - Print contents of one or more objects
+        list is space-separated, ranges may be specified (i.e. 1004-1010)
+    call &lt;ID&gt; &lt;methodName&gt; &lt;args&gt; - Invoke a method on an object
+    schema                          - Print summary of object classes seen on the target
+    schema &lt;className&gt;              - Print details of an object class
+    set time-format short           - Select short timestamp format (default)
+    set time-format long            - Select long timestamp format
+    quit or ^D                      - Exit the program
+qpid: list
+Management Object Types:
+    ObjectType     Active  Deleted
+    ================================
+    qpid.binding   21      0
+    qpid.broker    1       0
+    qpid.client    1       0
+    qpid.exchange  6       0
+    qpid.queue     13      0
+    qpid.session   4       0
+    qpid.system    1       0
+    qpid.vhost     1       0
+qpid: list qpid.system
+Objects of type qpid.system
+    ID    Created   Destroyed  Index
+    ==================================
+    1000  21:00:02  -          host
+qpid: list 1000
+Object of type qpid.system: (last sample time: 21:26:02)
+    Type    Element   1000
+    =======================================================
+    config  sysId     host
+    config  osName    Linux
+    config  nodeName  localhost.localdomain
+    config  release   2.6.24.4-64.fc8
+    config  version   #1 SMP Sat Mar 29 09:15:49 EDT 2008
+    config  machine   x86_64
+qpid: schema queue
+Schema for class 'qpid.queue':
+    Element                Type          Unit         Access      Notes   Description
+    ===================================================================================================================
+    vhostRef               reference                  ReadCreate  index
+    name                   short-string               ReadCreate  index
+    durable                boolean                    ReadCreate
+    autoDelete             boolean                    ReadCreate
+    exclusive              boolean                    ReadCreate
+    arguments              field-table                ReadOnly            Arguments supplied in queue.declare
+    storeRef               reference                  ReadOnly            Reference to persistent queue (if durable)
+    msgTotalEnqueues       uint64        message                          Total messages enqueued
+    msgTotalDequeues       uint64        message                          Total messages dequeued
+    msgTxnEnqueues         uint64        message                          Transactional messages enqueued
+    msgTxnDequeues         uint64        message                          Transactional messages dequeued
+    msgPersistEnqueues     uint64        message                          Persistent messages enqueued
+    msgPersistDequeues     uint64        message                          Persistent messages dequeued
+    msgDepth               uint32        message                          Current size of queue in messages
+    msgDepthHigh           uint32        message                          Current size of queue in messages (High)
+    msgDepthLow            uint32        message                          Current size of queue in messages (Low)
+    byteTotalEnqueues      uint64        octet                            Total messages enqueued
+    byteTotalDequeues      uint64        octet                            Total messages dequeued
+    byteTxnEnqueues        uint64        octet                            Transactional messages enqueued
+    byteTxnDequeues        uint64        octet                            Transactional messages dequeued
+    bytePersistEnqueues    uint64        octet                            Persistent messages enqueued
+    bytePersistDequeues    uint64        octet                            Persistent messages dequeued
+    byteDepth              uint32        octet                            Current size of queue in bytes
+    byteDepthHigh          uint32        octet                            Current size of queue in bytes (High)
+    byteDepthLow           uint32        octet                            Current size of queue in bytes (Low)
+    enqueueTxnStarts       uint64        transaction                      Total enqueue transactions started
+    enqueueTxnCommits      uint64        transaction                      Total enqueue transactions committed
+    enqueueTxnRejects      uint64        transaction                      Total enqueue transactions rejected
+    enqueueTxnCount        uint32        transaction                      Current pending enqueue transactions
+    enqueueTxnCountHigh    uint32        transaction                      Current pending enqueue transactions (High)
+    enqueueTxnCountLow     uint32        transaction                      Current pending enqueue transactions (Low)
+    dequeueTxnStarts       uint64        transaction                      Total dequeue transactions started
+    dequeueTxnCommits      uint64        transaction                      Total dequeue transactions committed
+    dequeueTxnRejects      uint64        transaction                      Total dequeue transactions rejected
+    dequeueTxnCount        uint32        transaction                      Current pending dequeue transactions
+    dequeueTxnCountHigh    uint32        transaction                      Current pending dequeue transactions (High)
+    dequeueTxnCountLow     uint32        transaction                      Current pending dequeue transactions (Low)
+    consumers              uint32        consumer                         Current consumers on queue
+    consumersHigh          uint32        consumer                         Current consumers on queue (High)
+    consumersLow           uint32        consumer                         Current consumers on queue (Low)
+    bindings               uint32        binding                          Current bindings
+    bindingsHigh           uint32        binding                          Current bindings (High)
+    bindingsLow            uint32        binding                          Current bindings (Low)
+    unackedMessages        uint32        message                          Messages consumed but not yet acked
+    unackedMessagesHigh    uint32        message                          Messages consumed but not yet acked (High)
+    unackedMessagesLow     uint32        message                          Messages consumed but not yet acked (Low)
+    messageLatencySamples  delta-time    nanosecond                       Broker latency through this queue (Samples)
+    messageLatencyMin      delta-time    nanosecond                       Broker latency through this queue (Min)
+    messageLatencyMax      delta-time    nanosecond                       Broker latency through this queue (Max)
+    messageLatencyAverage  delta-time    nanosecond                       Broker latency through this queue (Average)
+Method 'purge' Discard all messages on queue
+qpid: list queue
+Objects of type qpid.queue
+    ID    Created   Destroyed  Index
+    ===========================================================================
+    1012  21:08:13  -          1002.pub_start
+    1014  21:08:13  -          1002.pub_done
+    1016  21:08:13  -          1002.sub_ready
+    1018  21:08:13  -          1002.sub_done
+    1020  21:08:13  -          1002.perftest0
+    1038  21:09:08  -          1002.mgmt-3206ff16-fb29-4a30-82ea-e76f50dd7d15
+    1040  21:09:08  -          1002.repl-3206ff16-fb29-4a30-82ea-e76f50dd7d15
+    1046  21:09:32  -          1002.mgmt-df06c7a6-4ce7-426a-9f66-da91a2a6a837
+    1048  21:09:32  -          1002.repl-df06c7a6-4ce7-426a-9f66-da91a2a6a837
+    1054  21:10:01  -          1002.mgmt-c55915c2-2fda-43ee-9410-b1c1cbb3e4ae
+    1056  21:10:01  -          1002.repl-c55915c2-2fda-43ee-9410-b1c1cbb3e4ae
+    1063  21:26:00  -          1002.mgmt-8d621997-6356-48c3-acab-76a37081d0f3
+    1065  21:26:00  -          1002.repl-8d621997-6356-48c3-acab-76a37081d0f3
+qpid: list 1020
+Object of type qpid.queue: (last sample time: 21:26:02)
+    Type    Element                1020
+    ==========================================================================
+    config  vhostRef               1002
+    config  name                   perftest0
+    config  durable                False
+    config  autoDelete             False
+    config  exclusive              False
+    config  arguments              {'qpid.max_size': 0, 'qpid.max_count': 0}
+    config  storeRef               NULL
+    inst    msgTotalEnqueues       500000 messages
+    inst    msgTotalDequeues       500000
+    inst    msgTxnEnqueues         0
+    inst    msgTxnDequeues         0
+    inst    msgPersistEnqueues     0
+    inst    msgPersistDequeues     0
+    inst    msgDepth               0
+    inst    msgDepthHigh           0
+    inst    msgDepthLow            0
+    inst    byteTotalEnqueues      512000000 octets
+    inst    byteTotalDequeues      512000000
+    inst    byteTxnEnqueues        0
+    inst    byteTxnDequeues        0
+    inst    bytePersistEnqueues    0
+    inst    bytePersistDequeues    0
+    inst    byteDepth              0
+    inst    byteDepthHigh          0
+    inst    byteDepthLow           0
+    inst    enqueueTxnStarts       0 transactions
+    inst    enqueueTxnCommits      0
+    inst    enqueueTxnRejects      0
+    inst    enqueueTxnCount        0
+    inst    enqueueTxnCountHigh    0
+    inst    enqueueTxnCountLow     0
+    inst    dequeueTxnStarts       0
+    inst    dequeueTxnCommits      0
+    inst    dequeueTxnRejects      0
+    inst    dequeueTxnCount        0
+    inst    dequeueTxnCountHigh    0
+    inst    dequeueTxnCountLow     0
+    inst    consumers              0 consumers
+    inst    consumersHigh          0
+    inst    consumersLow           0
+    inst    bindings               1 binding
+    inst    bindingsHigh           1
+    inst    bindingsLow            1
+    inst    unackedMessages        0 messages
+    inst    unackedMessagesHigh    0
+    inst    unackedMessagesLow     0
+    inst    messageLatencySamples  0
+    inst    messageLatencyMin      0
+    inst    messageLatencyMax      0
+    inst    messageLatencyAverage  0
+qpid:
+</pre></div><div class="section" title="2.1.4.  Using qpid-printevents"><div class="titlepage"><div><div><h3 class="title"><a name="MgmtC-2B-2B-Usingqpidprintevents"></a>2.1.4. 
+            Using
+            qpid-printevents
+          </h3></div></div></div><p>
+            This utility connects to one or more brokers and collects events,
+            printing out a line per event.
+          </p><pre class="programlisting">
+$ qpid-printevents --help
+Usage: qpid-printevents [options] [broker-addr]...
+
+Collect and print events from one or more Qpid message brokers.  If no broker-
+addr is supplied, qpid-printevents will connect to 'localhost:5672'. broker-
+addr is of the form:  [username/password@] hostname | ip-address [:&lt;port&gt;] ex:
+localhost, 10.1.1.7:10000, broker-host:10000, guest/guest@localhost
+
+Options:
+  -h, --help  show this help message and exit
+</pre><p>
+            You get the idea... have fun!
+          </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch01s11.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">1.11. 
+      Qpid Interoperability Documentation
+     </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 2.2. 
+      Qpid Management Framework
+    </td></tr></table></div></body></html>

Modified: qpid/site/docs/books/0.5/AMQP-Messaging-Broker-CPP-Book/html/ch02s02.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/0.5/AMQP-Messaging-Broker-CPP-Book/html/ch02s02.html?rev=957678&r1=957677&r2=957678&view=diff
==============================================================================
--- qpid/site/docs/books/0.5/AMQP-Messaging-Broker-CPP-Book/html/ch02s02.html (original)
+++ qpid/site/docs/books/0.5/AMQP-Messaging-Broker-CPP-Book/html/ch02s02.html Thu Jun 24 18:50:21 2010
@@ -1,155 +1,586 @@
-<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>2.  Interop table by AMQP specification version</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="AMQP Messaging Broker (Implemented in C++)"><link rel="up" href="ch02.html" title="Chapter 2.  AMQP compatibility"><link rel="prev" href="ch02.html" title="Chapter 2.  AMQP compatibility"><link rel="next" href="ch03.html" title="Chapter 3.  Qpid Interoperability Documentation"></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. 
-            Interop
-            table by AMQP specification version
-          </th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02.html">Prev</a> </td><th width="60%" align="center">Chapter 2. 
-      AMQP compatibility
-    </th><td width="20%" align="right"> <a accesskey="n" href="ch03.html">Next</a></td></tr></table><hr></div><div class="section" title="2.  Interop table by AMQP specification version"><div class="titlepage"><div><div><h3 class="title"><a name="AMQPcompatibility-InteroptablebyAMQPspecificationversion"></a>2. 
-            Interop
-            table by AMQP specification version
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>2.2.  Qpid Management Framework</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2"><link rel="home" href="index.html" title="AMQP Messaging Broker (Implemented in C++)"><link rel="up" href="ch02.html" title="Chapter 2.  Managing the AMQP Messaging Broker"><link rel="prev" href="ch02.html" title="Chapter 2.  Managing the AMQP Messaging Broker"><link rel="next" href="ch02s03.html" title="2.3.  QMF Python Console Tutorial"></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. 
+      Qpid Management Framework
+    </th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02.html">Prev</a> </td><th width="60%" align="center">Chapter 2.             
+      Managing the AMQP Messaging Broker
+    </th><td width="20%" align="right"> <a accesskey="n" href="ch02s03.html">Next</a></td></tr></table><hr></div><div class="section" title="2.2.  Qpid Management Framework"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2905169"></a>2.2. 
+      Qpid Management Framework
+    </h2></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
+                <a class="xref" href="ch02s02.html#QpidManagementFramework-WhatIsQMF" title="2.2.1.  What Is QMF">Section 2.2.1, &#8220;
+            What Is QMF
+          &#8221;</a>
+              </p></li><li class="listitem"><p>
+                <a class="xref" href="ch02s02.html#QpidManagementFramework-GettingStartedwithQMF" title="2.2.2.  Getting Started with QMF">Section 2.2.2, &#8220;
+            Getting
+            Started with QMF
+          &#8221;</a>
+              </p></li><li class="listitem"><p>
+                <a class="xref" href="ch02s02.html#QpidManagementFramework-QMFConcepts" title="2.2.3.  QMF Concepts">Section 2.2.3, &#8220;
+            QMF Concepts
+          &#8221;</a>
+              </p></li><li class="listitem"><p>
+                </p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p>
+                    <a class="xref" href="ch02s02.html#QpidManagementFramework-Console-2CAgent-2CandBroker" title="2.2.3.1.  Console, Agent, and Broker">Section 2.2.3.1, &#8220;
+            Console,
+            Agent, and Broker
+          &#8221;</a>
+                  </p></li><li class="listitem"><p>
+                    <a class="xref" href="ch02s02.html#QpidManagementFramework-Schema" title="2.2.3.2.  Schema">Section 2.2.3.2, &#8220;
+            Schema
+          &#8221;</a>
+                  </p></li><li class="listitem"><p>
+                    <a class="xref" href="ch02s02.html#QpidManagementFramework-ClassKeysandClassVersioning" title="2.2.3.3.  Class Keys and Class Versioning">Section 2.2.3.3, &#8220;
+            Class
+            Keys and Class Versioning
+          &#8221;</a>
+                  </p></li></ul></div><p>
+              </p></li><li class="listitem"><p>
+                <a class="xref" href="ch02s02.html#QpidManagementFramework-TheQMFProtocol" title="2.2.4.  The QMF Protocol">Section 2.2.4, &#8220;
+            The QMF
+            Protocol
+          &#8221;</a>
+              </p></li><li class="listitem"><p>
+                <a class="xref" href="ch02s02.html#QpidManagementFramework-HowtoWriteaQMFConsole" title="2.2.5.  How to Write a QMF Console">Section 2.2.5, &#8220;
+            How
+            to Write a QMF Console
+          &#8221;</a>
+              </p></li><li class="listitem"><p>
+                <a class="xref" href="ch02s02.html#QpidManagementFramework-HowtoWriteaQMFAgent" title="2.2.6.  How to Write a QMF Agent">Section 2.2.6, &#8220;
+            How to
+            Write a QMF Agent
+          &#8221;</a>
+              </p></li></ul></div><p>
+              Please visit the <a class="xref" href="">???</a> for information
+              about the future of QMF.
+            </p><div class="section" title="2.2.1.  What Is QMF"><div class="titlepage"><div><div><h3 class="title"><a name="QpidManagementFramework-WhatIsQMF"></a>2.2.1. 
+            What Is QMF
           </h3></div></div></div><p>
-            Above table represented in another format.
-          </p><div class="table"><a name="id2918316"></a><p class="title"><b>Table 2.2. AMQP Version Support - alternate format</b></p><div class="table-contents"><table summary="AMQP Version Support - alternate format" border="1"><colgroup><col><col><col><col><col></colgroup><tbody><tr><td>
-                   
-                </td><td>
-                  release
+            QMF (Qpid Management Framework) is a general-purpose management
+            bus built on Qpid Messaging. It takes advantage of the
+            scalability, security, and rich capabilities of Qpid to provide
+            flexible and easy-to-use manageability to a large set of
+            applications.
+          </p></div><div class="section" title="2.2.2.  Getting Started with QMF"><div class="titlepage"><div><div><h3 class="title"><a name="QpidManagementFramework-GettingStartedwithQMF"></a>2.2.2. 
+            Getting
+            Started with QMF
+          </h3></div></div></div><p>
+            QMF is used through two primary APIs. The <span class="emphasis"><em>console</em></span> API is
+            used for console applications that wish to access and manipulate
+            manageable components through QMF. The <span class="emphasis"><em>agent</em></span> API is used
+            for application that wish to be managed through QMF.
+          </p><p>
+            The fastest way to get started with QMF is to work through the
+            "How To" tutorials for consoles and agents. For a deeper
+            understanding of what is happening in the tutorials, it is
+            recommended that you look at the <span class="emphasis"><em>Qmf Concepts</em></span> section.
+          </p></div><div class="section" title="2.2.3.  QMF Concepts"><div class="titlepage"><div><div><h3 class="title"><a name="QpidManagementFramework-QMFConcepts"></a>2.2.3. 
+            QMF Concepts
+          </h3></div></div></div><p>
+            This section introduces important concepts underlying QMF.
+          </p><div class="section" title="2.2.3.1.  Console, Agent, and Broker"><div class="titlepage"><div><div><h4 class="title"><a name="QpidManagementFramework-Console-2CAgent-2CandBroker"></a>2.2.3.1. 
+            Console,
+            Agent, and Broker
+          </h4></div></div></div><p>
+            The major architectural components of QMF are the Console, the
+            Agent, and the Broker. Console components are the "managing"
+            components of QMF and agent components are the "managed" parts.
+            The broker is a central (possibly distributed, clustered and
+            fault-tolerant) component that manages name spaces and caches
+            schema information.
+          </p><p>
+            A console application may be a command-line utility, a
+            three-tiered web-based GUI, a collection and storage device, a
+            specialized application that monitors and reacts to events and
+            conditions, or anything else somebody wishes to develop that uses
+            QMF management data.
+          </p><p>
+            An agent application is any application that has been enhanced to
+            allow itself to be managed via QMF.
+          </p><pre class="programlisting">
+       +-------------+    +---------+    +---------------+    +-------------------+
+       | CLI utility |    | Web app |    | Audit storage |    | Event correlation |
+       +-------------+    +---------+    +---------------+    +-------------------+
+              ^                ^                 ^                ^          |
+              |                |                 |                |          |
+              v                v                 v                v          v
+    +---------------------------------------------------------------------------------+
+    |                Qpid Messaging Bus (with QMF Broker capability)                  |
+    +---------------------------------------------------------------------------------+
+                    ^                     ^                     ^
+                    |                     |                     |
+                    v                     v                     v
+           +----------------+    +----------------+    +----------------+
+           | Manageable app |    | Manageable app |    | Manageable app |
+           +----------------+    +----------------+    +----------------+
+</pre><p>
+            In the above diagram, the <span class="emphasis"><em>Manageable apps</em></span> are agents,
+            the <span class="emphasis"><em>CLI utility</em></span>, <span class="emphasis"><em>Web app</em></span>, and <span class="emphasis"><em>Audit
+            storage</em></span> are consoles, and <span class="emphasis"><em>Event correlation</em></span> is both
+            a console and an agent because it can create events based on the
+            aggregation of what it sees.
+          </p></div><div class="section" title="2.2.3.2.  Schema"><div class="titlepage"><div><div><h4 class="title"><a name="QpidManagementFramework-Schema"></a>2.2.3.2. 
+            Schema
+          </h4></div></div></div><p>
+            A <span class="emphasis"><em>schema</em></span> describes the structure of management data.
+            Each <span class="emphasis"><em>agent</em></span> provides a schema that describes its
+            management model including the object classes, methods, events,
+            etc. that it provides. In the current QMF distribution, the
+            agent's schema is codified in an XML document. In the near
+            future, there will also be ways to programatically create QMF
+            schemata.
+          </p><div class="section" title="2.2.3.2.1.  Package"><div class="titlepage"><div><div><h5 class="title"><a name="QpidManagementFramework-Package"></a>2.2.3.2.1. 
+            Package
+          </h5></div></div></div><p>
+            Each agent that exports a schema identifies itself using a
+            <span class="emphasis"><em>package</em></span> name. The package provides a unique namespace
+            for the classes in the agent's schema that prevent collisions
+            with identically named classes in other agents' schemata.
+          </p><p>
+            Package names are in "reverse domain name" form with levels of
+            hierarchy separated by periods. For example, the Qpid messaging
+            broker uses package "org.apache.qpid.broker" and the Access
+            Control List plugin for the broker uses package
+            "org.apache.qpid.acl". In general, the package name should be the
+            reverse of the internet domain name assigned to the organization
+            that owns the agent software followed by identifiers to uniquely
+            identify the agent.
+          </p><p>
+            The XML document for a package's schema uses an enclosing
+            &lt;schema&gt; tag. For example:
+          </p><pre class="programlisting">
+&lt;schema package="org.apache.qpid.broker"&gt;
+
+&lt;/schema&gt;
+</pre></div><div class="section" title="2.2.3.2.2.  Object Classes"><div class="titlepage"><div><div><h5 class="title"><a name="QpidManagementFramework-ObjectClasses"></a>2.2.3.2.2. 
+            Object
+            Classes
+          </h5></div></div></div><p>
+            <span class="emphasis"><em>Object classes</em></span> define types for manageable objects. The
+            agent may create and destroy objects which are instances of
+            object classes in the schema. An object class is defined in the
+            XML document using the &lt;class&gt; tag. An object class is
+            composed of properties, statistics, and methods.
+          </p><pre class="programlisting">
+  &lt;class name="Exchange"&gt;
+    &lt;property name="vhostRef"   type="objId" references="Vhost" access="RC" index="y" parentRef="y"/&gt;
+    &lt;property name="name"       type="sstr"  access="RC" index="y"/&gt;
+    &lt;property name="type"       type="sstr"  access="RO"/&gt;
+    &lt;property name="durable"    type="bool"  access="RC"/&gt;
+    &lt;property name="arguments"  type="map"   access="RO" desc="Arguments supplied in exchange.declare"/&gt;
+
+    &lt;statistic name="producerCount" type="hilo32"  desc="Current producers on exchange"/&gt;
+    &lt;statistic name="bindingCount"  type="hilo32"  desc="Current bindings"/&gt;
+    &lt;statistic name="msgReceives"   type="count64" desc="Total messages received"/&gt;
+    &lt;statistic name="msgDrops"      type="count64" desc="Total messages dropped (no matching key)"/&gt;
+    &lt;statistic name="msgRoutes"     type="count64" desc="Total routed messages"/&gt;
+    &lt;statistic name="byteReceives"  type="count64" desc="Total bytes received"/&gt;
+    &lt;statistic name="byteDrops"     type="count64" desc="Total bytes dropped (no matching key)"/&gt;
+    &lt;statistic name="byteRoutes"    type="count64" desc="Total routed bytes"/&gt;
+  &lt;/class&gt;
+</pre></div><div class="section" title="2.2.3.2.3.  Properties and Statistics"><div class="titlepage"><div><div><h5 class="title"><a name="QpidManagementFramework-PropertiesandStatistics"></a>2.2.3.2.3. 
+            Properties
+            and Statistics
+          </h5></div></div></div><p>
+            &lt;property&gt; and &lt;statistic&gt; tags must be placed within
+            &lt;schema&gt; and &lt;/schema&gt; tags.
+          </p><p>
+            Properties, statistics, and methods are the building blocks of an
+            object class. Properties and statistics are both object
+            attributes, though they are treated differently. If an object
+            attribute is defining, seldom or never changes, or is large in
+            size, it should be defined as a <span class="emphasis"><em>property</em></span>. If an
+            attribute is rapidly changing or is used to instrument the object
+            (counters, etc.), it should be defined as a <span class="emphasis"><em>statistic</em></span>.
+          </p><p>
+            The XML syntax for &lt;property&gt; and &lt;statistic&gt; have
+            the following XML-attributes:
+          </p><div class="table"><a name="id2905599"></a><p class="title"><b>Table 2.1. XML Attributes for QMF Properties and Statistics</b></p><div class="table-contents"><table summary="XML Attributes for QMF Properties and Statistics" border="1"><colgroup><col><col><col><col></colgroup><tbody><tr><td>
+                  Attribute
+                </td><td>
+                  &lt;property&gt;
+                </td><td>
+                  &lt;statistic&gt;
+                </td><td>
+                  Meaning
+                </td></tr><tr><td>
+                  name
                 </td><td>
-                  0-8
+                  Y
                 </td><td>
-                  0-9
+                  Y
                 </td><td>
-                  0-10
-                </td></tr><tr><td>
-                  java client
+                  The name of the attribute
+                </td></tr><tr><td>
+                  type
                 </td><td>
-                  M3 M4 0.5
+                  Y
                 </td><td>
                   Y
                 </td><td>
+                  The data type of the attribute
+                </td></tr><tr><td>
+                  unit
+                </td><td>
                   Y
                 </td><td>
                   Y
-                </td></tr><tr><td>
-                  java client
                 </td><td>
-                  M2.1
+                  Optional unit name - use the singular (i.e. MByte)
+                </td></tr><tr><td>
+                  desc
                 </td><td>
                   Y
                 </td><td>
                   Y
                 </td><td>
-                  N
+                  Description to annotate the attribute
                 </td></tr><tr><td>
-                  java broker
-                </td><td>
-                  M3 M4 0.5
+                  references
                 </td><td>
                   Y
                 </td><td>
+                   
+                </td><td>
+                  If the type is "objId", names the referenced class
+                </td></tr><tr><td>
+                  access
+                </td><td>
                   Y
                 </td><td>
-                  N
+                   
+                </td><td>
+                  Access rights (RC, RW, RO)
                 </td></tr><tr><td>
-                  java broker
+                  index
                 </td><td>
-                  trunk
+                  Y
+                </td><td>
+                   
+                </td><td>
+                  "y" if this property is used to uniquely identify the
+                  object. There may be more than one index property in a
+                  class
+                </td></tr><tr><td>
+                  parentRef
                 </td><td>
                   Y
                 </td><td>
+                   
+                </td><td>
+                  "y" if this property references an object in which this
+                  object is in a child-parent relationship.
+                </td></tr><tr><td>
+                  optional
+                </td><td>
                   Y
                 </td><td>
-                  P
+                   
+                </td><td>
+                  "y" if this property is optional (i.e. may be
+                  NULL/not-present)
                 </td></tr><tr><td>
-                  java broker
+                  min
+                </td><td>
+                  Y
+                </td><td>
+                   
                 </td><td>
-                  M2.1
+                  Minimum value of a numeric attribute
+                </td></tr><tr><td>
+                  max
                 </td><td>
                   Y
                 </td><td>
+                   
+                </td><td>
+                  Maximum value of a numeric attribute
+                </td></tr><tr><td>
+                  maxLen
+                </td><td>
                   Y
                 </td><td>
-                  N
+                   
+                </td><td>
+                  Maximum length of a string attribute
+                </td></tr></tbody></table></div></div><br class="table-break"></div><div class="section" title="2.2.3.2.4.  Methods"><div class="titlepage"><div><div><h5 class="title"><a name="QpidManagementFramework-Methods"></a>2.2.3.2.4. 
+            Methods
+          </h5></div></div></div><p>
+            &lt;method&gt; tags must be placed within &lt;schema&gt; and
+            &lt;/schema&gt; tags.
+          </p><p>
+            A <span class="emphasis"><em>method</em></span> is an invokable function to be performed on
+            instances of the object class (i.e. a Remote Procedure Call). A
+            &lt;method&gt; tag has a name, an optional description, and
+            encloses zero or more arguments. Method arguments are defined by
+            the &lt;arg&gt; tag and have a name, a type, a direction, and an
+            optional description. The argument direction can be "I", "O", or
+            "IO" indicating input, output, and input/output respectively. An
+            example:
+          </p><pre class="programlisting">
+   &lt;method name="echo" desc="Request a response to test the path to the management broker"&gt;
+     &lt;arg name="sequence" dir="IO" type="uint32"/&gt;
+     &lt;arg name="body"     dir="IO" type="lstr"/&gt;
+   &lt;/method&gt;
+</pre></div><div class="section" title="2.2.3.2.5.  Event Classes"><div class="titlepage"><div><div><h5 class="title"><a name="QpidManagementFramework-EventClasses"></a>2.2.3.2.5. 
+            Event Classes
+          </h5></div></div></div><p></p></div><div class="section" title="2.2.3.2.6.  Data Types"><div class="titlepage"><div><div><h5 class="title"><a name="QpidManagementFramework-DataTypes"></a>2.2.3.2.6. 
+            Data Types
+          </h5></div></div></div><p>
+            Object attributes, method arguments, and event arguments have
+            data types. The data types are based on the rich data typing
+            system provided by the AMQP messaging protocol. The following
+            table describes the data types available for QMF:
+          </p><div class="table"><a name="id2907143"></a><p class="title"><b>Table 2.2. QMF Datatypes</b></p><div class="table-contents"><table summary="QMF Datatypes" border="1"><colgroup><col><col></colgroup><tbody><tr><td>
+                  QMF Type
+                </td><td>
+                  Description
                 </td></tr><tr><td>
-                  c++ client/broker
+                  REF
                 </td><td>
-                  M3 M4 0.5
+                  QMF Object ID - Used to reference another QMF object.
+                </td></tr><tr><td>
+                  U8
                 </td><td>
-                  N
+                  8-bit unsigned integer
+                </td></tr><tr><td>
+                  U16
                 </td><td>
-                  N
+                  16-bit unsigned integer
+                </td></tr><tr><td>
+                  U32
                 </td><td>
-                  Y
+                  32-bit unsigned integer
                 </td></tr><tr><td>
-                  c++ client/broker
+                  U64
                 </td><td>
-                  M2.1
+                  64-bit unsigned integer
+                </td></tr><tr><td>
+                  S8
                 </td><td>
-                  N
+                  8-bit signed integer
+                </td></tr><tr><td>
+                  S16
                 </td><td>
-                  Y
+                  16-bit signed integer
+                </td></tr><tr><td>
+                  S32
                 </td><td>
-                  N
+                  32-bit signed integer
                 </td></tr><tr><td>
-                  python client
+                  S64
                 </td><td>
-                  M3 M4 0.5
+                  64-bit signed integer
+                </td></tr><tr><td>
+                  BOOL
                 </td><td>
-                  Y
+                  Boolean - True or False
+                </td></tr><tr><td>
+                  SSTR
                 </td><td>
-                  Y
+                  Short String - String of up to 255 bytes
+                </td></tr><tr><td>
+                  LSTR
                 </td><td>
-                  Y
+                  Long String - String of up to 65535 bytes
                 </td></tr><tr><td>
-                  python client
+                  ABSTIME
                 </td><td>
-                  M2.1
+                  Absolute time since the epoch in nanoseconds (64-bits)
+                </td></tr><tr><td>
+                  DELTATIME
                 </td><td>
-                  Y
+                  Delta time in nanoseconds (64-bits)
+                </td></tr><tr><td>
+                  FLOAT
                 </td><td>
-                  Y
+                  Single precision floating point number
+                </td></tr><tr><td>
+                  DOUBLE
                 </td><td>
-                  N
+                  Double precision floating point number
                 </td></tr><tr><td>
-                  ruby client
+                  UUID
                 </td><td>
-                  M3 M4 0.5
+                  UUID - 128 bits
+                </td></tr><tr><td>
+                  FTABLE
                 </td><td>
-                  Y
+                  Field-table - std::map in C++, dictionary in Python
+                </td></tr></tbody></table></div></div><br class="table-break"><p>
+            In the XML schema definition, types go by different names and
+            there are a number of special cases. This is because the XML
+            schema is used in code-generation for the agent API. It provides
+            options that control what kind of accessors are generated for
+            attributes of different types. The following table enumerates the
+            types available in the XML format, which QMF types they map to,
+            and other special handling that occurs.
+          </p><div class="table"><a name="id2907417"></a><p class="title"><b>Table 2.3. XML Schema Mapping for QMF Types</b></p><div class="table-contents"><table summary="XML Schema Mapping for QMF Types" border="1"><colgroup><col><col><col><col></colgroup><tbody><tr><td>
+                  XML Type
                 </td><td>
-                  Y
+                  QMF Type
                 </td><td>
-                  N
+                  Accessor Style
+                </td><td>
+                  Special Characteristics
                 </td></tr><tr><td>
-                  ruby client
+                  objId
                 </td><td>
-                  trunk
+                  REF
                 </td><td>
-                  Y
+                  Direct (get, set)
                 </td><td>
-                  Y
+                   
+                </td></tr><tr><td>
+                  uint8,16,32,64
+                </td><td>
+                  U8,16,32,64
+                </td><td>
+                  Direct (get, set)
                 </td><td>
-                  P
+                   
                 </td></tr><tr><td>
-                  C# client
+                  int8,16,32,64
                 </td><td>
-                  M3 M4 0.5
+                  S8,16,32,64
                 </td><td>
-                  Y
+                  Direct (get, set)
+                </td><td>
+                   
+                </td></tr><tr><td>
+                  bool
+                </td><td>
+                  BOOL
                 </td><td>
-                  N
+                  Direct (get, set)
                 </td><td>
-                  N
+                   
                 </td></tr><tr><td>
-                  C# client
+                  sstr
                 </td><td>
-                  trunk
+                  SSTR
                 </td><td>
-                  Y
+                  Direct (get, set)
+                </td><td>
+                   
+                </td></tr><tr><td>
+                  lstr
                 </td><td>
-                  N
+                  LSTR
                 </td><td>
-                  Y
-                </td></tr></tbody></table></div></div><br class="table-break"></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="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="ch03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 2. 
-      AMQP compatibility
-     </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 3. 
-      Qpid Interoperability Documentation
+                  Direct (get, set)
+                </td><td>
+                   
+                </td></tr><tr><td>
+                  absTime
+                </td><td>
+                  ABSTIME
+                </td><td>
+                  Direct (get, set)
+                </td><td>
+                   
+                </td></tr><tr><td>
+                  deltaTime
+                </td><td>
+                  DELTATIME
+                </td><td>
+                  Direct (get, set)
+                </td><td>
+                   
+                </td></tr><tr><td>
+                  float
+                </td><td>
+                  FLOAT
+                </td><td>
+                  Direct (get, set)
+                </td><td>
+                   
+                </td></tr><tr><td>
+                  double
+                </td><td>
+                  DOUBLE
+                </td><td>
+                  Direct (get, set)
+                </td><td>
+                   
+                </td></tr><tr><td>
+                  uuid
+                </td><td>
+                  UUID
+                </td><td>
+                  Direct (get, set)
+                </td><td>
+                   
+                </td></tr><tr><td>
+                  map
+                </td><td>
+                  FTABLE
+                </td><td>
+                  Direct (get, set)
+                </td><td>
+                   
+                </td></tr><tr><td>
+                  hilo8,16,32,64
+                </td><td>
+                  U8,16,32,64
+                </td><td>
+                  Counter (inc, dec)
+                </td><td>
+                  Generates value, valueMin, valueMax
+                </td></tr><tr><td>
+                  count8,16,32,64
+                </td><td>
+                  U8,16,32,64
+                </td><td>
+                  Counter (inc, dec)
+                </td><td>
+                   
+                </td></tr><tr><td>
+                  mma32,64
+                </td><td>
+                  U32,64
+                </td><td>
+                  Direct
+                </td><td>
+                  Generates valueMin, valueMax, valueAverage, valueSamples
+                </td></tr><tr><td>
+                  mmaTime
+                </td><td>
+                  DELTATIME
+                </td><td>
+                  Direct
+                </td><td>
+                  Generates valueMin, valueMax, valueAverage, valueSamples
+                </td></tr></tbody></table></div></div><br class="table-break"><div class="note" title="Important" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Important</h3><p>
+                    When writing a schema using the XML format, types used in
+                    &lt;property&gt; or &lt;arg&gt; must be types that have
+                    <span class="emphasis"><em>Direct</em></span> accessor style. Any type may be used in
+                    &lt;statistic&gt; tags.
+                  </p></div></div></div><div class="section" title="2.2.3.3.  Class Keys and Class Versioning"><div class="titlepage"><div><div><h4 class="title"><a name="QpidManagementFramework-ClassKeysandClassVersioning"></a>2.2.3.3. 
+            Class
+            Keys and Class Versioning
+          </h4></div></div></div><p></p></div></div><div class="section" title="2.2.4.  The QMF Protocol"><div class="titlepage"><div><div><h3 class="title"><a name="QpidManagementFramework-TheQMFProtocol"></a>2.2.4. 
+            The QMF
+            Protocol
+          </h3></div></div></div><p>
+            The QMF protocol defines the message formats and communication
+            patterns used by the different QMF components to communicate with
+            one another.
+          </p><p>
+            A description of the current version of the QMF protocol can be
+            found at <a class="xref" href="">???</a>.
+          </p><p>
+            A proposal for an updated protocol based on map-messages is in
+            progress and can be found at <a class="xref" href="">???</a>.
+          </p></div><div class="section" title="2.2.5.  How to Write a QMF Console"><div class="titlepage"><div><div><h3 class="title"><a name="QpidManagementFramework-HowtoWriteaQMFConsole"></a>2.2.5. 
+            How
+            to Write a QMF Console
+          </h3></div></div></div><p>
+            Please see the <a class="xref" href="">???</a> for information about using the console API with
+            Python.
+          </p></div><div class="section" title="2.2.6.  How to Write a QMF Agent"><div class="titlepage"><div><div><h3 class="title"><a name="QpidManagementFramework-HowtoWriteaQMFAgent"></a>2.2.6. 
+            How to
+            Write a QMF Agent
+          </h3></div></div></div><p></p></div></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.             
+      Managing the AMQP Messaging Broker
+     </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 2.3. 
+      QMF Python Console Tutorial
     </td></tr></table></div></body></html>



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