qpid-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jr...@apache.org
Subject svn commit: r1236382 [19/22] - in /qpid/site/docs/books/trunk: ./ AMQP-Messaging-Broker-CPP-Book/ AMQP-Messaging-Broker-CPP-Book/html-single/ AMQP-Messaging-Broker-CPP-Book/html-single/css/ AMQP-Messaging-Broker-CPP-Book/html-single/images/ AMQP-Messag...
Date Thu, 26 Jan 2012 20:54:50 GMT
Added: qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html-single/css/style.css
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html-single/css/style.css?rev=1236382&view=auto
==============================================================================
--- qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html-single/css/style.css (added)
+++ qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html-single/css/style.css Thu Jan 26 20:54:43 2012
@@ -0,0 +1,129 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+ul {
+    list-style-type:square;
+}
+
+th { 
+    font-weight: bold;
+}
+
+.navfooter td { 
+    font-size:10pt;
+}
+
+.navheader td { 
+    font-size:10pt;
+}
+
+body {
+    width:950px;
+    margin-left:100px;
+    margin-top:40px;
+
+    background:#FFFFFF;
+    font-family:"Verdana", sans-serif;
+    font-size:10pt;
+}
+
+body a {
+    color:#000000;
+}
+
+
+div.book {
+    margin-left:10pt;
+    margin-right:10pt;
+}
+
+div.preface {
+    margin-left:10pt;
+    margin-right:10pt;
+}
+
+div.chapter {
+    margin-left:10pt;
+    margin-right:10pt;
+}
+
+div.section {
+    margin-left:10pt;
+    margin-right:10pt;
+}
+
+div.titlepage {
+    margin-left:-10pt;
+    margin-right:-10pt;
+}
+
+.calloutlist td {
+    font-size:10pt;
+}
+
+.table-contents table {
+    border-spacing: 0px;
+}
+
+.table-contents td {
+    font-size:10pt;
+    padding-left:6px;
+    padding-right:6px;
+}
+
+.chapter h2.title {
+    font-size:20pt;
+    color:#0c3b82;
+}
+
+.chapter .section h2.title {
+    font-size:18pt;
+    color:#0c3b82;
+}
+
+.section h2.title {
+    font-size:16pt;
+    color:#0c3b82;
+}
+
+.section h3.title {
+    font-size:14pt;
+    color:#0c3b82;
+}
+
+.section h4.title {
+    font-size:12pt;
+    color:#0c3b82;
+}
+
+.section h5.title {
+    font-size:12pt;
+    color:#0c3b82;
+}
+
+.section h6.title {
+    font-size:12pt;
+    color:#0c3b82;
+}
+
+.toc a {
+    font-size:9pt;
+}
+

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Added: qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html/Message-Groups-Guide.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html/Message-Groups-Guide.html?rev=1236382&view=auto
==============================================================================
--- qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html/Message-Groups-Guide.html (added)
+++ qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html/Message-Groups-Guide.html Thu Jan 26 20:54:43 2012
@@ -0,0 +1,100 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>2.17. Using Message Groups</title><link rel="stylesheet" type="text/css" href="css/style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><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="section-amqp0-10-mapping.html" title="2.16. The AMQP 0-10 mapping"><link rel="next" href="QpidJMS.html" title="Chapter 3. Using the Qpid JMS client"></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.17. Using Message Groups</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="section-amqp0-10-mapping.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Using the Qpid Mes
 saging API</th><td width="20%" align="right"> <a accesskey="n" href="QpidJMS.html">Next</a></td></tr></table><hr></div><div class="section" title="2.17. Using Message Groups"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Message-Groups-Guide"></a>2.17. Using Message Groups</h2></div></div></div><p>
+    This section describes how messaging applications can use the Message Group feature
+    provided by the C++ Broker.
+  </p><div class="note" title="Note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3>
+    The content of this section assumes the reader is familiar with the Message Group
+    feature as described in the AMQP Messaging Broker (C++) user's guide.  Please read the
+    section <span class="emphasis"><em>Using Message Groups</em></span> in the user's guide before using the
+    examples given in this section.
+  </div><div class="section" title="2.17.1. Creating Message Group Queues"><div class="titlepage"><div><div><h3 class="title"><a name="messagegroups-setup"></a>2.17.1. Creating Message Group Queues</h3></div></div></div><p>
+      The following examples show how to create a message group queue that enforces
+      ordered group consumption across multiple consumers.
+    </p><div class="example"><a name="id409245"></a><p class="title"><b>Example 2.22. Message Group Queue Creation - Python</b></p><div class="example-contents"><pre lang="python" class="programlisting">
+sender = connection.session().sender("msg-group-q;" +
+                                     " {create:always, delete:receiver," +
+                                     " node: {x-declare: {arguments:" +
+                                     " {'qpid.group_header_key':'THE-GROUP'," +
+                                     " 'qpid.shared_msg_group':1}}}}")
+      </pre></div></div><br class="example-break"><div class="example"><a name="id409260"></a><p class="title"><b>Example 2.23. Message Group Queue Creation - C++</b></p><div class="example-contents"><pre lang="c++" class="programlisting">
+std::string addr("msg-group-q; "
+                 " {create:always, delete:receiver,"
+                 " node: {x-declare: {arguments:"
+                 " {qpid.group_header_key:'THE-GROUP',"
+                 " qpid.shared_msg_group:1}}}}");
+Sender sender = session.createSender(addr);
+      </pre></div></div><br class="example-break"><div class="example"><a name="id409276"></a><p class="title"><b>Example 2.24. Message Group Queue Creation - Java</b></p><div class="example-contents"><pre lang="java" class="programlisting">
+Session s = c.createSession(false, Session.CLIENT_ACKNOWLEDGE);
+String addr = "msg-group-q; {create:always, delete:receiver," +
+                             " node: {x-declare: {arguments:" +
+                             " {'qpid.group_header_key':'THE-GROUP'," +
+                             " 'qpid.shared_msg_group':1}}}}";
+Destination d = (Destination) new AMQAnyDestination(addr);
+MessageProducer sender = s.createProducer(d);
+      </pre></div></div><br class="example-break"><p>
+      The example code uses the x-declare map to specify the message group configuration
+      that should be used for the queue.  See the AMQP Messaging Broker (C++) user's guide
+      for a detailed description of these arguments.  Note that the
+      qpid.group_header_key's value MUST be a string type.
+    </p></div><div class="section" title="2.17.2. Sending Grouped Messages"><div class="titlepage"><div><div><h3 class="title"><a name="messagegroups-sending"></a>2.17.2. Sending Grouped Messages</h3></div></div></div><p>
+      When sending grouped messages, the client must add a message property containing the
+      group identifier to the outgoing message.  The group identifier must be a string
+      type.  The key used for the property must exactly match the value passed in the
+      'qpid.group_header_key' configuration argument.
+    </p><div class="example"><a name="id359739"></a><p class="title"><b>Example 2.25. Sending Grouped Messages - Python</b></p><div class="example-contents"><pre lang="python" class="programlisting">
+group = "A"
+m = Message(content="some data", properties={"THE-GROUP": group})
+sender.send(m)
+
+group = "B"
+m = Message(content="some other group's data", properties={"THE-GROUP": group})
+sender.send(m)
+
+group = "A"
+m = Message(content="more data for group 'A'", properties={"THE-GROUP": group})
+sender.send(m)
+      </pre></div></div><br class="example-break"><div class="example"><a name="id359755"></a><p class="title"><b>Example 2.26. Sending Grouped Messages - C++</b></p><div class="example-contents"><pre lang="C++" class="programlisting">
+
+const std::string groupKey("THE-GROUP");
+{
+    Message msg("some data");
+    msg.getProperties()[groupKey] = std::string("A");
+    sender.send(msg);
+}
+{
+    Message msg("some other group's data");
+    msg.getProperties()[groupKey] = std::string("B");
+    sender.send(msg);
+}
+{
+    Message msg("more data for group 'A'");
+    msg.getProperties()[groupKey] = std::string("A");
+    sender.send(msg);
+}
+      </pre></div></div><br class="example-break"><div class="example"><a name="id359772"></a><p class="title"><b>Example 2.27. Sending Grouped Messages - Java</b></p><div class="example-contents"><pre lang="java" class="programlisting">
+String groupKey = "THE-GROUP";
+
+TextMessage tmsg1 = s.createTextMessage("some data");
+tmsg1.setStringProperty(groupKey, "A");
+sender.send(tmsg1);
+
+TextMessage tmsg2 = s.createTextMessage("some other group's data");
+tmsg2.setStringProperty(groupKey, "B");
+sender.send(tmsg2);
+
+TextMessage tmsg3 = s.createTextMessage("more data for group 'A'");
+tmsg3.setStringProperty(groupKey, "A");
+sender.send(tmsg3);
+      </pre></div></div><br class="example-break"><p>
+      The examples above send two groups worth of messages to the queue created in the
+      previous example.  Two messages belong to group "A", and one belongs to group
+      "B". Note that it is not necessary to complete sending one group's messages before
+      starting another.  Also note that there is no need to indicate to the broker when a
+      new group is created or an existing group retired - the broker tracks group state
+      automatically.
+    </p></div><div class="section" title="2.17.3. Receiving Grouped Messages"><div class="titlepage"><div><div><h3 class="title"><a name="messagegroups-receiving"></a>2.17.3. Receiving Grouped Messages</h3></div></div></div><p>
+      Since the broker enforces group policy when delivering messages, no special actions
+      are necessary for receiving grouped messages from the broker.  However, applications
+      must adhere to the rules for message group consumption as described in the AMQP
+      Messaging Broker (C++) user's guide.  Refer to the section <span class="emphasis"><em>Well Behaved
+      Consumers</em></span> for details.
+    </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="section-amqp0-10-mapping.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="QpidJMS.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">2.16. The AMQP 0-10 mapping </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 3. Using the Qpid JMS client</td></tr></table></div></body></html>

Added: qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html/QpidJMS.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html/QpidJMS.html?rev=1236382&view=auto
==============================================================================
--- qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html/QpidJMS.html (added)
+++ qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html/QpidJMS.html Thu Jan 26 20:54:43 2012
@@ -0,0 +1,78 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Chapter 3. Using the Qpid JMS client</title><link rel="stylesheet" type="text/css" href="css/style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><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="Message-Groups-Guide.html" title="2.17. Using Message Groups"><link rel="next" href="QpidJNDI.html" title="3.2. Apache Qpid JNDI Properties for AMQP Messaging"></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 3. Using the Qpid JMS client</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="Message-Groups-Guide.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%
 " align="right"> <a accesskey="n" href="QpidJNDI.html">Next</a></td></tr></table><hr></div><div class="chapter" title="Chapter 3. Using the Qpid JMS client"><div class="titlepage"><div><div><h2 class="title"><a name="QpidJMS"></a>Chapter 3. Using the Qpid JMS client</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="QpidJMS.html#id410332">3.1. A Simple Messaging Program in Java JMS</a></span></dt><dt><span class="section"><a href="QpidJNDI.html">3.2. Apache Qpid JNDI Properties for AMQP Messaging</a></span></dt><dd><dl><dt><span class="section"><a href="QpidJNDI.html#id410687">3.2.1. JNDI Properties for Apache Qpid</a></span></dt><dt><span class="section"><a href="QpidJNDI.html#section-jms-connection-url">3.2.2. Connection URLs</a></span></dt></dl></dd><dt><span class="section"><a href="ch03s03.html">3.3. Java JMS Message Properties</a></span></dt><dt><span class="section"><a href="section-JMS-MapMessag
 e.html">3.4. JMS MapMessage Types</a></span></dt><dt><span class="section"><a href="section-JMS-Logging.html">3.5. JMS Client Logging</a></span></dt><dt><span class="section"><a href="ch03s06.html">3.6. Configuring the JMS Client</a></span></dt><dd><dl><dt><span class="section"><a href="ch03s06.html#id411866">3.6.1. Qpid JVM Arguments</a></span></dt></dl></dd></dl></div><div class="section" title="3.1. A Simple Messaging Program in Java JMS"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id410332"></a>3.1. A Simple Messaging Program in Java JMS</h2></div></div></div><p>The following program shows how to send and receive a
+      message using the Qpid JMS client. JMS programs typically use
+      JNDI to obtain connection factory and destination objects which
+      the application needs. In this way the configuration is kept
+      separate from the application code itself.</p><p>In this example, we create a JNDI context using a
+      properties file, use the context to lookup a connection factory,
+      create and start a connection, create a session, and lookup a
+      destination from the JNDI context. Then we create a producer and
+      a consumer, send a message with the producer and receive it with
+      the consumer. This code should be straightforward for anyone
+      familiar with Java JMS.</p><div class="example"><a name="id410350"></a><p class="title"><b>Example 3.1. "Hello world!" in Java</b></p><div class="example-contents"><pre lang="java" class="programlisting">
+package org.apache.qpid.example.jmsexample.hello;
+
+import javax.jms.*;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import java.util.Properties;
+
+public class Hello {
+
+  public Hello() {
+  }
+
+  public static void main(String[] args) {
+    Hello producer = new Hello();
+    producer.runTest();
+  }
+
+  private void runTest() {
+    try {
+      Properties properties = new Properties();
+      properties.load(this.getClass().getResourceAsStream("hello.properties"));  <a class="co" name="hello-java-properties" href="QpidJMS.html#callout-java-properties">(1)</a>
+      Context context = new InitialContext(properties);   <a class="co" name="hello-java-context" href="QpidJMS.html#callout-java-context">(2)</a>
+
+      ConnectionFactory connectionFactory
+          = (ConnectionFactory) context.lookup("qpidConnectionfactory"); <a class="co" name="hello-java-connection-factory" href="QpidJMS.html#callout-java-connection-factory">(3)</a>
+      Connection connection = connectionFactory.createConnection();  <a class="co" name="hello-java-connection" href="QpidJMS.html#callout-java-connection">(4)</a>
+      connection.start();  <a class="co" name="hello-java-start" href="QpidJMS.html#callout-java-start">(5)</a>
+
+      Session session=connection.createSession(false,Session.AUTO_ACKNOWLEDGE);<a class="co" name="hello-java-session" href="QpidJMS.html#callout-java-session">(6)</a>
+      Destination destination = (Destination) context.lookup("topicExchange");  <a class="co" name="hello-java-destination" href="QpidJMS.html#callout-java-destination">(7)</a>
+
+      MessageProducer messageProducer = session.createProducer(destination);  <a class="co" name="hello-java-producer" href="QpidJMS.html#callout-java-producer">(8)</a>
+      MessageConsumer messageConsumer = session.createConsumer(destination);  <a class="co" name="hello-java-consumer" href="QpidJMS.html#callout-java-consumer">(9)</a>
+
+      TextMessage message = session.createTextMessage("Hello world!");
+      messageProducer.send(message);
+
+      message = (TextMessage)messageConsumer.receive();    <a class="co" name="hello-java-receive" href="QpidJMS.html#callout-java-receive">(10)</a>
+      System.out.println(message.getText());
+
+      connection.close();  <a class="co" name="hello-java-close" href="QpidJMS.html#callout-java-close">(11)</a>
+      context.close();   <a class="co" name="hello-java-jndi-close" href="QpidJMS.html#callout-java-jndi-close">(12)</a>
+    }
+    catch (Exception exp) {
+      exp.printStackTrace();
+    }
+  }
+}
+	</pre></div></div><br class="example-break"><div class="calloutlist"><table border="0" summary="Callout list"><tr><td width="5%" valign="top" align="left"><p><a name="callout-java-properties"></a><a href="#hello-java-properties">(1)</a> </p></td><td valign="top" align="left"><p>Loads the JNDI properties file, which specifies connection properties, queues, topics, and addressing options. See <a class="xref" href="QpidJNDI.html" title="3.2. Apache Qpid JNDI Properties for AMQP Messaging">Section 3.2, “Apache Qpid JNDI Properties for AMQP Messaging”</a> for details.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-java-context"></a><a href="#hello-java-context">(2)</a> </p></td><td valign="top" align="left"><p>Creates the JNDI initial context.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-java-connection-factory"></a><a href="#hello-java-connection-factory">(3)</a> </p></td><td valign="top" align="lef
 t"><p>Creates a JMS connection factory for Qpid.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-java-connection"></a><a href="#hello-java-connection">(4)</a> </p></td><td valign="top" align="left"><p>Creates a JMS connection.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-java-start"></a><a href="#hello-java-start">(5)</a> </p></td><td valign="top" align="left"><p>Activates the connection.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-java-session"></a><a href="#hello-java-session">(6)</a> </p></td><td valign="top" align="left"><p>Creates a session. This session is not transactional (transactions='false'), and messages are automatically acknowledged.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-java-destination"></a><a href="#hello-java-destination">(7)</a> </p></td><td valign="top" align="left"><p>Creates a destination for the topic exchange, so sen
 ders and receivers can use it.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-java-producer"></a><a href="#hello-java-producer">(8)</a> </p></td><td valign="top" align="left"><p>Creates a producer that sends messages to the topic exchange.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-java-consumer"></a><a href="#hello-java-consumer">(9)</a> </p></td><td valign="top" align="left"><p>Creates a consumer that reads messages from the topic exchange.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-java-receive"></a><a href="#hello-java-receive">(10)</a> </p></td><td valign="top" align="left"><p>Reads the next available message.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-java-close"></a><a href="#hello-java-close">(11)</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><tr><td width="5%" valign="top" align="left"><p><a name="callout-java-jndi-close"></a><a href="#hello-java-jndi-close">(12)</a> </p></td><td valign="top" align="left"><p>Closes the JNDI context.</p></td></tr></table></div><p>The contents of the hello.properties file are shown below.</p><div class="example"><a name="id410592"></a><p class="title"><b>Example 3.2. JNDI Properties File for "Hello world!" example</b></p><div class="example-contents"><pre class="programlisting">
+java.naming.factory.initial
+  = org.apache.qpid.jndi.PropertiesFileInitialContextFactory
+
+# connectionfactory.[jndiname] = [ConnectionURL]
+connectionfactory.qpidConnectionfactory
+  = amqp://guest:guest@clientid/test?brokerlist='tcp://localhost:5672' <a class="co" name="hello-properties-connectionfactory" href="QpidJMS.html#callout-hello-properties-connectionfactory">(1)</a>
+# destination.[jndiname] = [address_string]
+destination.topicExchange = amq.topic <a class="co" name="hello-properties-destination" href="QpidJMS.html#callout-hello-properties-destination">(2)</a>
+     </pre></div></div><br class="example-break"><div class="calloutlist"><table border="0" summary="Callout list"><tr><td width="5%" valign="top" align="left"><p><a name="callout-hello-properties-connectionfactory"></a><a href="#hello-properties-connectionfactory">(1)</a> </p></td><td valign="top" align="left"><p>Defines a connection factory from which connections
+	  can be created. The syntax of a ConnectionURL is given in
+	  <a class="xref" href="QpidJNDI.html" title="3.2. Apache Qpid JNDI Properties for AMQP Messaging">Section 3.2, “Apache Qpid JNDI Properties for AMQP Messaging”</a>.</p></td></tr><tr><td width="5%" valign="top" align="left"><p><a name="callout-hello-properties-destination"></a><a href="#hello-properties-destination">(2)</a> </p></td><td valign="top" align="left"><p>Defines a destination for which MessageProducers
+	  and/or MessageConsumers can be created to send and receive
+	  messages. The value for the destination in the properties
+	  file is an address string as described in
+	  <a class="xref" href="section-addresses.html" title="2.4. Addresses">Section 2.4, “Addresses”</a>. In the JMS
+	  implementation MessageProducers are analogous to senders in
+	  the Qpid Message API, and MessageConsumers are analogous to
+	  receivers.</p></td></tr></table></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="Message-Groups-Guide.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="QpidJNDI.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">2.17. Using Message Groups </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 3.2. Apache Qpid JNDI Properties for AMQP Messaging</td></tr></table></div></body></html>

Added: qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html/QpidJNDI.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html/QpidJNDI.html?rev=1236382&view=auto
==============================================================================
--- qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html/QpidJNDI.html (added)
+++ qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html/QpidJNDI.html Thu Jan 26 20:54:43 2012
@@ -0,0 +1,251 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>3.2. Apache Qpid JNDI Properties for AMQP Messaging</title><link rel="stylesheet" type="text/css" href="css/style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><link rel="home" href="index.html" title="Programming in Apache Qpid"><link rel="up" href="QpidJMS.html" title="Chapter 3. Using the Qpid JMS client"><link rel="prev" href="QpidJMS.html" title="Chapter 3. Using the Qpid JMS client"><link rel="next" href="ch03s03.html" title="3.3. Java JMS Message Properties"></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">3.2. Apache Qpid JNDI Properties for AMQP Messaging</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="QpidJMS.html">Prev</a> </td><th width="60%" align="center">Chapter 3.
  Using the Qpid JMS client</th><td width="20%" align="right"> <a accesskey="n" href="ch03s03.html">Next</a></td></tr></table><hr></div><div class="section" title="3.2. Apache Qpid JNDI Properties for AMQP Messaging"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="QpidJNDI"></a>3.2. Apache Qpid JNDI Properties for AMQP Messaging</h2></div></div></div><p>
+	Apache Qpid defines JNDI properties that can be used to specify JMS Connections and Destinations. Here is a typical JNDI properties file:
+      </p><div class="example"><a name="id410668"></a><p class="title"><b>Example 3.3. JNDI Properties File</b></p><div class="example-contents"><pre class="programlisting">
+java.naming.factory.initial
+  = org.apache.qpid.jndi.PropertiesFileInitialContextFactory
+
+# connectionfactory.[jndiname] = [ConnectionURL]
+connectionfactory.qpidConnectionfactory
+  = amqp://guest:guest@clientid/test?brokerlist='tcp://localhost:5672'
+# destination.[jndiname] = [address_string]
+destination.topicExchange = amq.topic
+</pre></div></div><br class="example-break"><p>The following sections describe the JNDI properties that Qpid uses.</p><div class="section" title="3.2.1. JNDI Properties for Apache Qpid"><div class="titlepage"><div><div><h3 class="title"><a name="id410687"></a>3.2.1. JNDI Properties for Apache Qpid</h3></div></div></div><p>
+	  Apache Qpid supports the properties shown in the following table:
+        </p><div class="table"><a name="id410696"></a><p class="title"><b>Table 3.1. JNDI Properties supported by Apache Qpid</b></p><div class="table-contents"><table summary="JNDI Properties supported by Apache Qpid" border="1"><colgroup><col><col></colgroup><thead><tr><th>
+		  Property
+	        </th><th>
+		  Purpose
+	        </th></tr></thead><tbody><tr><td>
+		  connectionfactory.&lt;jndiname&gt;
+	        </td><td>
+		  <p>
+		    The Connection URL that the connection factory uses to perform connections.
+		  </p>
+	        </td></tr><tr><td>
+		  queue.&lt;jndiname&gt;
+	        </td><td>
+		  <p>
+		    A JMS queue, which is implemented as an amq.direct exchange in Apache Qpid.
+		  </p>
+	        </td></tr><tr><td>
+		  topic.&lt;jndiname&gt;
+	        </td><td>
+		  <p>
+		    A JMS topic, which is implemented as an amq.topic exchange in Apache Qpid.
+		  </p>
+	        </td></tr><tr><td>
+		  destination.&lt;jndiname&gt;
+	        </td><td>
+		  <p>
+		    Can be used for defining all amq destinations,
+		    queues, topics and header matching, using an
+		    address string.
+
+		    <sup>[<a name="id410774" href="#ftn.id410774" class="footnote">a</a>]</sup>
+		  </p>
+	        </td></tr></tbody><tbody class="footnotes"><tr><td colspan="2"><div class="footnote"><p><sup>[<a id="ftn.id410774" href="#id410774" class="para">a</a>] </sup>Binding URLs, which were used in
+		    earlier versions of the Qpid Java JMS client, can
+		    still be used instead of address
+		    strings.</p></div></td></tr></tbody></table></div></div><br class="table-break"></div><div class="section" title="3.2.2. Connection URLs"><div class="titlepage"><div><div><h3 class="title"><a name="section-jms-connection-url"></a>3.2.2. Connection URLs</h3></div></div></div><p>
+	  In JNDI properties, a Connection URL specifies properties for a connection. The format for a Connection URL is:
+        </p><pre class="programlisting">amqp://[&lt;user&gt;:&lt;pass&gt;@][&lt;clientid&gt;]&lt;virtualhost&gt;[?&lt;option&gt;='&lt;value&gt;'[&amp;&lt;option&gt;='&lt;value&gt;']]
+        </pre><p>
+	  For instance, the following Connection URL specifies a user name, a password, a client ID, a virtual host ("test"), a broker list with a single broker, and a TCP host with the host name <span class="quote">“<span class="quote">localhost</span>”</span> using port 5672:
+        </p><pre class="programlisting">amqp://username:password@clientid/test?brokerlist='tcp://localhost:5672'
+        </pre><p>
+	  Apache Qpid supports the following properties in Connection URLs:
+        </p><div class="table"><a name="id410824"></a><p class="title"><b>Table 3.2. Connection URL Properties</b></p><div class="table-contents"><table summary="Connection URL Properties" width="100%" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>
+		  Option
+	        </th><th>
+		  Type
+	        </th><th>
+		  Description
+	        </th></tr></thead><tbody><tr><td>
+		  brokerlist
+	        </td><td>
+		  see below
+	        </td><td>
+		  List of one or more broker addresses.
+	        </td></tr><tr><td>
+		  maxprefetch
+	        </td><td>
+		  --
+	        </td><td>
+		  The maximum number of pre-fetched messages per destination.
+	        </td></tr><tr><td>
+		  sync_publish
+	        </td><td>
+           {'persistent' | 'all'}
+	        </td><td>
+          A sync command is sent after every persistent message to guarantee that it has been received; if the value is 'persistent', this is done only for persistent messages.
+	        </td></tr><tr><td>
+		  sync_ack
+	        </td><td>
+           Boolean
+	        </td><td>
+          A sync command is sent after every acknowledgement to guarantee that it has been received.
+	        </td></tr><tr><td>
+		  use_legacy_map_msg_format
+	        </td><td>
+          Boolean
+	        </td><td>
+          If you are using JMS Map messages and deploying a new client with any JMS client older than 0.8 release, you must set this to true to ensure the older clients can understand the map message encoding.
+	        </td></tr><tr><td>
+		  failover
+	        </td><td>
+           {'singlebroker' | 'roundrobin' | 'failover_exchange' | 'nofailover' | '&lt;class&gt;'}
+	        </td><td>
+	            <p>
+          This option controls failover behaviour.  The method <code class="literal">singlebroker</code> uses only the first broker in the list,
+          <code class="literal">roundrobin</code> will try each broker given in the broker list until a connection is established,
+          <code class="literal">failover_exchange</code> connects to the initial broker given in the broker URL and will receive membership updates
+          via the failover exchange. <code class="literal">nofailover</code> disables all retry and failover logic.  Any other value is interpreted as a
+          classname which must implement the <code class="literal">org.apache.qpid.jms.failover.FailoverMethod</code> interface.
+	            </p>
+	            <p>
+          The broker list options <code class="literal">retries</code> and <code class="literal">connectdelay</code> (described below) determine the number of times a
+          connection to a broker will be retried and the the length of time to wait between successive connection attempts before moving on to
+          the next broker in the list. The failover option <code class="literal">cyclecount</code> controls the number of times to loop through the list of
+          available brokers before finally giving up.
+	            </p>
+	            <p>
+          Defaults to <code class="literal">roundrobin</code> if the brokerlist contains multiple brokers, or <code class="literal">singlebroker</code> otherwise.
+	            </p>
+	        </td></tr></tbody></table></div></div><br class="table-break"><p>
+	  Broker lists are specified using a URL in this format:
+        </p><pre class="programlisting">brokerlist=&lt;transport&gt;://&lt;host&gt;[:&lt;port&gt;](?&lt;param&gt;='&lt;value&gt;')(&amp;&lt;param&gt;='&lt;value&gt;')*</pre><p>
+	  For instance, this is a typical broker list:
+        </p><pre class="programlisting">brokerlist='tcp://localhost:5672'
+        </pre><p>
+	  A broker list can contain more than one broker address; if so, the connection is made to the first broker in the list that is available. In general, it is better to use the failover exchange when using multiple brokers, since it allows applications to fail over if a broker goes down.
+	</p><div class="example"><a name="id411036"></a><p class="title"><b>Example 3.4. Broker Lists</b></p><div class="example-contents"><p>A broker list can specify properties to be used when connecting to the broker, such as security options. This broker list specifies options for a Kerberos connection using GSSAPI:</p><pre class="programlisting">
+amqp://guest:guest@test/test?sync_ack='true'
+    &amp;brokerlist='tcp://ip1:5672?sasl_mechs='GSSAPI''
+	</pre><p>This broker list specifies SSL options:</p><pre class="programlisting">
+amqp://guest:guest@test/test?sync_ack='true'
+   &amp;brokerlist='tcp://ip1:5672?ssl='true'&amp;ssl_cert_alias='cert1''
+	</pre><p>
+          This broker list specifies two brokers using the connectdelay and retries broker options. It also illustrates the failover connection URL
+          property.
+        </p><pre class="programlisting">
+
+amqp://guest:guest@/test?failover='roundrobin?cyclecount='2''
+   &amp;brokerlist='tcp://ip1:5672?retries='5'&amp;connectdelay='2000';tcp://ip2:5672?retries='5'&amp;connectdelay='2000''
+	</pre></div></div><br class="example-break"><p>The following broker list options are supported.</p><div class="table"><a name="id411080"></a><p class="title"><b>Table 3.3. Broker List Options</b></p><div class="table-contents"><table summary="Broker List Options" width="100%" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>
+		  Option
+	        </th><th>
+		  Type
+	        </th><th>
+		  Description
+	        </th></tr></thead><tbody><tr><td>
+		  heartbeat
+	        </td><td>
+		  integer
+	        </td><td>
+		  frequency of heartbeat messages (in seconds)
+	        </td></tr><tr><td>
+		  sasl_mechs
+	        </td><td>
+		  --
+	        </td><td>
+		  For secure applications, we suggest CRAM-MD5,
+		  DIGEST-MD5, or GSSAPI. The ANONYMOUS method is not
+		  secure. The PLAIN method is secure only when used
+		  together with SSL. For Kerberos, sasl_mechs must be
+		  set to GSSAPI, sasl_protocol must be set to the
+		  principal for the qpidd broker, e.g. qpidd/, and
+		  sasl_server must be set to the host for the SASL
+		  server, e.g. sasl.com.  SASL External is supported
+		  using SSL certification, e.g.
+		  <code class="literal">ssl='true'&amp;sasl_mechs='EXTERNAL'</code>
+	        </td></tr><tr><td>
+		  sasl_encryption
+	        </td><td>
+          Boolean
+	        </td><td>
+          If <code class="literal">sasl_encryption='true'</code>, the JMS client attempts to negotiate a security layer with the broker using GSSAPI to encrypt the connection. Note that for this to happen, GSSAPI must be selected as the sasl_mech.
+	        </td></tr><tr><td>
+		  sasl_protocol
+	        </td><td>
+		  --
+	        </td><td>
+		  Used only for
+		  Kerberos. <code class="literal">sasl_protocol</code> must be
+		  set to the principal for the qpidd broker,
+		  e.g. <code class="literal">qpidd/</code>
+	        </td></tr><tr><td>
+		  sasl_server
+	        </td><td>
+		  --
+	        </td><td>
+		  For Kerberos, sasl_mechs must be set to GSSAPI,
+		  sasl_server must be set to the host for the SASL
+		  server, e.g. <code class="literal">sasl.com</code>.
+	        </td></tr><tr><td>
+		  trust_store
+	        </td><td>
+		  --
+	        </td><td>
+		  path to trust store
+	        </td></tr><tr><td>
+		  trust_store_password
+	        </td><td>
+	        </td><td>
+		  Trust store password
+	        </td></tr><tr><td>
+		  key_store
+	        </td><td>
+	        </td><td>
+		  path to key store
+	        </td></tr><tr><td>
+		  key_store_password
+	        </td><td>
+		  --
+	        </td><td>
+		  key store password
+	        </td></tr><tr><td>
+		  ssl
+	        </td><td>
+		  Boolean
+	        </td><td>
+		  If <code class="literal">ssl='true'</code>, the JMS client will encrypt the connection using SSL.
+	        </td></tr><tr><td>
+		  ssl_verify_hostname
+	        </td><td>
+		  Boolean
+	        </td><td>
+		  When using SSL you can enable hostname verification
+		  by using <code class="literal">ssl_verify_hostname='true'</code> in the broker
+		  URL.
+	        </td></tr><tr><td>
+		  ssl_cert_alias
+	        </td><td>
+
+	        </td><td>
+          If multiple certificates are present in the keystore, the alias will be used to extract the correct certificate.
+	        </td></tr><tr><td>
+		  retries
+	        </td><td>
+		  integer
+	        </td><td>
+          The number of times to retry connection to each broker in the broker list. Defaults to 1.
+	        </td></tr><tr><td>
+		  connectdelay
+	        </td><td>
+		  integer
+	        </td><td>
+		  Length of time to wait before attempting to reconnect (in milliseconds). Defaults to 0.
+	        </td></tr><tr><td>
+		  connecttimeout
+	        </td><td>
+		  integer
+	        </td><td>
+		  Length of time to wait for the connection to succeed (in milliseconds).  Defaults to 30000.
+	        </td></tr><tr><td>
+		  tcp_nodelay
+	        </td><td>
+		  Boolean
+	        </td><td>
+		  If <code class="literal">tcp_nodelay='true'</code>, TCP packet
+		  batching is disabled.
+	        </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="QpidJMS.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="QpidJMS.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch03s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 3. Using the Qpid JMS client </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 3.3. Java JMS Message Properties</td></tr></table></div></body></html>

Added: qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html/QpidWCF.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html/QpidWCF.html?rev=1236382&view=auto
==============================================================================
--- qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html/QpidWCF.html (added)
+++ qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html/QpidWCF.html Thu Jan 26 20:54:43 2012
@@ -0,0 +1,226 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Chapter 4. Using the Qpid WCF client</title><link rel="stylesheet" type="text/css" href="css/style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><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="ch03s06.html" title="3.6. Configuring the JMS Client"><link rel="next" href="ch04s02.html" title="4.2. Endpoints"></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 4. Using the Qpid WCF client</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s06.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ch04s02.html">Ne
 xt</a></td></tr></table><hr></div><div class="chapter" title="Chapter 4. Using the Qpid WCF client"><div class="titlepage"><div><div><h2 class="title"><a name="QpidWCF"></a>Chapter 4. Using the Qpid WCF client</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="section"><a href="QpidWCF.html#id412824">4.1. XML and Binary Bindings</a></span></dt><dt><span class="section"><a href="ch04s02.html">4.2. Endpoints</a></span></dt><dt><span class="section"><a href="ch04s03.html">4.3. Message Headers</a></span></dt><dt><span class="section"><a href="ch04s04.html">4.4. Security</a></span></dt><dt><span class="section"><a href="ch04s05.html">4.5. Transactions</a></span></dt></dl></div><div class="section" title="4.1. XML and Binary Bindings"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id412824"></a>4.1. XML and Binary Bindings</h2></div></div></div><p>The Qpid WCF client provides two bindings, e
 ach with support for
+      Windows .NET transactions.</p><p>The AmqpBinding is suitable for communication between two WCF
+      applications.  By default it uses the WCF binary .NET XML encoder
+      (BinaryMessageEncodingBindingElement) for efficient message
+      transmission, but it can also use the text and Message Transmission
+      Optimization Mechanism (MTOM) encoders.  Here is a traditional service
+      model sample program using the AmqpBinding.  It assumes that the queue
+      "hello_service_node" has been created and configured on the AMQP
+      broker.</p><div class="example"><a name="id412842"></a><p class="title"><b>Example 4.1. Traditional service model "Hello world!" example</b></p><div class="example-contents"><pre class="programlisting">
+namespace Apache.Qpid.Documentation.HelloService
+{
+  using System;
+  using System.ServiceModel;
+  using System.ServiceModel.Channels;
+  using System.Threading;
+  using Apache.Qpid.Channel;
+
+  [ServiceContract]
+  public interface IHelloService
+  {
+    [OperationContract(IsOneWay = true, Action = "*")]
+    void SayHello(string greeting);
+  }
+
+  public class HelloService : IHelloService
+  {
+    private static int greetingCount;
+
+    public static int GreetingCount
+    {
+      get { return greetingCount; }
+    }
+
+    public void SayHello(string greeting)
+    {
+      Console.WriteLine("Service received: " + greeting);
+      greetingCount++;
+    }</pre><pre class="programlisting">
+    static void Main(string[] args)
+    {
+      try
+      {
+        AmqpBinding amqpBinding = new AmqpBinding();
+        amqpBinding.BrokerHost = "localhost";
+        amqpBinding.BrokerPort = 5672;
+
+        ServiceHost serviceHost = new ServiceHost(typeof(HelloService));
+        serviceHost.AddServiceEndpoint(typeof(IHelloService),
+          amqpBinding, "amqp:hello_service_node");
+        serviceHost.Open();
+
+        // Send the service a test greeting
+        Uri amqpClientUri=new Uri("amqp:amq.direct?routingkey=hello_service_node");
+        EndpointAddress clientEndpoint = new EndpointAddress(amqpClientUri);
+        ChannelFactory&lt;IHelloService&gt; channelFactory =
+          new ChannelFactory&lt;IHelloService&gt;(amqpBinding, clientEndpoint);
+        IHelloService clientProxy = channelFactory.CreateChannel();
+
+        clientProxy.SayHello("Greetings from WCF client");
+
+        // wait for service to process the greeting
+        while (HelloService.GreetingCount == 0)
+        {
+          Thread.Sleep(100);
+        }
+        channelFactory.Close();
+        serviceHost.Close();
+      }
+      catch (Exception e)
+      {
+        Console.WriteLine("Exception: {0}", e);
+      }
+    }
+  }
+}
+      </pre></div></div><br class="example-break"><p>The second binding, AmqpBinaryBinding, is suitable for WCF
+      applications that need to inter-operate with non-WCF clients or that
+      wish to have direct access to the raw wire representation of the
+      message body.  It relies on a custom encoder to read and write raw
+      (binary) content which operates similarly to the ByteStream encoder
+      (introduced in .NET 4.0).  The encoder presents an abstract XML
+      infoset view of the raw message content on input.  On output, the
+      encoder does the reverse and peels away the XML infoset layer exposing
+      the raw content to the wire representation of the message body.  The
+      application must do the inverse of what the encoder does to allow the
+      XML infoset wrapper to cancel properly.  This is demonstrated in the
+      following sample code (using the channel programming model) which
+      directly manipulates or provides callbacks to the WCF message readers
+      and writers when the content is consumed.  In contrast to the
+      AmqpBinding sample where the simple greeting is encapsulated in a
+      compressed SOAP envelope, the wire representation of the message
+      contains the raw content and is identical and fully interoperable with
+      the Qpid C++ "Hello world!"  example.</p><div class="example"><a name="id412869"></a><p class="title"><b>Example 4.2. Binary  "Hello world!" example using the channel model</b></p><div class="example-contents"><pre class="programlisting">
+namespace Apache.Qpid.Samples.Channel.HelloWorld
+{
+  using System;
+  using System.ServiceModel;
+  using System.ServiceModel.Channels;
+  using System.ServiceModel.Description;
+  using System.Text;
+  using System.Xml;
+  using Apache.Qpid.Channel;
+
+  public class HelloWorld
+  {
+    static void Main(string[] args)
+    {
+      String broker = "localhost";
+      int port = 5672;
+      String target = "amq.topic";
+      String source = "my_topic_node";
+
+      if (args.Length &gt; 0)
+      {
+        broker = args[0];
+      }
+
+      if (args.Length &gt; 1)
+      {
+        port = int.Parse(args[1]);
+      }
+
+      if (args.Length &gt; 2)
+      {
+        target = args[2];
+      }
+
+      if (args.Length &gt; 3)
+      {
+        source = args[3];
+      }
+
+      AmqpBinaryBinding binding = new AmqpBinaryBinding();
+      binding.BrokerHost = broker;
+      binding.BrokerPort = port;
+
+      IChannelFactory&lt;IInputChannel&gt; receiverFactory = binding.BuildChannelFactory&lt;IInputChannel&gt;();
+      receiverFactory.Open();
+      IInputChannel receiver = receiverFactory.CreateChannel(new EndpointAddress("amqp:" + source));
+      receiver.Open();
+
+      IChannelFactory&lt;IOutputChannel&gt; senderFactory = binding.BuildChannelFactory&lt;IOutputChannel&gt;();
+      senderFactory.Open();
+      IOutputChannel sender = senderFactory.CreateChannel(new EndpointAddress("amqp:" + target));
+      sender.Open();
+
+      sender.Send(Message.CreateMessage(MessageVersion.None, "", new HelloWorldBinaryBodyWriter()));
+
+      Message message = receiver.Receive();
+      XmlDictionaryReader reader = message.GetReaderAtBodyContents();
+      while (!reader.HasValue)
+      {
+        reader.Read();
+      }
+
+      byte[] binaryContent = reader.ReadContentAsBase64();
+      string text = Encoding.UTF8.GetString(binaryContent);
+
+      Console.WriteLine(text);
+
+      senderFactory.Close();
+      receiverFactory.Close();
+    }
+  }
+
+  public class HelloWorldBinaryBodyWriter : BodyWriter
+  {
+    public HelloWorldBinaryBodyWriter() : base (true) {}
+
+    protected override void OnWriteBodyContents(XmlDictionaryWriter writer)
+    {
+      byte[] binaryContent = Encoding.UTF8.GetBytes("Hello world!");
+
+      // wrap the content:
+      writer.WriteStartElement("Binary");
+      writer.WriteBase64(binaryContent, 0, binaryContent.Length);
+    }
+  }
+}
+</pre></div></div><br class="example-break"><p>Bindings define ChannelFactories and ChannelListeners associated with
+      an AMQP Broker.  WCF will frequently automatically create and manage
+      the life cycle of a these and the resulting IChannel objects used in
+      message transfer.  The binding parameters that can be set are:</p><div class="table"><a name="id412908"></a><p class="title"><b>Table 4.1. WCF Binding Parameters</b></p><div class="table-contents"><table summary="WCF Binding Parameters" width="100%" border="1"><colgroup><col><col><col></colgroup><thead><tr><th>Parameter</th><th>Default</th><th>Description</th></tr></thead><tbody><tr><td>
+		BrokerHost
+	      </td><td>
+		localhost
+	      </td><td>
+		The broker's server name.  Currently the WCF channel
+		only supports connections with a single broker.
+		Failover to multiple brokers will be provided in the
+		future.
+	      </td></tr><tr><td>
+		BrokerPort
+	      </td><td>
+		5672
+	      </td><td>
+		The port the broker is listening on.
+	      </td></tr><tr><td>
+		PrefetchLimit
+	      </td><td>
+		0
+	      </td><td>
+		The number of messages to prefetch from the amqp
+		broker before the application actually consumes them.
+		Increasing this number can dramatically increase the
+		read performance in some circumstances.
+	      </td></tr><tr><td>
+		Shared
+	      </td><td>
+		false
+	      </td><td>
+		Indicates if separate channels to the same broker can
+		share an underlying AMQP tcp connection (provided they
+		also share the same authentication credentials).
+	      </td></tr><tr><td>
+		TransferMode
+	      </td><td>
+		buffered
+	      </td><td>
+		Indicates whether the channel's encoder uses the WCF
+		BufferManager cache to temporarily store message
+		content during the encoding/decoding phase.  For small
+		to medium sized SOAP based messages, buffered is
+		usually the preferred choice.  For binary messages,
+		streamed TransferMode is the more efficient mode.
+	      </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="ch03s06.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch04s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">3.6. Configuring the JMS Client </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 4.2. Endpoints</td></tr></table></div></body></html>

Added: qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html/acknowledgements.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html/acknowledgements.html?rev=1236382&view=auto
==============================================================================
--- qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html/acknowledgements.html (added)
+++ qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html/acknowledgements.html Thu Jan 26 20:54:43 2012
@@ -0,0 +1,21 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>2.7. Acknowledging Received Messages</title><link rel="stylesheet" type="text/css" href="css/style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><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="prefetch.html" title="2.6. Receiver Capacity (Prefetch)"><link rel="next" href="ch02s08.html" title="2.8. Receiving Messages from Multiple Sources"></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.7. Acknowledging Received Messages</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="prefetch.html">Prev</a> </td><th width="60%" align="center">Chapter 2. Using the Qpid Mes
 saging API</th><td width="20%" align="right"> <a accesskey="n" href="ch02s08.html">Next</a></td></tr></table><hr></div><div class="section" title="2.7. Acknowledging Received Messages"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="acknowledgements"></a>2.7. Acknowledging Received Messages</h2></div></div></div><p>Applications that receive messages should acknowledge their
+    receipt by calling the session's acknowledge method. As in the
+    case of sending messages, acknowledged transfer of messages to
+    receivers provides at-least-once reliability, which means that the
+    loss of the connection or a client crash does not result in lost
+    messages; durable messages are not lost even if the broker is
+    restarted.
+
+    Some cases may not require this however and the reliability can be
+    controlled through a link property in the address options (see
+    <a class="xref" href="section-addresses.html#table-link-properties" title="Table 2.3. Link Properties">Table 2.3, “Link Properties”</a>).</p><p>The acknowledge call acknowledges all messages received on
+    the session (i.e. all message that have been returned from a fetch
+    call on a receiver created on that session).</p><p>The acknowledge call also support an optional parameter
+    controlling whether the call is synchronous or not. A synchronous
+    acknowledge will block until the server has confirmed that it has
+    received the acknowledgement. In the asynchronous case, when the
+    call returns there is not yet any guarantee that the server has
+    received and processed the acknowledgement. The session may be
+    queried for the number of unsettled acknowledgements; when that
+    count is zero all acknowledgements made for received messages have
+    been successful.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="prefetch.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="ch02s08.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">2.6. Receiver Capacity (Prefetch) </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> 2.8. Receiving Messages from Multiple Sources</td></tr></table></div></body></html>

Added: qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html/ch01.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html/ch01.html?rev=1236382&view=auto
==============================================================================
--- qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html/ch01.html (added)
+++ qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html/ch01.html Thu Jan 26 20:54:43 2012
@@ -0,0 +1,18 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Chapter 1. Introduction</title><link rel="stylesheet" type="text/css" href="css/style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><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="id385926"></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/trunk/Programming-In-Apache-Qpid/html/ch02.html
URL: http://svn.apache.org/viewvc/qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html/ch02.html?rev=1236382&view=auto
==============================================================================
--- qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html/ch02.html (added)
+++ qpid/site/docs/books/trunk/Programming-In-Apache-Qpid/html/ch02.html Thu Jan 26 20:54:43 2012
@@ -0,0 +1,70 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Chapter 2. Using the Qpid Messaging API</title><link rel="stylesheet" type="text/css" href="css/style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1"><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="id392106"></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#id361262">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="section-addresses.html">2.4. Addresses</a></span></dt><dd><dl><dt><span class="section"><a href="section-addresses.html#id406630">2.4.1. Address Strings</a></span></dt><dt><span class="section"><a href="section-addresses.html#id406673">2.4.2. Subjects</a></span></dt><dt><span class="section"><a href="secti
 on-addresses.html#id407011">2.4.3. Address String Options</a></span></dt><dt><span class="section"><a href="section-addresses.html#section-address-string-bnf">2.4.4. Address String Grammar</a></span></dt></dl></dd><dt><span class="section"><a href="replay.html">2.5. Sender Capacity and Replay</a></span></dt><dt><span class="section"><a href="prefetch.html">2.6. Receiver Capacity (Prefetch)</a></span></dt><dt><span class="section"><a href="acknowledgements.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="connection-options.html">2.10. Connection Options</a></span></dt><dt><span class="section"><a href="section-Maps.html">2.11. Maps and Lists in Message Content</a></span></dt><dd><dl><dt><span class="section"><a href="section-Maps.html#section-P
 ython-Maps">2.11.1. Qpid Maps and Lists in Python</a></span></dt><dt><span class="section"><a href="section-Maps.html#section-cpp-Maps">2.11.2. Qpid Maps and Lists in C++</a></span></dt><dt><span class="section"><a href="section-Maps.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#id409703">2.15.1. Logging in C++</a></span></dt><dt><span class="section"><a href="ch02s15.html#id409744">2.15.2. Logging in Python</a></span></dt></dl></dd><dt><span class="section"><a href="section-amqp0-10-mapping.html">2.16. The AMQP 0-10 mapping</a></spa
 n></dt><dd><dl><dt><span class="section"><a href="section-amqp0-10-mapping.html#section-amqp0-10-message-props">2.16.1. 0-10 Message Property Keys</a></span></dt></dl></dd><dt><span class="section"><a href="Message-Groups-Guide.html">2.17. Using Message Groups</a></span></dt><dd><dl><dt><span class="section"><a href="Message-Groups-Guide.html#messagegroups-setup">2.17.1. Creating Message Group Queues</a></span></dt><dt><span class="section"><a href="Message-Groups-Guide.html#messagegroups-sending">2.17.2. Sending Grouped Messages</a></span></dt><dt><span class="section"><a href="Message-Groups-Guide.html#messagegroups-receiving">2.17.3. Receiving Grouped Messages</a></span></dt></dl></dd></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="id361262"></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="id361272"></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>



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


Mime
View raw message