You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ro...@apache.org on 2015/07/02 16:53:55 UTC
svn commit: r1688840 [15/15] - in /qpid/site: ./ docs/
docs/components/cpp-broker/ docs/components/messaging-api/ docs/releases/
docs/releases/qpid-cpp-0.34/ docs/releases/qpid-cpp-0.34/cpp-broker/
docs/releases/qpid-cpp-0.34/cpp-broker/book/ docs/rele...
Added: qpid/site/input/releases/qpid-cpp-0.34/cpp-broker/book/css/style.css
URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-cpp-0.34/cpp-broker/book/css/style.css?rev=1688840&view=auto
==============================================================================
--- qpid/site/input/releases/qpid-cpp-0.34/cpp-broker/book/css/style.css (added)
+++ qpid/site/input/releases/qpid-cpp-0.34/cpp-broker/book/css/style.css Thu Jul 2 14:53:53 2015
@@ -0,0 +1,279 @@
+/*
+ *
+ * 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 {
+ margin:0;
+ background:#FFFFFF;
+ font-family:"Verdana", sans-serif;
+ font-size:10pt;
+}
+
+.container {
+ width:950px;
+ margin:0 auto;
+}
+
+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;
+}
+
+div.breadcrumbs {
+ font-size:9pt;
+ margin-right:10pt;
+ padding-bottom:16px;
+}
+
+.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;
+}
+
+.header {
+ height:100px;
+ width:950px;
+ background:url(http://qpid.apache.org/images/header.png)
+}
+
+.logo {
+ text-align:center;
+ font-weight:600;
+ padding:0 0 0 0;
+ font-size:14px;
+ font-family:"Verdana", cursive;
+}
+
+.logo a {
+ color:#000000;
+ text-decoration:none;
+}
+
+.main_text_area {
+ margin-left:200px;
+}
+
+.main_text_area_top {
+ height:14px;
+ font-size:1px;
+}
+
+.main_text_area_bottom {
+ display:none;
+/* height:14px;
+ margin-bottom:4px;*/
+}
+
+.main_text_area_body {
+ padding:5px 24px;
+}
+
+.main_text_area_body p {
+ text-align:justify;
+}
+
+.main_text_area br {
+ line-height:10px;
+}
+
+.main_text_area h1 {
+ font-size:28px;
+ font-weight:600;
+ margin:0 0 24px 0;
+ color:#0c3b82;
+ font-family:"Verdana", Times, serif;
+}
+
+.main_text_area h2 {
+ font-size:24px;
+ font-weight:600;
+ margin:24px 0 8px 0;
+ color:#0c3b82;
+ font-family:"Verdana",Times, serif;
+}
+
+.main_text_area ol, .main_text_area ul {
+ padding:0;
+ margin:10px 0;
+ margin-left:20px;
+}
+
+.main_text_area li {
+/* margin-left:40px; */
+}
+
+.main_text_area, .menu_box {
+ font-size:13px;
+ line-height:17px;
+ color:#000000;
+}
+
+.main_text_area {
+ font-size:14px;
+}
+
+.main_text_area a {
+ color:#000000;
+}
+
+.main_text_area a:hover {
+ color:#000000;
+}
+
+.menu_box {
+ width:196px;
+ float:left;
+ margin-left:4px;
+}
+
+.menu_box_top {
+ background:url(http://qpid.apache.org/images/menu_top.png) no-repeat;
+ height:14px;
+ font-size:1px;
+}
+
+.menu_box_body {
+ background:url(http://qpid.apache.org/images/menu_body.png) repeat-y;
+ padding:5px 24px 5px 24px;
+}
+
+.menu_box_bottom {
+ background:url(http://qpid.apache.org/images/menu_bottom.png) no-repeat;
+ height:14px;
+ font-size:1px;
+ margin-bottom:1px;
+}
+
+.menu_box h3 {
+ font-size:20px;
+ font-weight:500;
+ margin:0 0 8px 0;
+ color:#0c3b82;
+ font-family:"Verdana",Times, serif;
+}
+
+.menu_box ul {
+ margin:12px;
+ padding:0px;
+}
+
+.menu_box li {
+ list-style:square;
+}
+
+.menu_box a {
+ color:#000000;
+ text-decoration:none;
+}
+
+.menu_box a:hover {
+ color:#000000;
+ text-decoration:underline;
+}
+
+
Added: qpid/site/input/releases/qpid-cpp-0.34/cpp-broker/book/ha-queue-replication.html.in
URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-cpp-0.34/cpp-broker/book/ha-queue-replication.html.in?rev=1688840&view=auto
==============================================================================
--- qpid/site/input/releases/qpid-cpp-0.34/cpp-broker/book/ha-queue-replication.html.in (added)
+++ qpid/site/input/releases/qpid-cpp-0.34/cpp-broker/book/ha-queue-replication.html.in Thu Jul 2 14:53:53 2015
@@ -0,0 +1,78 @@
+<div class="docbook"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">1.13. Replicating Queues with the HA module</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="chapter-ha.html">Prev</a> </td><th align="center" width="60%">Chapter 1. 
+ Running the AMQP Messaging Broker
+ </th><td align="right" width="20%"> <a accesskey="n" href="chapter-Managing-CPP-Broker.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="ha-queue-replication"></a>1.13. Replicating Queues with the HA module</h2></div></div></div><p>
+ As well as support for an active-passive cluster, the
+ HA module allows you to replicate individual queues,
+ even if the brokers are not in a cluster. The <em class="firstterm">original</em>
+ queue is used as normal. The <em class="firstterm">replica</em> queue is
+ updated automatically as messages are added to or removed from the original
+ queue.
+ </p><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Warning</h3><p>
+ It is not safe to modify the replica queue
+ other than via the automatic updates from the original. Adding or removing
+ messages on the replica queue will make replication inconsistent and may
+ cause message loss.
+ The HA module does <span class="emphasis"><em>not</em></span> enforce
+ restricted access to the replica queue (as it does in the case of a cluster)
+ so it is up to the application to ensure the replica is not used until it has
+ been disconnected from the original.
+ </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="idm221066074928"></a>1.13.1. Replicating queues</h3></div></div></div><p>
+ To create a replica queue, the HA module must be
+ loaded on both the original and replica brokers (it is loaded by default.)
+ You also need to set the configuration option:
+ </p><pre class="programlisting">
+ ha-queue-replication=yes
+ </pre><p>
+ to enable this feature on a stand-alone broker. It is automatically
+ enabled for brokers that are part of a cluster.
+ </p><p>
+ Suppose that <span class="command"><strong>myqueue</strong></span> is a queue on
+ <span class="command"><strong>node1</strong></span> and we want to create a replica of
+ <span class="command"><strong>myqueue</strong></span> on <span class="command"><strong>node2</strong></span> (where both brokers
+ are using the default AMQP port.) This is accomplished by the command:
+ </p><pre class="programlisting">
+ qpid-config --broker=node2 add queue --start-replica node1 myqueue
+ </pre><p>
+ If <span class="command"><strong>myqueue</strong></span> already exists on the replica
+ broker you can start replication from the original queue like this:
+ </p><pre class="programlisting">
+ qpid-ha replicate -b node2 node1 myqueue
+ </pre><p>
+ </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="idm221064396992"></a>1.13.2. Replicating queues between clusters</h3></div></div></div><p>
+ You can replicate queues between two standalone brokers, between a
+ standalone broker and a cluster, or between two clusters (see <a class="xref" href="chapter-ha.html" title="1.12. Active-Passive Messaging Clusters">Section 1.12, “Active-Passive Messaging Clusters”</a>.) For failover in a cluster there are two cases to
+ consider.
+ </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
+ When the <span class="emphasis"><em>original</em></span> queue is on the active node
+ of a cluster, failover is automatic. If the active node
+ fails, the replication link will automatically reconnect and the
+ replica will continue to be updated from the new primary.
+ </p></li><li class="listitem"><p>
+ When the <span class="emphasis"><em>replica</em></span> queue is on the active node of a
+ cluster, there is no automatic failover. However you can use the
+ following workaround.
+ </p></li></ol></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="idm221064086896"></a>1.13.2.1. Work around for fail-over of replica queue in a cluster</h4></div></div></div><p>
+ When a primary broker fails the cluster resource manager calls a script
+ to promote a backup broker to be the new primary. By default this script
+ is <code class="filename">/etc/init.d/qpidd-primary</code> but you can modify
+ that in your <code class="filename">cluster.conf</code> file (see <a class="xref" href="chapter-ha.html#ha-rm-config" title="1.12.5. Configuring with rgmanager as resource manager">Section 1.12.5, “Configuring with <span class="command"><strong>rgmanager</strong></span> as resource manager”</a>.)
+ </p><p>
+ You can modify this script (on each host in your cluster) by adding
+ commands to create your replica queues just before the broker is
+ promoted, as indicated in the following exceprt from the script:
+ </p><pre class="programlisting">
+start() {
+ service qpidd start
+ echo -n $"Promoting qpid daemon to cluster primary: "
+ ################################
+ #### Add your commands here ####
+ ################################
+ $QPID_HA -b localhost:$QPID_PORT promote
+ [ "$?" -eq 0 ] && success || failure
+}
+ </pre><p>
+ Your commands will be run, and your replicas created, whenever
+ the system fails over to a new primary.
+ </p></div></div></div><div class="navfooter"><hr /><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="chapter-ha.html">Prev</a> </td><td align="center" width="20%"><a accesskey="u" href="ch01.html">Up</a></td><td align="right" width="40%"> <a accesskey="n" href="chapter-Managing-CPP-Broker.html">Next</a></td></tr><tr><td align="left" valign="top" width="40%">1.12. Active-Passive Messaging Clusters </td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top" width="40%"> Chapter 2. 
+ Managing the AMQP Messaging Broker
+ </td></tr></table></div></div>
\ No newline at end of file
Added: qpid/site/input/releases/qpid-cpp-0.34/cpp-broker/book/index.html.in
URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-cpp-0.34/cpp-broker/book/index.html.in?rev=1688840&view=auto
==============================================================================
--- qpid/site/input/releases/qpid-cpp-0.34/cpp-broker/book/index.html.in (added)
+++ qpid/site/input/releases/qpid-cpp-0.34/cpp-broker/book/index.html.in Thu Jul 2 14:53:53 2015
@@ -0,0 +1,108 @@
+<div class="docbook"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">AMQP Messaging Broker (Implemented in C++)</th></tr><tr><td align="left" width="20%"> </td><th align="center" width="60%"> </th><td align="right" width="20%"> <a accesskey="n" href="pr01.html">Next</a></td></tr></table><hr /></div><div class="book"><div class="titlepage"><div><div><h1 class="title"><a id="idm221077382560"></a>AMQP Messaging Broker (Implemented in C++)</h1></div></div><hr /></div><div class="toc"><p><strong>Table of Contents</strong></p><dl class="toc"><dt><span class="preface"><a href="pr01.html">Introduction</a></span></dt><dt><span class="chapter"><a href="ch01.html">1.
+ Running the AMQP Messaging Broker
+ </a></span></dt><dd><dl><dt><span class="section"><a href="ch01.html#section-Running-a-Qpid-CPP-Broker">1.1.
+ Running a Qpid C++ Broker
+ </a></span></dt><dd><dl><dt><span class="section"><a href="ch01.html#RASC-BuildingtheCppBrokerandClientLibraries">1.1.1.
+ Building the
+ C++ Broker and Client Libraries
+ </a></span></dt><dt><span class="section"><a href="ch01.html#RASC-RunningtheCppBroker">1.1.2.
+ Running the C++ Broker
+ </a></span></dt><dt><span class="section"><a href="ch01.html#RASC-Mostcommonquestionsgettingqpiddrunning">1.1.3.
+ Most
+ common questions getting qpidd running
+ </a></span></dt><dt><span class="section"><a href="ch01.html#RASC-Authentication">1.1.4.
+ Authentication
+ </a></span></dt><dt><span class="section"><a href="ch01.html#RASC-Slightlymorecomplexconfiguration">1.1.5.
+ Slightly more
+ complex configuration
+ </a></span></dt><dt><span class="section"><a href="ch01.html#RASC-Loadingextramodules">1.1.6.
+ Loading extra modules
+ </a></span></dt><dt><span class="section"><a href="ch01.html#RASC-message-timestamps">1.1.7. Timestamping Received Messages</a></span></dt><dt><span class="section"><a href="ch01.html#RASC-logging-options">1.1.8. Logging Options</a></span></dt></dl></dd><dt><span class="section"><a href="ch01s02.html">1.2.
+ Cheat Sheet for configuring Queue Options
+ </a></span></dt><dd><dl><dt><span class="section"><a href="ch01s02.html#CheatSheetforconfiguringQueueOptions-ConfiguringQueueOptions">1.2.1.
+ Configuring
+ Queue Options
+ </a></span></dt></dl></dd><dt><span class="section"><a href="ch01s03.html">1.3.
+ Cheat Sheet for configuring Exchange Options
+ </a></span></dt><dd><dl><dt><span class="section"><a href="ch01s03.html#CheatSheetforconfiguringExchangeOptions-ConfiguringExchangeOptions">1.3.1.
+ Configuring Exchange Options
+ </a></span></dt></dl></dd><dt><span class="section"><a href="chap-Messaging_User_Guide-Broker_Federation.html">1.4. Broker Federation</a></span></dt><dd><dl><dt><span class="section"><a href="chap-Messaging_User_Guide-Broker_Federation.html#sect-Messaging_User_Guide-Broker_Federation-Message_Routes">1.4.1. Message Routes</a></span></dt><dt><span class="section"><a href="chap-Messaging_User_Guide-Broker_Federation.html#sect-Messaging_User_Guide-Broker_Federation-Federation_Topologies">1.4.2. Federation Topologies</a></span></dt><dt><span class="section"><a href="chap-Messaging_User_Guide-Broker_Federation.html#sect-Messaging_User_Guide-Broker_Federation-Federation_among_High_Availability_Message_Clusters">1.4.3. Federation among High Availability Message Clusters</a></span></dt><dt><span class="section"><a href="chap-Messaging_User_Guide-Broker_Federation.html#sect-Messaging_User_Guide-Broker_Federation-The_qpid_route_Utility">1.4.4. The qpid-route Utility</a></span></dt><dt><spa
n class="section"><a href="chap-Messaging_User_Guide-Broker_Federation.html#federation-broker-options">1.4.5. Broker options affecting federation</a></span></dt></dl></dd><dt><span class="section"><a href="chap-Messaging_User_Guide-Security.html">1.5. Security</a></span></dt><dd><dl><dt><span class="section"><a href="chap-Messaging_User_Guide-Security.html#sect-Messaging_User_Guide-Security-User_Authentication">1.5.1. User Authentication</a></span></dt><dt><span class="section"><a href="chap-Messaging_User_Guide-Security.html#sect-Messaging_User_Guide-Security-Authorization">1.5.2. Authorization</a></span></dt><dt><span class="section"><a href="chap-Messaging_User_Guide-Security.html#sect-Messaging_User_Guide-Authorization-Specifying_ACL_Quotas">1.5.3. User Connection and Queue Quotas</a></span></dt><dt><span class="section"><a href="chap-Messaging_User_Guide-Security.html#sect-Messaging_User_Guide-Security-Encryption_using_SSL">1.5.4. Encryption using SSL</a></span></dt></dl></dd><
dt><span class="section"><a href="ch01s06.html">1.6. LVQ - Last Value Queue</a></span></dt><dd><dl><dt><span class="section"><a href="ch01s06.html#LVQ-UnderstandingLVQ">1.6.1. Understanding LVQ</a></span></dt><dt><span class="section"><a href="ch01s06.html#LVQ-Creating">1.6.2. Creating a Last Value Queue</a></span></dt><dt><span class="section"><a href="ch01s06.html#LVQ-Example">1.6.3. LVQ Example</a></span></dt><dt><span class="section"><a href="ch01s06.html#LVQ-Deprecated">1.6.4. Deprecated LVQ Modes</a></span></dt></dl></dd><dt><span class="section"><a href="queue-state-replication.html">1.7.
+ Queue State Replication
+ </a></span></dt><dd><dl><dt><span class="section"><a href="queue-state-replication.html#queuestatereplication-AsynchronousReplicationofQueueState">1.7.1.
+ Asynchronous
+ Replication of Queue State
+ </a></span></dt></dl></dd><dt><span class="section"><a href="producer-flow-control.html">1.8.
+ Producer Flow Control
+ </a></span></dt><dd><dl><dt><span class="section"><a href="producer-flow-control.html#producerflowcontrol-Overview">1.8.1.
+ Overview
+ </a></span></dt><dt><span class="section"><a href="producer-flow-control.html#producerflowcontrol-UserInterface">1.8.2.
+ User Interface
+ </a></span></dt></dl></dd><dt><span class="section"><a href="AMQP-Compatibility.html">1.9.
+ AMQP compatibility
+ </a></span></dt><dd><dl><dt><span class="section"><a href="AMQP-Compatibility.html#AMQPcompatibility-AMQPCompatibilityofQpidreleases-3A">1.9.1.
+ AMQP
+ Compatibility of Qpid releases:
+ </a></span></dt><dt><span class="section"><a href="AMQP-Compatibility.html#AMQPcompatibility-InteroptablebyAMQPspecificationversion">1.9.2.
+ Interop
+ table by AMQP specification version
+ </a></span></dt></dl></dd><dt><span class="section"><a href="QpidInteroperabilityDocumentation-QpidInteroperabilityDocumentation.html">1.10. Qpid Interoperability Documentation</a></span></dt><dd><dl><dt><span class="section"><a href="QpidInteroperabilityDocumentation-QpidInteroperabilityDocumentation.html#QpidInteroperabilityDocumentation-SASL">1.10.1.
+ SASL
+ </a></span></dt></dl></dd><dt><span class="section"><a href="Using-message-groups.html">1.11.
+ Using Message Groups
+ </a></span></dt><dd><dl><dt><span class="section"><a href="Using-message-groups.html#usingmessagegroups-Overview">1.11.1.
+ Overview
+ </a></span></dt><dt><span class="section"><a href="Using-message-groups.html#usingmessagegroups-GroupingMessages">1.11.2.
+ Grouping Messages
+ </a></span></dt><dt><span class="section"><a href="Using-message-groups.html#usingmessagegroups-BrokerRole">1.11.3.
+ The Role of the Broker
+ </a></span></dt><dt><span class="section"><a href="Using-message-groups.html#usingmessagegroups-ConsumerGuide">1.11.4.
+ Well Behaved Consumers
+ </a></span></dt><dt><span class="section"><a href="Using-message-groups.html#usingmessagegroups-BrokerConfig">1.11.5.
+ Broker Configuration
+ </a></span></dt></dl></dd><dt><span class="section"><a href="chapter-ha.html">1.12. Active-Passive Messaging Clusters</a></span></dt><dd><dl><dt><span class="section"><a href="chapter-ha.html#ha-overview">1.12.1. Overview</a></span></dt><dt><span class="section"><a href="chapter-ha.html#ha-virtual-ip">1.12.2. Virtual IP Addresses</a></span></dt><dt><span class="section"><a href="chapter-ha.html#ha-broker-config">1.12.3. Configuring the Brokers</a></span></dt><dt><span class="section"><a href="chapter-ha.html#ha-rm">1.12.4. The Cluster Resource Manager</a></span></dt><dt><span class="section"><a href="chapter-ha.html#ha-rm-config">1.12.5. Configuring with <span class="command"><strong>rgmanager</strong></span> as resource manager</a></span></dt><dt><span class="section"><a href="chapter-ha.html#ha-broker-admin">1.12.6. Broker Administration Tools</a></span></dt><dt><span class="section"><a href="chapter-ha.html#ha-replicate-values">1.12.7. Controlling replication of queues and
exchanges</a></span></dt><dt><span class="section"><a href="chapter-ha.html#ha-failover">1.12.8. Client Connection and Fail-over</a></span></dt><dt><span class="section"><a href="chapter-ha.html#ha-security">1.12.9. Security and Access Control.</a></span></dt><dt><span class="section"><a href="chapter-ha.html#ha-other-rm">1.12.10. Integrating with other Cluster Resource Managers</a></span></dt><dt><span class="section"><a href="chapter-ha.html#ha-store">1.12.11. Using a message store in a cluster</a></span></dt><dt><span class="section"><a href="chapter-ha.html#ha-troubleshoot">1.12.12. Troubleshooting a cluster</a></span></dt></dl></dd><dt><span class="section"><a href="ha-queue-replication.html">1.13. Replicating Queues with the HA module</a></span></dt><dd><dl><dt><span class="section"><a href="ha-queue-replication.html#idm221066074928">1.13.1. Replicating queues</a></span></dt><dt><span class="section"><a href="ha-queue-replication.html#idm221064396992">1.13.2. Replicating queue
s between clusters</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="chapter-Managing-CPP-Broker.html">2.
+ Managing the AMQP Messaging Broker
+ </a></span></dt><dd><dl><dt><span class="section"><a href="chapter-Managing-CPP-Broker.html#section-Managing-CPP-Broker">2.1. Managing the C++ Broker </a></span></dt><dd><dl><dt><span class="section"><a href="chapter-Managing-CPP-Broker.html#MgmtC-2B-2B-Usingqpidconfig">2.1.1.
+ Using qpid-config
+ </a></span></dt><dt><span class="section"><a href="chapter-Managing-CPP-Broker.html#MgmtC-2B-2B-Usingqpidroute">2.1.2.
+ Using qpid-route
+ </a></span></dt><dt><span class="section"><a href="chapter-Managing-CPP-Broker.html#MgmtC-2B-2B-Usingqpidtool">2.1.3.
+ Using qpid-tool
+ </a></span></dt><dt><span class="section"><a href="chapter-Managing-CPP-Broker.html#MgmtC-2B-2B-Usingqpidprintevents">2.1.4.
+ Using
+ qpid-printevents
+ </a></span></dt><dt><span class="section"><a href="chapter-Managing-CPP-Broker.html#idm221066922768">2.1.5. Using qpid-ha</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></dd></dl></div><div class="list-of-tables"><p><strong>List of Tables</strong></p><dl><dt>1.1. <a href="ch01.html#idm221069483648">QMF Management - Broker Methods for Managing the Timestamp Configuration</a></dt><dt>1.2. <a href="ch01.html#idm221069470480">C++ Broker Log Severity Levels</a></dt><dt>1.3. <a href="ch01.html#idm221069458848">C++ Broker Log Categories</a></dt><dt>1.4. <a href="ch01.html#idm221069445984">C++ Broker Log Statement Attributes</a></dt><dt>1.5. <a href="ch01.html#idm221069434576">C++ Broker Log Enable/Disable RULE Format</a></dt><dt>1.6. <a href="ch01.html#idm221069424128">C++ Broker Log Enable/Disable Settings Tables</a></dt><dt>1.7. <a href="ch01.html#idm221069413008">C++ Broker Log Statement Visibility Determination</a></dt><dt>1.8. <a href="ch01.html#idm221069399712">QMF Management - Broker Methods for Managing the Log Enable/Disable Settings</a></dt><dt>1.9. <a href="chap-Messaging_User_Guide-Broker_Federation.htm
l#tabl-Messaging_User_Guide-The_qpid_route_Utility-qpid_route_options"><span class="command">qpid-route</span> options</a></dt><dt>1.10. <a href="chap-Messaging_User_Guide-Broker_Federation.html#tabl-Messaging_User_Guide-Resilient_Connections-State_values_in_qpid_route_list_connections">State values in <span class="command">$ qpid-route list connections</span></a></dt><dt>1.11. <a href="chap-Messaging_User_Guide-Broker_Federation.html#federation-broker-options-table">Broker Options for Federation</a></dt><dt>1.12. <a href="chap-Messaging_User_Guide-Security.html#tabl-Messaging_User_Guide-ACL_Syntax-ACL_Rules_permission">ACL Rules: permission</a></dt><dt>1.13. <a href="chap-Messaging_User_Guide-Security.html#tabl-Messaging_User_Guide-ACL_Syntax-ACL_Rulesaction">ACL Rules: action</a></dt><dt>1.14. <a href="chap-Messaging_User_Guide-Security.html#tabl-Messaging_User_Guide-ACL_Syntax-ACL_Rulesobject">ACL Rules:object</a></dt><dt>1.15. <a href="chap-Messaging_User_Guide-Security.html#tab
l-Messaging_User_Guide-ACL_Syntax-ACL_Rulesproperty">ACL Rules: property</a></dt><dt>1.16. <a href="chap-Messaging_User_Guide-Security.html#tabl-Messaging_User_Guide-ACL_Syntax-ACL_ActionObject_properties">Broker Lookup Events With Allowed Action, Object, and Properties</a></dt><dt>1.17. <a href="chap-Messaging_User_Guide-Security.html#tabl-Messaging_User_Guide-ACL_Syntax-ACL_UsernameSubstitution">ACL User Name and Domain Name Substitution Keywords</a></dt><dt>1.18. <a href="chap-Messaging_User_Guide-Security.html#tabl-Messaging_User_Guide-ACL_Syntax-ACL_TopicExchangeMatch">Topic Exchange Wildcard Match Examples</a></dt><dt>1.19. <a href="chap-Messaging_User_Guide-Security.html#tabl-Messaging_User_Guide-Enabling_SSL_in_Clients-SSL_Client_Environment_Variables_for_C_clients">SSL Client Environment Variables for C++ clients</a></dt><dt>1.20. <a href="producer-flow-control.html#idm221064908688">Queue Declare Method Flow Control Arguments</a></dt><dt>1.21. <a href="producer-flow-control
.html#idm221065852960">Flow Control Statistics available in Queue's QMF Class</a></dt><dt>1.22. <a href="AMQP-Compatibility.html#idm221065760912">AMQP Version Support by Qpid Release</a></dt><dt>1.23. <a href="AMQP-Compatibility.html#idm221065102480">AMQP Version Support - alternate format</a></dt><dt>1.24. <a href="QpidInteroperabilityDocumentation-QpidInteroperabilityDocumentation.html#idm221063780032">SASL Mechanism Support</a></dt><dt>1.25. <a href="QpidInteroperabilityDocumentation-QpidInteroperabilityDocumentation.html#idm221066592448">SASL Custom Mechanisms</a></dt><dt>1.26. <a href="Using-message-groups.html#idm221067383744">qpid-config options for creating message group queues</a></dt><dt>1.27. <a href="Using-message-groups.html#idm221066655248">Queue Declare/Address Syntax Message Group Configuration Arguments</a></dt><dt>1.28. <a href="chapter-ha.html#ha-broker-options">Broker Options for High Availability Messaging Cluster</a></dt><dt>1.29. <a href="chapter-ha.html#ha-se
curity-options">HA Security Options</a></dt><dt>2.1. <a href="ch02s02.html#idm221066568848">XML Attributes for QMF Properties and Statistics</a></dt><dt>2.2. <a href="ch02s02.html#idm221066641472">QMF Datatypes</a></dt><dt>2.3. <a href="ch02s02.html#idm221068539888">XML Schema Mapping for QMF Types</a></dt><dt>2.4. <a href="ch02s03.html#idm221064043488">QMF Python Console Class Methods</a></dt></dl></div><div class="list-of-examples"><p><strong>List of Examples</strong></p><dl><dt>1.1. <a href="ch01.html#idm221069477680">Enabling Message Timestamping via QMF - Python</a></dt><dt>1.2. <a href="ch01.html#idm221069391568">
+ Querying Log Settings via qpid-ctrl utility
+ </a></dt><dt>1.3. <a href="ch01.html#idm221069387712">
+ Setting Log Settings via qpid-ctrl utility
+ </a></dt><dt>1.4. <a href="Using-message-groups.html#idm221063834944">Creating a message group queue via qpid-config</a></dt><dt>1.5. <a href="Using-message-groups.html#idm221064761040">Creating a message group queue using address syntax (C++)</a></dt><dt>1.6. <a href="Using-message-groups.html#idm221064705024">Overriding the default message group identifier for the broker</a></dt></dl></div></div><div class="navfooter"><hr /><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"> </td><td align="center" width="20%"> </td><td align="right" width="40%"> <a accesskey="n" href="pr01.html">Next</a></td></tr><tr><td align="left" valign="top" width="40%"> </td><td align="center" width="20%"> </td><td align="right" valign="top" width="40%"> Introduction</td></tr></table></div></div>
\ No newline at end of file
Added: qpid/site/input/releases/qpid-cpp-0.34/cpp-broker/book/pr01.html.in
URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-cpp-0.34/cpp-broker/book/pr01.html.in?rev=1688840&view=auto
==============================================================================
--- qpid/site/input/releases/qpid-cpp-0.34/cpp-broker/book/pr01.html.in (added)
+++ qpid/site/input/releases/qpid-cpp-0.34/cpp-broker/book/pr01.html.in Thu Jul 2 14:53:53 2015
@@ -0,0 +1,6 @@
+<div class="docbook"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">Introduction</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="index.html">Prev</a> </td><th align="center" width="60%"> </th><td align="right" width="20%"> <a accesskey="n" href="ch01.html">Next</a></td></tr></table><hr /></div><div class="preface"><div class="titlepage"><div><div><h1 class="title"><a id="idm221069731760"></a>Introduction</h1></div></div></div><p>Qpid provides two AMQP messaging brokers:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Implemented in C++ - high performance, low latency, and RDMA support.</p></li><li class="listitem"><p>Implemented in Java - Fully JMS compliant, runs on any Java platform.</p></li></ul></div><p>Both AMQP messaging brokers support clients in multiple
+ languages, as long as the messaging client and the messaging
+ broker use the same version of AMQP. See <a class="link" href="AMQP-Compatibility.html" title="1.9.  AMQP compatibility">AMQP Compatibility</a> to see
+ which messaging clients work with each broker.</p><p>This manual contains information specific to the broker that is implemented in C++.</p></div><div class="navfooter"><hr /><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="index.html">Prev</a> </td><td align="center" width="20%"> </td><td align="right" width="40%"> <a accesskey="n" href="ch01.html">Next</a></td></tr><tr><td align="left" valign="top" width="40%">AMQP Messaging Broker (Implemented in C++) </td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top" width="40%"> Chapter 1. 
+ Running the AMQP Messaging Broker
+ </td></tr></table></div></div>
\ No newline at end of file
Added: qpid/site/input/releases/qpid-cpp-0.34/cpp-broker/book/producer-flow-control.html.in
URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-cpp-0.34/cpp-broker/book/producer-flow-control.html.in?rev=1688840&view=auto
==============================================================================
--- qpid/site/input/releases/qpid-cpp-0.34/cpp-broker/book/producer-flow-control.html.in (added)
+++ qpid/site/input/releases/qpid-cpp-0.34/cpp-broker/book/producer-flow-control.html.in Thu Jul 2 14:53:53 2015
@@ -0,0 +1,191 @@
+<div class="docbook"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">1.8. 
+ Producer Flow Control
+ </th></tr><tr><td align="left" width="20%"><a accesskey="p" href="queue-state-replication.html">Prev</a> </td><th align="center" width="60%">Chapter 1. 
+ Running the AMQP Messaging Broker
+ </th><td align="right" width="20%"> <a accesskey="n" href="AMQP-Compatibility.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="producer-flow-control"></a>1.8. 
+ Producer Flow Control
+ </h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="producerflowcontrol-Overview"></a>1.8.1. 
+ Overview
+ </h3></div></div></div><p>
+ As of release 0.10, the C++ broker supports the use of flow control to
+ throttle back message producers that are at risk of overflowing a
+ destination queue.
+ </p><p>
+ Each queue in the C++ broker has two threshold values associated with it:
+ </p><p>
+ Flow Stop Threshold: this is the level of queue resource
+ utilization above which flow control will be enabled. Once this
+ threshold is crossed, the queue is considered in danger of overflow.
+ </p><p>
+ Flow Resume Threshold - this is the level of queue resource utilization
+ below which flow control will be disabled. Once this threshold is
+ crossed, the queue is no longer considered in danger of overflow.
+ </p><p>
+ In the above description, queue resource utilization may be
+ defined as the total count of messages currently enqueued, or the total
+ sum of all message content in bytes.
+ </p><p>
+ The value for a queue's Flow Stop Threshold must be greater than or
+ equal to the value of the queue's Flow Resume Threshold.
+ </p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="producerflowcontrol-QueueThresholdsExample"></a>1.8.1.1. 
+ Example
+ </h4></div></div></div><p>
+ Let's consider a queue with a maximum limit set on the total number of
+ messages that may be enqueued to that queue. Assume this maximum
+ message limit is 1000 messages. Assume also that the user configures a
+ Flow Stop Threshold of 900 messages, and a Flow Resume Threshold of 500
+ messages. Then the following holds:
+ </p><p>
+ The queue's initial flow control state is "OFF".
+ </p><p>
+ While the total number of enqueued messages is less than or equal to
+ 900, the queue's flow control state remains "OFF".
+ </p><p>
+ When the total number of enqueued messages is greater than 900, the
+ queue's flow control state transitions to "ON".
+ </p><p>
+ When the queue's flow control state is "ON", it remains "ON" until the
+ total number of enqueued messages is less than 500. At that point, the queue's
+ flow control state transitions to "OFF".
+ </p><p>
+ A similar example using total enqueued content bytes as the threshold
+ units are permitted.
+ </p></div><p>
+ Thresholds may be set using both total message counts and total byte
+ counts. In this case, the following rules apply:
+ </p><p>
+ 1) Flow control is "ON" when either stop threshold value is crossed.
+ </p><p>
+ 2) Flow control remains "ON" until both resume thresholds are satisfied.
+ </p><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="producerflowcontro-MultiThresholdExample"></a>1.8.1.2. 
+ Example
+ </h4></div></div></div><p>
+ Let's consider a queue with a maximum size limit of 10K bytes, and 5000
+ messages. A user may assign a Flow Stop Threshold based on a total
+ message count of 4000 messages. They may also assigne a Flow Stop
+ Threshold of 8K bytes. The queue's flow control state transitions to
+ "ON" if either threshold is crossed: (total-msgs greater-than 4000 OR total-bytes
+ greater-than 8K).
+ </p><p>
+ Assume the user has assigned Flow Resume threshold's of 3000 messages and
+ 6K bytes. Then the queue's flow control will remain active until both
+ thresholds are satified: (total-msg less-than 3000 AND total-bytes less-than 6K).
+ </p></div><p>
+ The Broker enforces flow control by delaying the completion of the
+ Message.Transfer command that causes a message to be delivered to a queue
+ with active flow control. The completion of the Message.Transfer command
+ is held off until flow control state transitions to "OFF" for all queues
+ that are a destination for that command.
+ </p><p>
+ A message producing client is permitted to have a finite number of
+ commands pending completion. When the total number of these outstanding
+ commands reaches the limit, the client must not issue further commands
+ until one or more of the outstanding commands have completed. This
+ window of outstanding commands is considered the sender's "capacity".
+ This allows any given producer to have a "capacity's" worth of messages
+ blocked due to flow control before the sender must stop sending further
+ messages.
+ </p><p>
+ This capacity window must be considered when determining a suitable
+ flow stop threshold for a given queue, as a producer may send its
+ capacity worth of messages _after_ a queue has reached the flow stop
+ threshold. Therefore, a flow stop threshould should be set such that
+ the queue can accomodate more messages without overflowing.
+ </p><p>
+ For example, assume two clients, C1 and C2, are producing messages to
+ one particular destination queue. Assume client C1 has a configured
+ capacity of 50 messages, and client C2's capacity is 15 messages. In
+ this example, assume C1 and C2 are the only clients queuing messages to
+ a given queue. If this queue has a Flow Stop Threshold of 100
+ messages, then, worst-case, the queue may receive up to 165 messages
+ before clients C1 and C2 are blocked from sending further messages.
+ This is due to the fact that the queue will enable flow control on
+ receipt of its 101'st message - preventing the completion of the
+ Message.Transfer command that carried the 101'st message. However, C1
+ and C2 are allowed to have a total of 65 (50 for C1 and 15 for C2)
+ messages pending completion of Message.Transfer before they will stop
+ producing messages. Thus, up to 65 messages may be enqueued beyond the
+ flow stop threshold before the producers will be blocked.
+ </p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="producerflowcontrol-UserInterface"></a>1.8.2. 
+ User Interface
+ </h3></div></div></div><p>
+ By default, the C++ broker assigns a queue's flow stop and flow resume
+ thresholds when the queue is created. The C++ broker also allows the
+ user to manually specify the flow control thresholds on a per queue
+ basis.
+ </p><p>
+ However, queues that have been configured with a Limit Policy of type
+ RING or RING-STRICT do NOT have queue flow thresholds enabled by
+ default. The nature of a RING queue defines its behavior when its
+ capacity is reach: replace the oldest message.
+ </p><p>
+ The flow control state of a queue can be determined by the "flowState"
+ boolean in the queue's QMF management object. The queue's management
+ object also contains a counter that increments each time flow control
+ becomes active for the queue.
+ </p><p>
+ The broker applies a threshold ratio to compute a queue's default flow
+ control configuration. These thresholds are expressed as a percentage
+ of a queue's maximum capacity. There is one value for determining the
+ stop threshold, and another for determining the resume threshold. The
+ user may configure these percentages using the following broker
+ configuration options:
+ </p><pre class="programlisting">
+ --default-flow-stop-threshold ("Queue capacity level at which flow control is activated.")
+ --default-flow-resume-threshold ("Queue capacity level at which flow control is de-activated.")
+ </pre><p>
+ For example:
+ </p><pre class="programlisting">
+ qpidd --default-flow-stop-threshold=90 --default-flow-resume-threshold=75
+ </pre><p>
+ Sets the default flow stop threshold to 90% of a queue's maximum
+ capacity and the flow resume threshold to 75% of the maximum capacity.
+ If a queue is created with a default-queue-limit of 10000 bytes, then
+ the default flow stop threshold would be 90% of 10000 = 9000 bytes and
+ the flow resume threshold would be 75% of 10000 = 7500. The same
+ computation is performed should a queue be created with a maximum size
+ expressed as a message count instead of a byte count.
+ </p><p>
+ If not overridden by the user, the value of the
+ default-flow-stop-threshold is 80% and the value of the
+ default-flow-resume-threshold is 70%.
+ </p><p>
+ The user may disable default queue flow control broker-wide by
+ specifying the value 0 for both of these configuration options. Note
+ that flow control may still be applied manually on a per-queue basis in
+ this case.
+ </p><p>
+ The user may manually set the flow thresholds when creating a queue.
+ The following options may be provided when adding a queue using the
+ <span class="command"><strong>qpid-config</strong></span> command line tool:
+ </p><pre class="programlisting">
+ --flow-stop-size=<em class="replaceable"><code>N</code></em> Sets the queue's flow stop threshold to <em class="replaceable"><code>N</code></em> total bytes.
+ --flow-resume-size=<em class="replaceable"><code>N</code></em> Sets the queue's flow resume threshold to <em class="replaceable"><code>N</code></em> total bytes.
+ --flow-stop-count=<em class="replaceable"><code>N</code></em> Sets the queue's flow stop threshold to <em class="replaceable"><code>N</code></em> total messages.
+ --flow-resume-count=<em class="replaceable"><code>N</code></em> Sets the queue's flow resume threshold to <em class="replaceable"><code>N</code></em> total messages.
+ </pre><p>
+ Flow thresholds may also be specified in the
+ <span class="command"><strong>queue.declare</strong></span> method, via the
+ <span class="command"><strong>arguments</strong></span> parameter map. The following keys can be
+ provided in the arguments map for setting flow thresholds:
+ </p><div class="table"><a id="idm221064908688"></a><p class="title"><strong>Table 1.20. Queue Declare Method Flow Control Arguments</strong></p><div class="table-contents"><table border="1" summary="Queue Declare Method Flow Control Arguments"><colgroup><col /><col /></colgroup><thead><tr><th>Key</th><th>Value</th></tr></thead><tbody><tr><td>qpid.flow_stop_size</td><td>integer - queue's flow stop threshold value in bytes</td></tr><tr><td>qpid.flow_resume_size</td><td>integer - queue's flow resume threshold value in bytes</td></tr><tr><td>qpid.flow_stop_count</td><td>integer - queue's flow stop threshold value as a message count</td></tr><tr><td>qpid.flow_resume_count</td><td>integer - queue's flow resume threshold value as a message count</td></tr></tbody></table></div></div><br class="table-break" /><p>
+ The user may disable flow control on a per queue basis by setting
+ the flow-stop-size and flow-stop-count to zero for the queue.
+ </p><p>
+ The current state of flow control for a given queue can be
+ determined by the "flowStopped" statistic. This statistic is
+ available in the queue's QMF management object. The value of
+ flowStopped is True when the queue's capacity has exceeded the
+ flow stop threshold. The value of flowStopped is False when the
+ queue is no longer blocking due to flow control.
+ </p><p>
+ A queue will also track the number of times flow control has been
+ activated. The "flowStoppedCount" statistic is incremented each time
+ the queue's capacity exceeds a flow stop threshold. This statistic can
+ be used to monitor the activity of flow control for any given queue
+ over time.
+ </p><div class="table"><a id="idm221065852960"></a><p class="title"><strong>Table 1.21. Flow Control Statistics available in Queue's QMF Class</strong></p><div class="table-contents"><table border="1" summary="Flow Control Statistics available in Queue's QMF Class"><colgroup><col /><col /><col /></colgroup><thead><tr><th>Statistic Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>flowStopped</td><td>Boolean</td><td>If true, producers are blocked by flow control.</td></tr><tr><td>flowStoppedCount</td><td>count32</td><td>Number of times flow control was activated for this queue</td></tr></tbody></table></div></div><br class="table-break" /></div></div><div class="navfooter"><hr /><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="queue-state-replication.html">Prev</a> </td><td align="center" width="20%"><a accesskey="u" href="ch01.html">Up</a></td><td align="right" width="40%"> <a access
key="n" href="AMQP-Compatibility.html">Next</a></td></tr><tr><td align="left" valign="top" width="40%">1.7. 
+ Queue State Replication
+  </td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top" width="40%"> 1.9. 
+ AMQP compatibility
+ </td></tr></table></div></div>
\ No newline at end of file
Added: qpid/site/input/releases/qpid-cpp-0.34/cpp-broker/book/queue-state-replication.html.in
URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-cpp-0.34/cpp-broker/book/queue-state-replication.html.in?rev=1688840&view=auto
==============================================================================
--- qpid/site/input/releases/qpid-cpp-0.34/cpp-broker/book/queue-state-replication.html.in (added)
+++ qpid/site/input/releases/qpid-cpp-0.34/cpp-broker/book/queue-state-replication.html.in Thu Jul 2 14:53:53 2015
@@ -0,0 +1,229 @@
+<div class="docbook"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">1.7. 
+ Queue State Replication
+ </th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ch01s06.html">Prev</a> </td><th align="center" width="60%">Chapter 1. 
+ Running the AMQP Messaging Broker
+ </th><td align="right" width="20%"> <a accesskey="n" href="producer-flow-control.html">Next</a></td></tr></table><hr /></div><div class="section"><div class="titlepage"><div><div><h2 class="title"><a id="queue-state-replication"></a>1.7. 
+ Queue State Replication
+ </h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a id="queuestatereplication-AsynchronousReplicationofQueueState"></a>1.7.1. 
+ Asynchronous
+ Replication of Queue State
+ </h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="queuestatereplication-Overview"></a>1.7.1.1. 
+ Overview
+ </h4></div></div></div><p>
+ There is support in qpidd for selective asynchronous replication
+ of queue state. This is achieved by:
+ </p><p>
+ (a) enabling event generation for the queues in question
+ </p><p>
+ (b) loading a plugin on the 'source' broker to encode those
+ events as messages on a replication queue (this plugin is
+ called
+ replicating_listener.so)
+ </p><p>
+ (c) loading a custom exchange plugin on the 'backup' broker (this
+ plugin is called replication_exchange.so)
+ </p><p>
+ (d) creating an instance of the replication exchange type on the
+ backup broker
+ </p><p>
+ (e) establishing a federation bridge between the replication
+ queue on the source broker and the replication exchange on the
+ backup broker
+ </p><p>
+ The bridge established between the source and backup brokers for
+ replication (step (e) above) should have acknowledgements turned
+ on (this may be done through the --ack N option to qpid-route).
+ This ensures that replication events are not lost if the bridge
+ fails.
+ </p><p>
+ The replication protocol will also eliminate duplicates to ensure
+ reliably replicated state. Note though that only one bridge per
+ replication exchange is supported. If clients try to publish to
+ the replication exchange or if more than a the single required
+ bridge from the replication queue on the source broker is
+ created, replication will be corrupted. (Access control may be
+ used to restrict access and help prevent this).
+ </p><p>
+ The replicating event listener plugin (step (b) above) has the
+ following options:
+ </p><pre class="programlisting">
+Queue Replication Options:
+ --replication-queue QUEUE Queue on which events for
+ other queues are recorded
+ --replication-listener-name NAME (replicator) name by which to register the
+ replicating event listener
+ --create-replication-queue if set, the replication will
+ be created if it does not
+ exist
+ </pre><p>
+ The name of the queue is required. It can either point to a
+ durable queue whose definition has been previously recorded, or
+ the --create-replication-queue option can be specified in which
+ case the queue will be created a simple non-durable queue if it
+ does not already exist.
+ </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="queuestatereplication-UsewithClustering"></a>1.7.1.2. 
+ Use with
+ Clustering
+ </h4></div></div></div><p>
+ The source and/or backup brokers may also be clustered brokers.
+ In this case the federated bridge will be re-established between
+ replicas should either of the originally connected nodes fail.
+ There are however the following limitations at present:
+ </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>The backup site does not process membership updates after it
+ establishes the first connection. In order for newly added
+ members on a source cluster to be eligible as failover targets,
+ the bridge must be recreated after those members have been added
+ to the source cluster.
+ </p></li></ul></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>New members added to a backup cluster will not receive
+ information about currently established bridges. Therefore in
+ order to allow the bridge to be re-established from these members
+ in the event of failure of older nodes, the bridge must be
+ recreated after the new members have joined.
+ </p></li></ul></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Only a single URL can be passed to create the initial link
+ from backup site to the primary site. this means that at the time
+ of creating the initial connection the initial node in the
+ primary site to which the connection is made needs to be running.
+ Once connected the backup site will receive a membership update
+ of all the nodes in the primary site, and if the initial
+ connection node in the primary fails, the link will be
+ re-established on the next node that was started (time) on the
+ primary site.
+ </p></li></ul></div><p>
+ Due to the acknowledged transfer of events over the bridge (see
+ note above) manual recreation of the bridge and automatic
+ re-establishment of te bridge after connection failure (including
+ failover where either or both ends are clustered brokers) will
+ not result in event loss.
+ </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="queuestatereplication-OperationsonBackupQueues"></a>1.7.1.3. 
+ Operations
+ on Backup Queues
+ </h4></div></div></div><p>
+ When replicating the state of a queue to a backup broker it is
+ important to recognise that any other operations performed
+ directly on the backup queue may break the replication.
+ </p><p>
+ If the backup queue is to be an active (i.e. accessed by clients
+ while replication is on) only enqueues should be selected
+ for
+ replication. In this mode, any message enqueued on the source
+ brokers copy of the queue will also be enqueued on the backup
+ brokers copy. However not attempt will be made to remove messages
+ from the backup queue in response to removal of messages from the
+ source queue.
+ </p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="queuestatereplication-SelectingQueuesforReplication"></a>1.7.1.4. 
+ Selecting
+ Queues for Replication
+ </h4></div></div></div><p>
+ Queues are selected for replication by specifying the types of
+ events they should generate (it is from these events that the
+ replicating plugin constructs messages which are then pulled and
+ processed by the backup site). This is done through options
+ passed to the initial queue-declare command that creates the
+ queue and may be done either through qpid-config or similar
+ tools, or by the application.
+ </p><p>
+ With qpid-config, the --generate-queue-events options is used:
+ </p><pre class="programlisting">
+ --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
+ </pre><p>
+ From an application, the arguments field of the queue-declare
+ AMQP command is used to convey this information. An entry should
+ be added to the map with key 'qpid.queue_event_generation' and an
+ integer value of 1 (to replicate only enqueue events) or 2 (to
+ replicate both enqueue and dequeue events).
+ </p><p>
+ Applications written using the c++ client API may fine the
+ qpid::client::QueueOptions class convenient. This has a
+ enableQueueEvents() method on it that can be used to set the
+ option (the instance of QueueOptions is then passed as the value
+ of the arguments field in the queue-declare command. The boolean
+ option to that method should be set to true if only enequeue
+ events should be replicated; by default it is false meaning that
+ both enqueues and dequeues will be replicated. E.g.
+ </p><pre class="programlisting">
+ QueueOptions options;
+ options.enableQueueEvents(false);
+ session.queueDeclare(arg::queue="my-queue", arg::arguments=options);
+ </pre></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a id="queuestatereplication-Example"></a>1.7.1.5. 
+ Example
+ </h4></div></div></div><p>
+ Lets assume we will run the primary broker on host1 and the
+ backup on host2, have installed qpidd on both and have the
+ replicating_listener and replication_exchange plugins in qpidd's
+ module directory(*1).
+ </p><p>
+ On host1 we start the source broker and specifcy that a queue
+ called 'replication' should be used for storing the events until
+ consumed by the backup. We also request that this queue be
+ created (as transient) if not already specified:
+ </p><pre class="programlisting">
+ qpidd --replication-queue replication-queue --create-replication-queue true --log-enable info+
+ </pre><p>
+ On host2 we start up the backup broker ensuring that the
+ replication exchange module is loaded:
+ </p><pre class="programlisting">
+ qpidd
+ </pre><p>
+ We can then create the instance of that replication exchange that
+ we will use to process the events:
+ </p><pre class="programlisting">
+ qpid-config -a host2 add exchange replication replication-exchange
+ </pre><p>
+ If this fails with the message "Exchange type not implemented:
+ replication", it means the replication exchange module was
+ not
+ loaded. Check that the module is installed on your system and if
+ necessary provide the full path to the library.
+ </p><p>
+ We then connect the replication queue on the source broker with
+ the replication exchange on the backup broker using the
+ qpid-route command:
+ </p><pre class="programlisting">
+ qpid-route --ack 50 queue add host2 host1 replication-exchange replication-queue
+</pre><p>
+ The example above configures the bridge to acknowledge messages
+ in batches of 50.
+ </p><p>
+ Now create two queues (on both source and backup brokers), one
+ replicating both enqueues and dequeues (queue-a) and the
+ other
+ replicating only dequeues (queue-b):
+ </p><pre class="programlisting">
+ qpid-config -a host1 add queue queue-a --generate-queue-events 2
+ qpid-config -a host1 add queue queue-b --generate-queue-events 1
+
+ qpid-config -a host2 add queue queue-a
+ qpid-config -a host2 add queue queue-b
+ </pre><p>
+ We are now ready to use the queues and see the replication.
+ </p><p>
+ Any message enqueued on queue-a will be replicated to the backup
+ broker. When the message is acknowledged by a client connected to
+ host1 (and thus dequeued), that message will be removed from the
+ copy of the queue on host2. The state of queue-a on host2 will
+ thus mirror that of the equivalent queue on host1, albeit with a
+ small lag. (Note
+ however that we must not have clients connected to host2 publish
+ to-or consume from- queue-a or the state will fail to replicate
+ correctly due to conflicts).
+ </p><p>
+ Any message enqueued on queue-b on host1 will also be enqueued on
+ the equivalent queue on host2. However the acknowledgement and
+ consequent dequeuing of messages from queue-b on host1 will have
+ no effect on the state of queue-b on host2.
+ </p><p>
+ (*1) If not the paths in the above may need to be modified. E.g.
+ if using modules built from a qpid svn checkout, the following
+ would be added to the command line used to start qpidd on host1:
+ </p><pre class="programlisting">
+ --load-module <path-to-qpid-dir>/src/.libs/replicating_listener.so
+ </pre><p>
+ and the following for the equivalent command line on host2:
+ </p><pre class="programlisting">
+ --load-module <path-to-qpid-dir>/src/.libs/replication_exchange.so
+ </pre></div></div></div><div class="navfooter"><hr /><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ch01s06.html">Prev</a> </td><td align="center" width="20%"><a accesskey="u" href="ch01.html">Up</a></td><td align="right" width="40%"> <a accesskey="n" href="producer-flow-control.html">Next</a></td></tr><tr><td align="left" valign="top" width="40%">1.6. LVQ - Last Value Queue </td><td align="center" width="20%"><a accesskey="h" href="index.html">Home</a></td><td align="right" valign="top" width="40%"> 1.8. 
+ Producer Flow Control
+ </td></tr></table></div></div>
\ No newline at end of file
Added: qpid/site/input/releases/qpid-cpp-0.34/cpp-broker/cpp-broker-book.pdf
URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-cpp-0.34/cpp-broker/cpp-broker-book.pdf?rev=1688840&view=auto
==============================================================================
Binary files qpid/site/input/releases/qpid-cpp-0.34/cpp-broker/cpp-broker-book.pdf (added) and qpid/site/input/releases/qpid-cpp-0.34/cpp-broker/cpp-broker-book.pdf Thu Jul 2 14:53:53 2015 differ
Added: qpid/site/input/releases/qpid-cpp-0.34/index.md
URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-cpp-0.34/index.md?rev=1688840&view=auto
==============================================================================
--- qpid/site/input/releases/qpid-cpp-0.34/index.md (added)
+++ qpid/site/input/releases/qpid-cpp-0.34/index.md Thu Jul 2 14:53:53 2015
@@ -0,0 +1,61 @@
+;;
+;; 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.
+;;
+
+<script type="text/javascript">
+ _deferredFunctions.push(function() {
+ if ("0.34" === "@current-cpp-release@") {
+ _modifyCurrentReleaseLinks();
+ }
+ });
+</script>
+
+# Qpid C++ 0.34
+
+A connection-oriented messaging API that supports many languages and
+platforms. A message-oriented middleware message broker written in C++
+that stores, routes, and forwards messages using AMQP. More about [Qpid](@site-url@/index.html).
+
+For a detailed list of the changes in this release, see the [release
+notes](release-notes.html).
+
+It's important to [verify the
+integrity](@site-url@/download.html#verify-what-you-download) of the
+files you download.
+
+## Source archives
+
+ || *Content* || *Download* || *Verify* ||
+ || C++ broker, Qpid Messaging API (C++, bindings) || [qpid-cpp-0.34.tar.gz](http://archive.apache.org/dist/qpid/0.34/qpid-cpp-0.34.tar.gz) || [ASC](http://archive.apache.org/dist/qpid/0.34/qpid-cpp-0.34.tar.gz.asc), [MD5](http://archive.apache.org/dist/qpid/0.34/qpid-cpp-0.34.tar.gz.md5), [SHA1](http://archive.apache.org/dist/qpid/0.34/qpid-cpp-0.34.tar.gz.sha1) ||
+
+## Components
+
+ || *Component* || *Languages* || *Platforms* || *AMQP versions* ||
+ || [C++ broker](@site-url@/components/cpp-broker/index.html) || C++ || Linux, Windows || 1.0, 0-10 ||
+ || [Qpid Messaging API](@site-url@/components/messaging-api/index.html) || C++, Perl, Python, Ruby, .NET || Linux, Windows || 1.0, 0-10 ||
+
+## Documentation
+
+ - [Installing Qpid C++](http://svn.apache.org/repos/asf/qpid/tags/qpid-cpp-0.34/qpid/cpp/INSTALL)
+ - [C++ broker book](cpp-broker/book/index.html) ([PDF](cpp-broker/cpp-broker-book.pdf))
+ - See the [Messaging API](@site-url@/components/messaging-api/index.html#documentation) page for relevant documentation.
+
+## More information
+
+ - [Resolved issues in JIRA](https://issues.apache.org/jira/issues/?jql=project+%3D+QPID+AND+fixVersion+%3D+%27qpid-cpp-0.34%27+ORDER+BY+priority+DESC)
+ - [Source repository tag](http://svn.apache.org/repos/asf/qpid/tags/qpid-cpp-0.34)
\ No newline at end of file
Added: qpid/site/input/releases/qpid-cpp-0.34/release-notes.md
URL: http://svn.apache.org/viewvc/qpid/site/input/releases/qpid-cpp-0.34/release-notes.md?rev=1688840&view=auto
==============================================================================
--- qpid/site/input/releases/qpid-cpp-0.34/release-notes.md (added)
+++ qpid/site/input/releases/qpid-cpp-0.34/release-notes.md Thu Jul 2 14:53:53 2015
@@ -0,0 +1,59 @@
+;;
+;; Licensed to the Apache Software Foundation (ASF) under one
+;; or more contributor license agreements. See the NOTICE file
+;; distributed with this work for additional information
+;; regarding copyright ownership. The ASF licenses this file
+;; to you under the Apache License, Version 2.0 (the
+;; "License"); you may not use this file except in compliance
+;; with the License. You may obtain a copy of the License at
+;;
+;; http://www.apache.org/licenses/LICENSE-2.0
+;;
+;; Unless required by applicable law or agreed to in writing,
+;; software distributed under the License is distributed on an
+;; "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+;; KIND, either express or implied. See the License for the
+;; specific language governing permissions and limitations
+;; under the License.
+;;
+
+# Qpid C++ 0.34 Release Notes
+
+A connection-oriented messaging API that supports many languages and
+platforms. A message-oriented middleware message broker written in C++
+that stores, routes, and forwards messages using AMQP.
+
+For more information about this release, including download links and
+documentation, see the [release overview](index.html).
+
+
+## New features and improvements
+
+ - [QPID-6492](https://issues.apache.org/jira/browse/QPID-6492) - When AMQP 1.0 link attach triggers an ACL error, the link should be refused
+ - [QPID-6592](https://issues.apache.org/jira/browse/QPID-6592) - [amqp1.0] Add identifying information to the connection properties advertised to the client
+
+## Bugs fixed
+
+ - [QPID-6256](https://issues.apache.org/jira/browse/QPID-6256) - Improved control over AMQP versions tried
+ - [QPID-6368](https://issues.apache.org/jira/browse/QPID-6368) - Coverity 1262251 - double free in ~PersistableQueue
+ - [QPID-6392](https://issues.apache.org/jira/browse/QPID-6392) - [C++ Broker] [AMQP 1.0] the broker didnt respond to a link detach request
+ - [QPID-6397](https://issues.apache.org/jira/browse/QPID-6397) - [C++ broker] segfault when processing QMF method during periodic processing
+ - [QPID-6399](https://issues.apache.org/jira/browse/QPID-6399) - Windows run_test.ps1 script needs revamp to match run_test
+ - [QPID-6409](https://issues.apache.org/jira/browse/QPID-6409) - Taking address of a 0-length vector throws exception
+ - [QPID-6463](https://issues.apache.org/jira/browse/QPID-6463) - WinSDK script fails - Proton components have moved
+ - [QPID-6470](https://issues.apache.org/jira/browse/QPID-6470) - FieldValue::getFloatingPointValue() converts endian each time it is called
+ - [QPID-6484](https://issues.apache.org/jira/browse/QPID-6484) - AccessViolationException when creating queues
+ - [QPID-6493](https://issues.apache.org/jira/browse/QPID-6493) - cmake install (TARGET ...) component syntax is incorrect in the src/CMakeLists.txt
+ - [QPID-6511](https://issues.apache.org/jira/browse/QPID-6511) - [C++ Broker, clients] AMQP 0-10 windows clients can not connect to --no-auth broker
+ - [QPID-6521](https://issues.apache.org/jira/browse/QPID-6521) - [AMQP 1.0] messages received pre-settled are never settled locally causing memory build up in client
+ - [QPID-6524](https://issues.apache.org/jira/browse/QPID-6524) - [C++ broker]: Fix for QPID-5107 incomplete for queues
+ - [QPID-6526](https://issues.apache.org/jira/browse/QPID-6526) - [AMQP 1.0]: race condition in creating senders/receivers
+ - [QPID-6529](https://issues.apache.org/jira/browse/QPID-6529) - [C++ Client] Fails to compile with Proton 0.10
+ - [QPID-6532](https://issues.apache.org/jira/browse/QPID-6532) - make sasl service name configurable
+ - [QPID-6548](https://issues.apache.org/jira/browse/QPID-6548) - SYSV init scripts do not work properly wiht SSL-only broker.
+ - [QPID-6549](https://issues.apache.org/jira/browse/QPID-6549) - `service qpidd status` returns 1 - hidden error is "ConnectionError: connection-forced: Connection must be encrypted.(320)"
+ - [QPID-6551](https://issues.apache.org/jira/browse/QPID-6551) - [C++ broker]: linearstore raising JERR_LFCR_SEQNUMNOTFOUND after sending many DTX transactions
+ - [QPID-6559](https://issues.apache.org/jira/browse/QPID-6559) - NullSaslClient only support ANONYMOUS
+ - [QPID-6563](https://issues.apache.org/jira/browse/QPID-6563) - [amqp1.0] broker does not clean up closed sessions or links
+ - [QPID-6568](https://issues.apache.org/jira/browse/QPID-6568) - [amqp1.0] bump the minimum required proton version to 0.7
+ - [QPID-6602](https://issues.apache.org/jira/browse/QPID-6602) - [AMQP 1.0] prefetch is not always accurate
\ No newline at end of file
Modified: qpid/site/python/qpid_site/generate.py
URL: http://svn.apache.org/viewvc/qpid/site/python/qpid_site/generate.py?rev=1688840&r1=1688839&r2=1688840&view=diff
==============================================================================
--- qpid/site/python/qpid_site/generate.py (original)
+++ qpid/site/python/qpid_site/generate.py Thu Jul 2 14:53:53 2015
@@ -80,6 +80,10 @@ def get_release_branch_url(module, relea
path = "trunk/qpid"
return "{}/{}".format(project_url, path)
+ elif module == "qpid-cpp":
+ path = "branches/qpid-cpp-{}-rc/qpid".format(release)
+
+ return "{}/{}".format(project_url, path)
path = "{}/branches/{}".format(module, release)
@@ -363,7 +367,16 @@ def render_release_notes(project, releas
def _fetch_issues(project, release):
query = list()
- query.append("project = '{}'".format(project))
+
+ jira_project = project
+ if project == "qpid-cpp":
+ jira_project = "qpid"
+
+ fix_version = release
+ if project == "qpid-cpp":
+ fix_version = "qpid-cpp-{}".format(release)
+
+ query.append("project = '{}'".format(jira_project))
if project == "qpid":
devel_version = float(release) - 0.01
@@ -376,7 +389,7 @@ def _fetch_issues(project, release):
query.append("fixVersion != '{}'".format(prev_version))
query.append("resolution = 'fixed'")
else:
- query.append("fixVersion = '{}'".format(release))
+ query.append("fixVersion = '{}'".format(fix_version))
query.append("resolution = 'fixed'")
query = " and ".join(query)
Added: qpid/site/scripts/gen-cpp-release-notes
URL: http://svn.apache.org/viewvc/qpid/site/scripts/gen-cpp-release-notes?rev=1688840&view=auto
==============================================================================
--- qpid/site/scripts/gen-cpp-release-notes (added)
+++ qpid/site/scripts/gen-cpp-release-notes Thu Jul 2 14:53:53 2015
@@ -0,0 +1,74 @@
+#!/usr/bin/python
+#
+# 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.
+#
+
+from qpid_site.generate import *
+
+template = \
+"""
+;;
+;; Licensed to the Apache Software Foundation (ASF) under one
+;; or more contributor license agreements. See the NOTICE file
+;; distributed with this work for additional information
+;; regarding copyright ownership. The ASF licenses this file
+;; to you under the Apache License, Version 2.0 (the
+;; "License"); you may not use this file except in compliance
+;; with the License. You may obtain a copy of the License at
+;;
+;; http://www.apache.org/licenses/LICENSE-2.0
+;;
+;; Unless required by applicable law or agreed to in writing,
+;; software distributed under the License is distributed on an
+;; "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+;; KIND, either express or implied. See the License for the
+;; specific language governing permissions and limitations
+;; under the License.
+;;
+
+# Qpid C++ {release} Release Notes
+
+A connection-oriented messaging API that supports many languages and
+platforms. A message-oriented middleware message broker written in C++
+that stores, routes, and forwards messages using AMQP.
+
+For more information about this release, including download links and
+documentation, see the [release overview](index.html).
+
+{release_notes}
+"""
+
+def gen_release_notes(release, release_dir):
+ output_path = join(release_dir, "release-notes.md")
+
+ release_notes = render_release_notes("qpid-cpp", release)
+
+ output = template.format(**locals())
+ output = output.strip()
+
+ write(output_path, output)
+
+release, release_dir, checkout_dir = setup_release_script()
+
+if release == "trunk":
+ notice("Skipping generation for trunk")
+ sys.exit()
+
+gen_release_notes(release, release_dir)
+
+notice("Release notes generated")
Propchange: qpid/site/scripts/gen-cpp-release-notes
------------------------------------------------------------------------------
svn:executable = *
Added: qpid/site/scripts/gen-cpp-release-page
URL: http://svn.apache.org/viewvc/qpid/site/scripts/gen-cpp-release-page?rev=1688840&view=auto
==============================================================================
--- qpid/site/scripts/gen-cpp-release-page (added)
+++ qpid/site/scripts/gen-cpp-release-page Thu Jul 2 14:53:53 2015
@@ -0,0 +1,140 @@
+#!/usr/bin/python
+#
+# 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.
+#
+
+from datetime import datetime
+from qpid_site.generate import *
+
+source_artefact_records = (
+ ("qpid-cpp-{}.tar.gz", "C++ broker, Qpid Messaging API (C++, bindings)"),
+ )
+
+component_records = (
+ ("cpp-broker", "C++ broker", "C++", "Linux, Windows", "1.0, 0-10"),
+ ("messaging-api", "Qpid Messaging API", "C++, Perl, Python, Ruby, .NET", "Linux, Windows", "1.0, 0-10"),
+ )
+
+template = \
+"""
+;;
+;; 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.
+;;
+
+<script type="text/javascript">
+ _deferredFunctions.push(function() {{
+ if ("{release}" === "@current-cpp-release@") {{
+ _modifyCurrentReleaseLinks();
+ }}
+ }});
+</script>
+
+# Qpid C++ {release}
+
+A connection-oriented messaging API that supports many languages and
+platforms. A message-oriented middleware message broker written in C++
+that stores, routes, and forwards messages using AMQP. More about [Qpid](@site-url@/index.html).
+
+For a detailed list of the changes in this release, see the [release
+notes](release-notes.html).
+
+It's important to [verify the
+integrity](@site-url@/download.html#verify-what-you-download) of the
+files you download.
+
+## Source archives
+
+ || *Content* || *Download* || *Verify* ||
+ {source_artefacts}
+
+## Components
+
+ || *Component* || *Languages* || *Platforms* || *AMQP versions* ||
+ {components}
+
+## Documentation
+
+ - [Installing Qpid C++](http://svn.apache.org/repos/asf/qpid/tags/qpid-cpp-{release}/qpid/cpp/INSTALL)
+ - [C++ broker book](cpp-broker/book/index.html) ([PDF](cpp-broker/cpp-broker-book.pdf))
+ - See the [Messaging API](@site-url@/components/messaging-api/index.html#documentation) page for relevant documentation.
+
+## More information
+
+ - [Resolved issues in JIRA]({issues_url})
+ - [Source repository tag](http://svn.apache.org/repos/asf/qpid/tags/qpid-cpp-{release})
+"""
+
+def gen_release_page(release, release_dir):
+ output_path = join(release_dir, "index.md")
+
+ components = list()
+
+ source_artefacts = list()
+ source_artefact_url = "http://archive.apache.org/dist/qpid/{}/{}"
+
+ for artefact, summary in source_artefact_records:
+ artefact = artefact.format(release)
+ artefact_url = source_artefact_url.format(release, artefact)
+ asc_url = "{}.asc".format(artefact_url)
+ md5_url = "{}.md5".format(artefact_url)
+ sha1_url = "{}.sha1".format(artefact_url)
+
+ args = summary, artefact, artefact_url, asc_url, md5_url, sha1_url
+ row = "|| {} || [{}]({}) || [ASC]({}), [MD5]({}), [SHA1]({}) ||".format(*args)
+
+ source_artefacts.append(row)
+
+ for key, name, languages, platforms, amqp_versions in component_records:
+ link = "[{}](@site-url@/components/{}/index.html)".format(name, key)
+ args = link, languages, platforms, amqp_versions
+ components.append("|| {} || {} || {} || {} ||".format(*args))
+
+ source_artefacts = "\n ".join(source_artefacts)
+ components = "\n ".join(components)
+
+ jql = "project = QPID AND fixVersion = 'qpid-cpp-{}' ORDER BY priority DESC".format(release)
+ issues_url = "https://issues.apache.org/jira/issues/?jql={}".format(urllib.quote_plus(jql))
+
+ output = template.format(**locals())
+ output = output.strip()
+
+ write(output_path, output)
+
+
+## Now do stuff ##
+
+release, release_dir, checkout_dir = setup_release_script()
+
+gen_release_page(release, release_dir)
+
+notice("Release page generated")
Propchange: qpid/site/scripts/gen-cpp-release-page
------------------------------------------------------------------------------
svn:executable = *
Added: qpid/site/scripts/gen-ppc-release-docs
URL: http://svn.apache.org/viewvc/qpid/site/scripts/gen-ppc-release-docs?rev=1688840&view=auto
==============================================================================
--- qpid/site/scripts/gen-ppc-release-docs (added)
+++ qpid/site/scripts/gen-ppc-release-docs Thu Jul 2 14:53:53 2015
@@ -0,0 +1,95 @@
+#!/usr/bin/python
+#
+# 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.
+#
+
+from qpid_site.generate import *
+
+import uuid
+from xml.etree import ElementTree
+
+def gen_books(release, source_dir, output_dir):
+ input_dir = join(source_dir, "doc", "book")
+
+ stylesheet = """<?xml version='1.0'?>
+ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+ <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/xhtml/chunk.xsl"/>
+ </xsl:stylesheet>"""
+
+ write(join(input_dir, "xsl", "html-custom.xsl"), stylesheet)
+
+ call("make -C {} clean all", input_dir)
+
+ cpp_broker_input_dir = join(input_dir, "build", "AMQP-Messaging-Broker-CPP-Book")
+
+
+ cpp_broker_output_dir = join(output_dir, "cpp-broker")
+
+ remove(cpp_broker_output_dir)
+
+ copy(join(cpp_broker_input_dir, "html"), join(cpp_broker_output_dir, "book"))
+
+ copy(join(cpp_broker_input_dir, "pdf", "AMQP-Messaging-Broker-CPP-Book.pdf"),
+ join(cpp_broker_output_dir, "cpp-broker-book.pdf"))
+
+ output_dirs = [cpp_broker_output_dir]
+
+ for dir in output_dirs:
+ for path in find(dir, "*.html"):
+ tree = ElementTree.parse(path)
+ elem = tree.find(".//{http://www.w3.org/1999/xhtml}body")
+
+ elem.tag = "div"
+ elem.set("class", "docbook")
+
+ remove_namespace(elem, "http://www.w3.org/1999/xhtml")
+
+ # A hack to preserve docbook's empty anchors in an
+ # IE-compatible way
+
+ target = str(uuid.uuid4())
+
+ for a in tree.iter("a"):
+ if a.text is None:
+ a.text = target
+
+ content = ElementTree.tostring(elem)
+
+ content = content.replace(target, "")
+
+ write("{}.in".format(path), content)
+ remove(path)
+
+# From http://homework.nwsnet.de/releases/45be/
+def remove_namespace(doc, namespace):
+ """Remove namespace in the passed document in place."""
+ ns = u'{%s}' % namespace
+ nsl = len(ns)
+ for elem in doc.getiterator():
+ if elem.tag.startswith(ns):
+ elem.tag = elem.tag[nsl:]
+
+
+## Now do stuff ##
+
+release, release_dir, checkout_dir = setup_release_script()
+source_dir = export_release("qpid-cpp", release, checkout_dir)
+
+gen_books(release, source_dir, release_dir)
+
+notice("Books generated")
Propchange: qpid/site/scripts/gen-ppc-release-docs
------------------------------------------------------------------------------
svn:executable = *
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org