activemq-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From build...@apache.org
Subject svn commit: r1017262 [1/3] - in /websites/production/activemq/content: ./ cache/
Date Fri, 25 Aug 2017 08:24:12 GMT
Author: buildbot
Date: Fri Aug 25 08:24:11 2017
New Revision: 1017262

Log:
Production update by buildbot for activemq

Modified:
    websites/production/activemq/content/cache/cms.pageCache
    websites/production/activemq/content/cache/main.pageCache
    websites/production/activemq/content/cache/nms.pageCache
    websites/production/activemq/content/configure-startup-destinations.html
    websites/production/activemq/content/dispatch-policies.html
    websites/production/activemq/content/jndi-support.html
    websites/production/activemq/content/kahadb-replication-experimental.html
    websites/production/activemq/content/persistence.html
    websites/production/activemq/content/security.html
    websites/production/activemq/content/siteindex.html
    websites/production/activemq/content/slow-consumer-handling.html
    websites/production/activemq/content/version-5-xml-configuration.html
    websites/production/activemq/content/virtual-destinations.html
    websites/production/activemq/content/xml-configuration.html

Modified: websites/production/activemq/content/cache/cms.pageCache
==============================================================================
Binary files - no diff available.

Modified: websites/production/activemq/content/cache/main.pageCache
==============================================================================
Binary files - no diff available.

Modified: websites/production/activemq/content/cache/nms.pageCache
==============================================================================
Binary files - no diff available.

Modified: websites/production/activemq/content/configure-startup-destinations.html
==============================================================================
--- websites/production/activemq/content/configure-startup-destinations.html (original)
+++ websites/production/activemq/content/configure-startup-destinations.html Fri Aug 25 08:24:11 2017
@@ -32,15 +32,6 @@
     </style>
     <![endif]-->
 
-          <link href='http://activemq.apache.org/styles/highlighter/styles/shCore.css' rel='stylesheet' type='text/css' /> 
-      <link href='http://activemq.apache.org/styles/highlighter/styles/shThemeEclipse.css' rel='stylesheet' type='text/css' /> 
-      <script src='http://activemq.apache.org/styles/highlighter/scripts/shCore.js' type='text/javascript'></script> 
-              <script src='http://activemq.apache.org/styles/highlighter/scripts/shBrushJava.js' type='text/javascript'></script> 
-         
-      <script type="text/javascript"> 
-        SyntaxHighlighter.defaults['toolbar'] = false; 
-        SyntaxHighlighter.all(); 
-      </script> 
     
     <title>
     Apache ActiveMQ &#8482; -- Configure Startup Destinations
@@ -80,8 +71,7 @@
   <tbody>
         <tr>
         <td valign="top" width="100%">
-<div class="wiki-content maincontent"><p>Typically in Apache ActiveMQ we <a shape="rect" href="how-do-i-create-new-destinations.html">create destinations on demand</a> as clients start to use them. However sometimes users want to be able to configure which destinations are available on startup explicitly in the <a shape="rect" href="xml-configuration.html">Xml Configuration</a>.</p><div class="confluence-information-macro confluence-information-macro-information"><p class="title">4.1 Feature</p><span class="aui-icon aui-icon-small aui-iconfont-info confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>Note this feature is available from 4.1 onwards. If you try this XML on older versions of ActiveMQ you will get an exception about the 'destinations' property not being writable.</p></div></div><h3 id="ConfigureStartupDestinations-Example">Example</h3><p>The following <a shape="rect" class="external-link" href="http://svn.apache.org/repos/asf/incub
 ator/activemq/trunk/activemq-core/src/test/resources/org/apache/activemq/broker/destinations-on-start.xml">example</a> shows how you can configure a number of destinations to be available at startup.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
+<div class="wiki-content maincontent"><p>Typically in Apache ActiveMQ we <a shape="rect" href="how-do-i-create-new-destinations.html">create destinations on demand</a> as clients start to use them. However sometimes users want to be able to configure which destinations are available on startup explicitly in the <a shape="rect" href="xml-configuration.html">Xml Configuration</a>.</p><parameter ac:name="title">4.1 Feature</parameter><rich-text-body><p>Note this feature is available from 4.1 onwards. If you try this XML on older versions of ActiveMQ you will get an exception about the 'destinations' property not being writable.</p></rich-text-body><h3 id="ConfigureStartupDestinations-Example">Example</h3><p>The following <a shape="rect" class="external-link" href="http://svn.apache.org/repos/asf/incubator/activemq/trunk/activemq-core/src/test/resources/org/apache/activemq/broker/destinations-on-start.xml">example</a> shows how you can configure a number of destinations to be available 
 at startup.<plain-text-body>
 &lt;broker xmlns="http://activemq.apache.org/schema/core"&gt;
 
     &lt;destinations&gt;
@@ -95,8 +85,7 @@
   &lt;/broker&gt;
 
 
-</pre>
-</div></div></div>
+</plain-text-body></p></div>
         </td>
         <td valign="top">
           <div class="navigation">

Modified: websites/production/activemq/content/dispatch-policies.html
==============================================================================
--- websites/production/activemq/content/dispatch-policies.html (original)
+++ websites/production/activemq/content/dispatch-policies.html Fri Aug 25 08:24:11 2017
@@ -32,16 +32,6 @@
     </style>
     <![endif]-->
 
-          <link href='http://activemq.apache.org/styles/highlighter/styles/shCore.css' rel='stylesheet' type='text/css' /> 
-      <link href='http://activemq.apache.org/styles/highlighter/styles/shThemeEclipse.css' rel='stylesheet' type='text/css' /> 
-      <script src='http://activemq.apache.org/styles/highlighter/scripts/shCore.js' type='text/javascript'></script> 
-              <script src='http://activemq.apache.org/styles/highlighter/scripts/shBrushJava.js' type='text/javascript'></script> 
-              <script src='http://activemq.apache.org/styles/highlighter/scripts/shBrushXml.js' type='text/javascript'></script> 
-         
-      <script type="text/javascript"> 
-        SyntaxHighlighter.defaults['toolbar'] = false; 
-        SyntaxHighlighter.all(); 
-      </script> 
     
     <title>
     Apache ActiveMQ &#8482; -- Dispatch Policies
@@ -81,10 +71,7 @@
   <tbody>
         <tr>
         <td valign="top" width="100%">
-<div class="wiki-content maincontent"><h1 id="DispatchPolicies-DispatchPolicies">Dispatch Policies</h1><h2 id="DispatchPolicies-Dispatchpoliciesforqueues">Dispatch policies for queues</h2><p>Plug-able dispatch policies only apply to topics. For Queues, dispatch is more static, you can choose round robin (the default) or strict order. Before discussing dispatch policies its worth first understanding <a shape="rect" href="what-is-the-prefetch-limit-for.html">the purpose of the prefetch value</a>.</p><p>The out of the box configuration of ActiveMQ is designed for high performance and high throughput messaging where there are lots of messages that need to be dispatched to consumers as quickly as possible. So the default prefetch values are fairly large and the default dispatch policy will try and fill the prefetch buffers as quickly as possible.</p><p>However with messaging there are many use cases and sometimes the default configuration is not ideal to your use case; when you send a sm
 all number of messages, they tend to all go to one consumer unless you've lots of messages. If you have a large number of consumers and a relatively high <a shape="rect" href="what-is-the-prefetch-limit-for.html">prefetch value</a> and you have a small number of messages that each message takes quite a while to process then the default dispatch policy might result in increasing the amount of time it takes to process all the messages (since the load balancing is not fair for small numbers of messages).</p><p>For queues, you can define whether the dispatch will occur in a round-robin fashion (default behaviour) or if one consumer's prefetch buffer will be exhausted before the dispatch process selects the next consumer along (strictOrderDispatch).<br clear="none"> The latter behaviour is enabled by setting the "strictOrderDispatch" attribute on the &lt;policyEntry /&gt; element. E.g.:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">&lt;policyEntry queue="&gt;" strictOrderDispatch="false" /&gt; </pre>
-</div></div><p>Consumer priorities are observed, so if you have several consumers with different <a shape="rect" class="external-link" href="http://activemq.apache.org/consumer-priority.html">priorities</a>, the one with the highest priority will be flooded first until it can take no more, then the next one along, etc.</p><p>From version 5.14.0 - the&#160;strictOrderDispatch=true option will ensure strict order for redispatched messages when there is a single consumer.&#160;</p><h2 id="DispatchPolicies-DispatchpoliciesforTopics">Dispatch policies for Topics</h2><p>There are more options for topics because the dispatch policy is plug-able. Any implementation of org.apache.activemq.broker.region.policy.DispatchPolicy will work.<br clear="none"> The default org.apache.activemq.broker.region.policy.SimpleDispatchPolicy does what one would expect and delivers messages to all subscribers. An example of a more advanced implementation is the org.apache.activemq.broker.region.policy.Priority
 NetworkDispatchPolicy which will only dispatch to the highest priority network consumer. This is useful in a loop network topology where there is more than route to a consumer.</p><p>Here is an <a shape="rect" class="external-link" href="http://svn.apache.org/repos/asf/activemq/trunk/activemq-unit-tests/src/test/resources/org/apache/activemq/xbean/activemq-policy.xml">example of destination policy configuration</a>.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;">&lt;destinationPolicy&gt;
+<div class="wiki-content maincontent"><h1 id="DispatchPolicies-DispatchPolicies">Dispatch Policies</h1><h2 id="DispatchPolicies-Dispatchpoliciesforqueues">Dispatch policies for queues</h2><p>Plug-able dispatch policies only apply to topics. For Queues, dispatch is more static, you can choose round robin (the default) or strict order. Before discussing dispatch policies its worth first understanding <a shape="rect" href="what-is-the-prefetch-limit-for.html">the purpose of the prefetch value</a>.</p><p>The out of the box configuration of ActiveMQ is designed for high performance and high throughput messaging where there are lots of messages that need to be dispatched to consumers as quickly as possible. So the default prefetch values are fairly large and the default dispatch policy will try and fill the prefetch buffers as quickly as possible.</p><p>However with messaging there are many use cases and sometimes the default configuration is not ideal to your use case; when you send a sm
 all number of messages, they tend to all go to one consumer unless you've lots of messages. If you have a large number of consumers and a relatively high <a shape="rect" href="what-is-the-prefetch-limit-for.html">prefetch value</a> and you have a small number of messages that each message takes quite a while to process then the default dispatch policy might result in increasing the amount of time it takes to process all the messages (since the load balancing is not fair for small numbers of messages).</p><p>For queues, you can define whether the dispatch will occur in a round-robin fashion (default behaviour) or if one consumer's prefetch buffer will be exhausted before the dispatch process selects the next consumer along (strictOrderDispatch).<br clear="none"> The latter behaviour is enabled by setting the "strictOrderDispatch" attribute on the &lt;policyEntry /&gt; element. E.g.:</p><plain-text-body>&lt;policyEntry queue="&gt;" strictOrderDispatch="false" /&gt; </plain-text-body><
 p>Consumer priorities are observed, so if you have several consumers with different <a shape="rect" class="external-link" href="http://activemq.apache.org/consumer-priority.html">priorities</a>, the one with the highest priority will be flooded first until it can take no more, then the next one along, etc.</p><p>From version 5.14.0 - the&#160;strictOrderDispatch=true option will ensure strict order for redispatched messages when there is a single consumer.&#160;</p><h2 id="DispatchPolicies-DispatchpoliciesforTopics">Dispatch policies for Topics</h2><p>There are more options for topics because the dispatch policy is plug-able. Any implementation of org.apache.activemq.broker.region.policy.DispatchPolicy will work.<br clear="none"> The default org.apache.activemq.broker.region.policy.SimpleDispatchPolicy does what one would expect and delivers messages to all subscribers. An example of a more advanced implementation is the org.apache.activemq.broker.region.policy.PriorityNetworkDispat
 chPolicy which will only dispatch to the highest priority network consumer. This is useful in a loop network topology where there is more than route to a consumer.</p><p>Here is an <a shape="rect" class="external-link" href="http://svn.apache.org/repos/asf/activemq/trunk/activemq-unit-tests/src/test/resources/org/apache/activemq/xbean/activemq-policy.xml">example of destination policy configuration</a>.</p><parameter ac:name="">xml</parameter><plain-text-body>&lt;destinationPolicy&gt;
   &lt;policyMap&gt;
 	&lt;policyEntries&gt;
 	  &lt;policyEntry topic="FOO.&gt;"&gt;
@@ -119,8 +106,7 @@
 	  &lt;policyEntry tempQueue="true" advisoryForConsumed="true" /&gt;
 	&lt;/policyEntries&gt;
   &lt;/policyMap&gt;
-&lt;/destinationPolicy&gt;</pre>
-</div></div></div>
+&lt;/destinationPolicy&gt;</plain-text-body></div>
         </td>
         <td valign="top">
           <div class="navigation">

Modified: websites/production/activemq/content/jndi-support.html
==============================================================================
--- websites/production/activemq/content/jndi-support.html (original)
+++ websites/production/activemq/content/jndi-support.html Fri Aug 25 08:24:11 2017
@@ -32,15 +32,6 @@
     </style>
     <![endif]-->
 
-          <link href='http://activemq.apache.org/styles/highlighter/styles/shCore.css' rel='stylesheet' type='text/css' /> 
-      <link href='http://activemq.apache.org/styles/highlighter/styles/shThemeEclipse.css' rel='stylesheet' type='text/css' /> 
-      <script src='http://activemq.apache.org/styles/highlighter/scripts/shCore.js' type='text/javascript'></script> 
-              <script src='http://activemq.apache.org/styles/highlighter/scripts/shBrushJava.js' type='text/javascript'></script> 
-         
-      <script type="text/javascript"> 
-        SyntaxHighlighter.defaults['toolbar'] = false; 
-        SyntaxHighlighter.all(); 
-      </script> 
     
     <title>
     Apache ActiveMQ &#8482; -- JNDI Support
@@ -80,8 +71,7 @@
   <tbody>
         <tr>
         <td valign="top" width="100%">
-<div class="wiki-content maincontent"><p>ActiveMQ will work with any JNDI provider capable of storing Java objects. However it is common to require a JNDI initial context to be able to run many JMS example programs, like <a shape="rect" class="external-link" href="http://java.sun.com/products/jms/tutorial/1_3_1-fcs/doc/jms_tutorialTOC.html" rel="nofollow">Sun's JMS tutorial.</a></p><p>So we provide a simple JNDI&#160;<strong><code>InitialContextFactory</code></strong> which can be used to lookup JMS connection factory objects as well as Destination objects. For example if you place this <a shape="rect" class="external-link" href="http://svn.apache.org/repos/asf/activemq/trunk/activemq-unit-tests/src/test/resources/jndi.properties">jndi.properties</a> file on your classpath, you can look inside the&#160;<strong><code>InitialContext</code></strong> and lookup&#160;<strong><code>ConnectionFactory</code></strong> objects and&#160;<strong><code>Destinations</code></strong> etc.</p><div c
 lass="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory
+<div class="wiki-content maincontent"><p>ActiveMQ will work with any JNDI provider capable of storing Java objects. However it is common to require a JNDI initial context to be able to run many JMS example programs, like <a shape="rect" class="external-link" href="http://java.sun.com/products/jms/tutorial/1_3_1-fcs/doc/jms_tutorialTOC.html" rel="nofollow">Sun's JMS tutorial.</a></p><p>So we provide a simple JNDI&#160;<strong><code>InitialContextFactory</code></strong> which can be used to lookup JMS connection factory objects as well as Destination objects. For example if you place this <a shape="rect" class="external-link" href="http://svn.apache.org/repos/asf/activemq/trunk/activemq-unit-tests/src/test/resources/jndi.properties">jndi.properties</a> file on your classpath, you can look inside the&#160;<strong><code>InitialContext</code></strong> and lookup&#160;<strong><code>ConnectionFactory</code></strong> objects and&#160;<strong><code>Destinations</code></strong> etc.</p><plain
 -text-body>java.naming.factory.initial = org.apache.activemq.jndi.ActiveMQInitialContextFactory
 
 # Use the following property to configure the default connector
 java.naming.provider.url = vm://localhost
@@ -96,9 +86,7 @@ queue.MyQueue = example.MyQueue
 
 # Register some topics in JNDI using the form:
 #   topic.[jndiName] = [physicalName]
-topic.MyTopic = example.MyTopic</pre>
-</div></div><p>You can edit the&#160;<strong><code>jndi.properties</code></strong> file to configure the <strong><code>ActiveMQConnectionFactory</code></strong>'s properties such as&#160;<strong><code>brokerURL</code></strong> and whether or not there should be an embedded broker etc. See <a shape="rect" href="how-do-i-embed-a-broker-inside-a-connection.html">how to embed a broker in a connection</a> for more details.</p><h3 id="JNDISupport-ActiveMQJNDITutorial">ActiveMQ JNDI Tutorial</h3><p>This is a quick one page tutorial on how to setup and use JNDI to create a connection to ActiveMQ. The first thing is ActiveMQ does not provide a full JNDI server. This means JMS clients need to use properties files to create a JNDI <strong><code>IntialContextFactory</code></strong>. If you need an example properties file, you can look the source distribution <a shape="rect" class="external-link" href="https://github.com/apache/activemq/blob/master/activemq-unit-tests/src/test/resources/jndi.pro
 perties" rel="nofollow">https://github.com/apache/activemq/blob/master/activemq-unit-tests/src/test/resources/jndi.properties</a>. Before we proceed, here are the properties.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Value</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>java.naming.factory.initial</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.apache.activemq.jndi.ActiveMQInitialContextFactory</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>java.naming.provider.url</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>tcp://hostname:61616</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>topic.MyTopic</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>example.MyTopic</code></p></t
 d></tr></tbody></table></div><p>Make sure to add&#160;<strong><code>activemq-<em>&lt;version&gt;</em>.jar</code></strong> and&#160;<strong><code>spring-1.x.jar</code></strong> to your classpath. If the libraries are not in the classpath, you will get a&#160;<strong><code>ClassNotFoundException</code></strong> at runtime. If you get <strong><code>ClassNotFoundException</code></strong>, try printing out the classpath and check it is present. You can also run ActiveMQ with&#160;<strong><code>-verbose</code></strong> option to verify the jar was loaded correctly.</p><p><strong>Sample Code</strong></p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">// Create a new intial context, which loads from jndi.properties file:
+topic.MyTopic = example.MyTopic</plain-text-body><p>You can edit the&#160;<strong><code>jndi.properties</code></strong> file to configure the <strong><code>ActiveMQConnectionFactory</code></strong>'s properties such as&#160;<strong><code>brokerURL</code></strong> and whether or not there should be an embedded broker etc. See <a shape="rect" href="how-do-i-embed-a-broker-inside-a-connection.html">how to embed a broker in a connection</a> for more details.</p><h3 id="JNDISupport-ActiveMQJNDITutorial">ActiveMQ JNDI Tutorial</h3><p>This is a quick one page tutorial on how to setup and use JNDI to create a connection to ActiveMQ. The first thing is ActiveMQ does not provide a full JNDI server. This means JMS clients need to use properties files to create a JNDI <strong><code>IntialContextFactory</code></strong>. If you need an example properties file, you can look the source distribution <a shape="rect" class="external-link" href="https://github.com/apache/activemq/blob/master/activemq-u
 nit-tests/src/test/resources/jndi.properties" rel="nofollow">https://github.com/apache/activemq/blob/master/activemq-unit-tests/src/test/resources/jndi.properties</a>. Before we proceed, here are the properties.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Name</p></th><th colspan="1" rowspan="1" class="confluenceTh"><p>Value</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>java.naming.factory.initial</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>org.apache.activemq.jndi.ActiveMQInitialContextFactory</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>java.naming.provider.url</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><p><code>tcp://hostname:61616</code></p></td></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><p><code>topic.MyTopic</code></p></td><td colspan="1" rowspan="1" class="confluenceTd"><
 p><code>example.MyTopic</code></p></td></tr></tbody></table></div><p>Make sure to add&#160;<strong><code>activemq-<em>&lt;version&gt;</em>.jar</code></strong> and&#160;<strong><code>spring-1.x.jar</code></strong> to your classpath. If the libraries are not in the classpath, you will get a&#160;<strong><code>ClassNotFoundException</code></strong> at runtime. If you get <strong><code>ClassNotFoundException</code></strong>, try printing out the classpath and check it is present. You can also run ActiveMQ with&#160;<strong><code>-verbose</code></strong> option to verify the jar was loaded correctly.</p><p><strong>Sample Code</strong></p><parameter ac:name="language">java</parameter><plain-text-body>// Create a new intial context, which loads from jndi.properties file:
 javax.naming.Context ctx = new javax.naming.InitialContext();
 
 // Lookup the connection factory:
@@ -115,24 +103,14 @@ javax.jms.TopicSession session = conn.cr
 
 // Create a new subscriber to receive messages:
 javax.jms.TopicSubscriber subscriber = session.createSubscriber(mytopic);
-</pre>
-</div></div><p>Notice the name of the topic in the sample is <strong><code>MyTopic</code></strong>. ActiveMQ will read the&#160;<strong><code>jndi.properties</code></strong> files and creates the topics and queues in a lazy fashion. The prefix topic and queue is stripped, so the JNDI name begins after the prefix.</p><p>Once you have the&#160;<strong><code>jndi.properties</code></strong> edited and ready, it needs to be accessible to your application. The easiest way is to add&#160;<strong><code>jndi.properties</code></strong> to a jar file. When&#160;<strong><code>new InitialContext()</code></strong> is called, it will scan the resources and find the file. If you get <strong><code>javax.naming.NamingException</code></strong>, it usually means the&#160;<strong><code>jndi.properties</code></strong> file is not accessible.</p><p>You can also try to create a new initial context using either an instance of properties file or a map. For example, the approach recommended by JMS specificati
 on will work just fine.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Example Recommended by Specification</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">Properties props = new Properties();
+</plain-text-body><p>Notice the name of the topic in the sample is <strong><code>MyTopic</code></strong>. ActiveMQ will read the&#160;<strong><code>jndi.properties</code></strong> files and creates the topics and queues in a lazy fashion. The prefix topic and queue is stripped, so the JNDI name begins after the prefix.</p><p>Once you have the&#160;<strong><code>jndi.properties</code></strong> edited and ready, it needs to be accessible to your application. The easiest way is to add&#160;<strong><code>jndi.properties</code></strong> to a jar file. When&#160;<strong><code>new InitialContext()</code></strong> is called, it will scan the resources and find the file. If you get <strong><code>javax.naming.NamingException</code></strong>, it usually means the&#160;<strong><code>jndi.properties</code></strong> file is not accessible.</p><p>You can also try to create a new initial context using either an instance of properties file or a map. For example, the approach recommended by JMS speci
 fication will work just fine.</p><div class="table-wrap"><table class="confluenceTable"><tbody><tr><th colspan="1" rowspan="1" class="confluenceTh"><p>Example Recommended by Specification</p></th></tr><tr><td colspan="1" rowspan="1" class="confluenceTd"><parameter ac:name="language">java</parameter><plain-text-body>Properties props = new Properties();
 props.setProperty(Context.INITIAL_CONTEXT_FACTORY,"org.apache.activemq.jndi.ActiveMQInitialContextFactory");
 props.setProperty(Context.PROVIDER_URL,"tcp://hostname:61616");
 javax.naming.Context ctx = new InitialContext(props);||
-</pre>
-</div></div></td></tr></tbody></table></div><p>If ActiveMQ is embedded within an EJB container, you will need to look at the containers documentation for the correct JNDI values.</p><h3 id="JNDISupport-DynamicallyCreatingDestinations">Dynamically Creating Destinations</h3><p>For the easiest possible configuration with JNDI based programs, there are two dynamic contexts, namely:</p><ul><li><strong><code>dynamicQueues</code></strong></li><li><strong><code>dynamicTopics</code></strong></li></ul><p>These allow you to lookup queues and topics using JNDI without any configuration.</p><p>For example, if you use the following name to lookup into JNDI:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">dynamicQueues/FOO.BAR
-</pre>
-</div></div><p>you will get back an&#160;<strong><code>ActiveMQQueue</code></strong> of the name <strong><code>FOO.BAR</code></strong>. This can be very handy if you can easily reconfigure the JNDI name to use to lookup something in JNDI, but don't want to have to double configure a&#160;<strong><code>jndi.properties</code></strong> to match.</p><h3 id="JNDISupport-WorkingWithEmbeddedBrokers">Working With Embedded Brokers</h3><p>It is often useful to use an embedded broker in the same JVM as the JMS client. For this see <a shape="rect" href="how-do-i-embed-a-broker-inside-a-connection.html">How do I embed a Broker inside a Connection</a>.</p><p>If you want to use an embedded broker with your JNDI provider you can just use the <a shape="rect" href="vm-transport-reference.html">VM Transport</a> to connect to the broker in your URL. e.g. to create a purely in JVM broker use this URI</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">vm://locahost
-</pre>
-</div></div><p>If you want to customize the broker use something like this:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">vm:broker:(tcp://localhost:61616)
-</pre>
-</div></div><p>More options are available in the <a shape="rect" href="vm-transport-reference.html">VM Transport Reference</a></p><h3 id="JNDISupport-ExampleJavaCode">Example Java Code</h3><p>Once you have configured JNDI on the classpath you can run any normal JMS application such as the following <a shape="rect" class="external-link" href="http://svn.apache.org/repos/asf/incubator/activemq/trunk/activemq-unit-tests/src/test/java/org/apache/activemq/demo/SimpleProducer.java">example</a>. Notice that the Java code just uses pure JMS APIs and is not in any way ActiveMQ specific</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">/**
+</plain-text-body></td></tr></tbody></table></div><p>If ActiveMQ is embedded within an EJB container, you will need to look at the containers documentation for the correct JNDI values.</p><h3 id="JNDISupport-DynamicallyCreatingDestinations">Dynamically Creating Destinations</h3><p>For the easiest possible configuration with JNDI based programs, there are two dynamic contexts, namely:</p><ul><li><strong><code>dynamicQueues</code></strong></li><li><strong><code>dynamicTopics</code></strong></li></ul><p>These allow you to lookup queues and topics using JNDI without any configuration.</p><p>For example, if you use the following name to lookup into JNDI:</p><plain-text-body>dynamicQueues/FOO.BAR
+</plain-text-body><p>you will get back an&#160;<strong><code>ActiveMQQueue</code></strong> of the name <strong><code>FOO.BAR</code></strong>. This can be very handy if you can easily reconfigure the JNDI name to use to lookup something in JNDI, but don't want to have to double configure a&#160;<strong><code>jndi.properties</code></strong> to match.</p><h3 id="JNDISupport-WorkingWithEmbeddedBrokers">Working With Embedded Brokers</h3><p>It is often useful to use an embedded broker in the same JVM as the JMS client. For this see <a shape="rect" href="how-do-i-embed-a-broker-inside-a-connection.html">How do I embed a Broker inside a Connection</a>.</p><p>If you want to use an embedded broker with your JNDI provider you can just use the <a shape="rect" href="vm-transport-reference.html">VM Transport</a> to connect to the broker in your URL. e.g. to create a purely in JVM broker use this URI</p><plain-text-body>vm://locahost
+</plain-text-body><p>If you want to customize the broker use something like this:</p><plain-text-body>vm:broker:(tcp://localhost:61616)
+</plain-text-body><p>More options are available in the <a shape="rect" href="vm-transport-reference.html">VM Transport Reference</a></p><h3 id="JNDISupport-ExampleJavaCode">Example Java Code</h3><p>Once you have configured JNDI on the classpath you can run any normal JMS application such as the following <a shape="rect" class="external-link" href="http://svn.apache.org/repos/asf/incubator/activemq/trunk/activemq-unit-tests/src/test/java/org/apache/activemq/demo/SimpleProducer.java">example</a>. Notice that the Java code just uses pure JMS APIs and is not in any way ActiveMQ specific</p><parameter ac:name="language">java</parameter><plain-text-body>/**
  * The SimpleQueueSender class consists only of a main method,
  * which sends several messages to a queue.
  *
@@ -253,8 +231,7 @@ public final class SimpleProducer {
         }
     }
 }
-</pre>
-</div></div></div>
+</plain-text-body></div>
         </td>
         <td valign="top">
           <div class="navigation">

Modified: websites/production/activemq/content/kahadb-replication-experimental.html
==============================================================================
--- websites/production/activemq/content/kahadb-replication-experimental.html (original)
+++ websites/production/activemq/content/kahadb-replication-experimental.html Fri Aug 25 08:24:11 2017
@@ -32,17 +32,6 @@
     </style>
     <![endif]-->
 
-          <link href='http://activemq.apache.org/styles/highlighter/styles/shCore.css' rel='stylesheet' type='text/css' /> 
-      <link href='http://activemq.apache.org/styles/highlighter/styles/shThemeEclipse.css' rel='stylesheet' type='text/css' /> 
-      <script src='http://activemq.apache.org/styles/highlighter/scripts/shCore.js' type='text/javascript'></script> 
-              <script src='http://activemq.apache.org/styles/highlighter/scripts/shBrushJava.js' type='text/javascript'></script> 
-              <script src='http://activemq.apache.org/styles/highlighter/scripts/shBrushXml.js' type='text/javascript'></script> 
-              <script src='http://activemq.apache.org/styles/highlighter/scripts/shBrushPlain.js' type='text/javascript'></script> 
-         
-      <script type="text/javascript"> 
-        SyntaxHighlighter.defaults['toolbar'] = false; 
-        SyntaxHighlighter.all(); 
-      </script> 
     
     <title>
     Apache ActiveMQ &#8482; -- KahaDB Replication (Experimental)
@@ -82,10 +71,8 @@
   <tbody>
         <tr>
         <td valign="top" width="100%">
-<div class="wiki-content maincontent"><div class="confluence-information-macro confluence-information-macro-warning"><p class="title">Note</p><span class="aui-icon aui-icon-small aui-iconfont-error confluence-information-macro-icon"></span><div class="confluence-information-macro-body"><p>This is under review - and not currently supported.</p></div></div><h2 id="KahaDBReplication(Experimental)-Overview">Overview</h2><p>The new KahaDB store supports a very fast and flexible replication system. It features:</p><ul><li>Journal level replication (The translates into lower overhead to the master to replicate records).</li><li>Support for multiple slaves.</li><li>Support to dynamically add slaves at runtime.</li><li>Uses multiple concurrent data transfer sessions to do an initial slave synchronization.</li><li>Big slave synchronizations can be resumed so synchronization progress is not lost if a slave is restarted.</li><li>A configurable minimum number of replicas allows you to pause proc
 essing until the data has been guaranteed to be replicated enough times.</li></ul><h2 id="KahaDBReplication(Experimental)-MasterElection">Master Election</h2><p>KahaDB supports a pluggable Master Election algorithm but the only current implementation is one based on <a shape="rect" class="external-link" href="http://hadoop.apache.org/zookeeper">ZooKeeper</a>.</p><p>ZooKeeper is used to implement the master election algorithm. ZooKeeper is a very fast, replicated, in memory database with features that make it easy to implement cluster control algorithms. It is an Apache project which you can <a shape="rect" class="external-link" href="http://hadoop.apache.org/zookeeper/releases.html">freely download</a>. You must installed and have at least one ZooKeeper server running before setting up a KahaDB Master Slave configuration.</p><h2 id="KahaDBReplication(Experimental)-ConfiguringaBroker:">Configuring a Broker:</h2><p>The ActiveMQ binary distribution includes a KahaDB HA broker configura
 tion at <strong>$ACTIVEMQ_HOME/conf/ha.xml</strong>.</p><p>It it setup to look for a ZooKeeper 3.0.0 server on localhost at port 2181. Edit the configuration if this is not where you are running your ZooKeeper server.</p><p>Start the configuation up by running:</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">prompt&gt; $ACTIVEMQ_HOME/bin/activemq xbean:ha.xml
-</pre>
-</div></div><p>The actual contents of the configuration file follows:</p><div class="error"><span class="error">Error formatting macro: snippet: java.lang.IndexOutOfBoundsException: Index: 20, Size: 20</span> </div><h2 id="KahaDBReplication(Experimental)-UnderstandingthekahadbReplicationXMLelement">Understanding the kahadbReplication XML element</h2><h3 id="KahaDBReplication(Experimental)-ThebrokerURIAttribute">The brokerURI Attribute</h3><p>Notice that the the brokerURI attribute points at another broker configuration file. The ha-broker.xml contains the actual broker configuration that the broker uses when the node take over as master. The ha-broker.xml configuration file is a standard broker configuration except in these aspects:</p><ul><li>It MUST set the start="false" attribute on the broker element.</li><li>It MUST not configure a persistenceAdapter.</li></ul><p>The above rules allows the replication system to inject the replicated KahaDB store into the Master when it's starti
 ng up.</p><h3 id="KahaDBReplication(Experimental)-TheminimumReplicasAttribute">The minimumReplicas Attribute</h3><p>The minimumReplicas specifies how many copies of the database are required before synchronous update operations are deemed successful. Setting this to 0 allows a broker to continue operating even if there are no slaves attached. If the value is set to 1 or greater, and there are no slaves attached, the brokers persistent message processing will be suspended until the minimum number of slaves are attached and the data synchronized.</p><h3 id="KahaDBReplication(Experimental)-TheuriAttribute">The uri Attribute</h3><p>The uri attribute should always be configured with a <strong>kdbr://</strong> based URI. KDBR stands for 'KahaDB Replication' and this is the replication protocol used between the masters and the slaves. The master binds the specified port with slaves subsequently connect to and establish replication sessions. The host name in the uri MUST get updated to the 
 actual machine's host name since this is also used to identify the nodes in the cluster.</p><h3 id="KahaDBReplication(Experimental)-ThedirectoryAttribute">The directory Attribute</h3><p>This is the data directory where the KahaDB will store it's persistence files.</p></div>
+<div class="wiki-content maincontent"><parameter ac:name="title">Note</parameter><rich-text-body><p>This is under review - and not currently supported.</p></rich-text-body><h2 id="KahaDBReplication(Experimental)-Overview">Overview</h2><p>The new KahaDB store supports a very fast and flexible replication system. It features:</p><ul><li>Journal level replication (The translates into lower overhead to the master to replicate records).</li><li>Support for multiple slaves.</li><li>Support to dynamically add slaves at runtime.</li><li>Uses multiple concurrent data transfer sessions to do an initial slave synchronization.</li><li>Big slave synchronizations can be resumed so synchronization progress is not lost if a slave is restarted.</li><li>A configurable minimum number of replicas allows you to pause processing until the data has been guaranteed to be replicated enough times.</li></ul><h2 id="KahaDBReplication(Experimental)-MasterElection">Master Election</h2><p>KahaDB supports a plugga
 ble Master Election algorithm but the only current implementation is one based on <a shape="rect" class="external-link" href="http://hadoop.apache.org/zookeeper">ZooKeeper</a>.</p><p>ZooKeeper is used to implement the master election algorithm. ZooKeeper is a very fast, replicated, in memory database with features that make it easy to implement cluster control algorithms. It is an Apache project which you can <a shape="rect" class="external-link" href="http://hadoop.apache.org/zookeeper/releases.html">freely download</a>. You must installed and have at least one ZooKeeper server running before setting up a KahaDB Master Slave configuration.</p><h2 id="KahaDBReplication(Experimental)-ConfiguringaBroker:">Configuring a Broker:</h2><p>The ActiveMQ binary distribution includes a KahaDB HA broker configuration at <strong>$ACTIVEMQ_HOME/conf/ha.xml</strong>.</p><p>It it setup to look for a ZooKeeper 3.0.0 server on localhost at port 2181. Edit the configuration if this is not where you ar
 e running your ZooKeeper server.</p><p>Start the configuation up by running:</p><plain-text-body>prompt&gt; $ACTIVEMQ_HOME/bin/activemq xbean:ha.xml
+</plain-text-body><p>The actual contents of the configuration file follows:<plain-text-body>{snippet:lang=xml|id=example|url=activemq/trunk/assembly/src/release/conf/ha.xml}</plain-text-body></p><h2 id="KahaDBReplication(Experimental)-UnderstandingthekahadbReplicationXMLelement">Understanding the kahadbReplication XML element</h2><h3 id="KahaDBReplication(Experimental)-ThebrokerURIAttribute">The brokerURI Attribute</h3><p>Notice that the the brokerURI attribute points at another broker configuration file. The ha-broker.xml contains the actual broker configuration that the broker uses when the node take over as master. The ha-broker.xml configuration file is a standard broker configuration except in these aspects:</p><ul><li>It MUST set the start="false" attribute on the broker element.</li><li>It MUST not configure a persistenceAdapter.</li></ul><p>The above rules allows the replication system to inject the replicated KahaDB store into the Master when it's starting up.</p><h3 id="Ka
 haDBReplication(Experimental)-TheminimumReplicasAttribute">The minimumReplicas Attribute</h3><p>The minimumReplicas specifies how many copies of the database are required before synchronous update operations are deemed successful. Setting this to 0 allows a broker to continue operating even if there are no slaves attached. If the value is set to 1 or greater, and there are no slaves attached, the brokers persistent message processing will be suspended until the minimum number of slaves are attached and the data synchronized.</p><h3 id="KahaDBReplication(Experimental)-TheuriAttribute">The uri Attribute</h3><p>The uri attribute should always be configured with a <strong>kdbr://</strong> based URI. KDBR stands for 'KahaDB Replication' and this is the replication protocol used between the masters and the slaves. The master binds the specified port with slaves subsequently connect to and establish replication sessions. The host name in the uri MUST get updated to the actual machine's hos
 t name since this is also used to identify the nodes in the cluster.</p><h3 id="KahaDBReplication(Experimental)-ThedirectoryAttribute">The directory Attribute</h3><p>This is the data directory where the KahaDB will store it's persistence files.</p></div>
         </td>
         <td valign="top">
           <div class="navigation">

Modified: websites/production/activemq/content/persistence.html
==============================================================================
--- websites/production/activemq/content/persistence.html (original)
+++ websites/production/activemq/content/persistence.html Fri Aug 25 08:24:11 2017
@@ -32,16 +32,6 @@
     </style>
     <![endif]-->
 
-          <link href='http://activemq.apache.org/styles/highlighter/styles/shCore.css' rel='stylesheet' type='text/css' /> 
-      <link href='http://activemq.apache.org/styles/highlighter/styles/shThemeEclipse.css' rel='stylesheet' type='text/css' /> 
-      <script src='http://activemq.apache.org/styles/highlighter/scripts/shCore.js' type='text/javascript'></script> 
-              <script src='http://activemq.apache.org/styles/highlighter/scripts/shBrushJava.js' type='text/javascript'></script> 
-              <script src='http://activemq.apache.org/styles/highlighter/scripts/shBrushXml.js' type='text/javascript'></script> 
-         
-      <script type="text/javascript"> 
-        SyntaxHighlighter.defaults['toolbar'] = false; 
-        SyntaxHighlighter.all(); 
-      </script> 
     
     <title>
     Apache ActiveMQ &#8482; -- Persistence
@@ -81,20 +71,11 @@
   <tbody>
         <tr>
         <td valign="top" width="100%">
-<div class="wiki-content maincontent"><h2 id="Persistence-ActiveMQV5.9">ActiveMQ V5.9</h2><p>In ActiveMQ 5.9, the <a shape="rect" href="replicated-leveldb-store.html">Replicated LevelDB Store</a> is introduced. It handles using <a shape="rect" class="external-link" href="http://zookeeper.apache.org/">Apache ZooKeeper</a> to pick a master from a set of broker nodes configured to replicate single LevelDB Store. Then synchronizes all slave LevelDB Stores with the master keeps them up to date by replicating all updates to the master. This might become the preferred <a shape="rect" href="masterslave.html">Master Slave</a> configuration going forward.</p><h2 id="Persistence-ActiveMQV5.8">ActiveMQ V5.8</h2><p>In ActiveMQ 5.8, the <a shape="rect" href="leveldb-store.html">LevelDB Store</a> was introduced. The LevelDB Store is a file based persistence database. It has been optimized to provide even faster persistence than KahaDB. Although not yet the default message store, we expect this sto
 re implementation become the default in future releases.</p><h2 id="Persistence-ActiveMQV5.3">ActiveMQ V5.3</h2><p>From 5.3 onwards - we recommend you use <a shape="rect" href="kahadb.html">KahaDB</a> - which offers improved scalability and recoverability over the <a shape="rect" href="amq-message-store.html">AMQ Message Store</a>.<br clear="none"> The <a shape="rect" href="amq-message-store.html">AMQ Message Store</a> which although faster than <a shape="rect" href="kahadb.html">KahaDB</a> - does not scales as well as <a shape="rect" href="kahadb.html">KahaDB</a> and recovery times take longer.</p><h2 id="Persistence-ActiveMQV4">ActiveMQ V4</h2><p>For long term persistence we recommend using JDBC coupled with our high performance journal. You can use just JDBC if you wish but its quite slow.</p><p>Our out of the box default configuration uses <a shape="rect" class="external-link" href="http://incubator.apache.org/derby/">Apache Derby</a> as the default database, which is easy to em
 bed - but we support all the <a shape="rect" href="jdbc-support.html">major SQL databases</a> - just reconfigure your JDBC configuration in the <a shape="rect" href="xml-configuration.html">Xml Configuration</a>.</p><h2 id="Persistence-Highperformancejournal-ActiveMQ4.x">High performance journal - ActiveMQ 4.x</h2><p>To achieve high performance of durable messaging in ACtiveMQ V4.x we strongly recommend you use our high performance journal - which is enabled by default. This works rather like a database; messages (and transcation commits/rollbacks and message acknowledgements) are written to the journal as fast as is humanly possible - then at intervals we checkpoint the journal to the long term persistence storage (in this case JDBC).</p><p>Its common when using queues for example that messages are consumed fairly shortly after being published; so you could publish 10,000 messages and only have a few messages outstanding - so when we checkpoint to the JDBC database, we often have o
 nly a small amount of messages to actually write to JDBC. Even if we have to write all the messages to the JDBC, we still get performance gains with the journal, since we can use a large transaction batch to insert the messages into the JDBC database to boost performance on the JDBC side.</p><p>Our journal is based on lots of the great work in the <a shape="rect" class="external-link" href="http://howl.objectweb.org/" rel="nofollow">Howl</a> project; we keep close ties to the Howl community. However since ActiveMQ has to handle arbitarily large message sizes, we've had to make our journal handle any size of message and so we don't use the fixed size record model that Howl uses.</p><h2 id="Persistence-Configuringpersistence">Configuring persistence</h2><p>For full explict control over configuration check out the <a shape="rect" href="xml-configuration.html">Xml Configuration</a>. However a quick way to set which persistence adapter to use is to set the following system property to be
  the class name of the PersistenceAdapter implementation.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">activemq.persistenceAdapter
-</pre>
-</div></div><p>When running the broker from the command line, we look for the activemq.xml on the classpath unless you specify one to use. e.g.<br clear="none"> <strong>AMQ 4.x</strong></p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">activemq xbean:file:myconfig.xml
-</pre>
-</div></div><p><strong>AMQ 3.x</strong></p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">activemq myconfig.xml
-</pre>
-</div></div><p>or just<br clear="none"> <strong>AMQ3.x/AMQ4.x</strong></p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">activemq
-</pre>
-</div></div><p>Here is a sample XML configuration which shows how to configure the journal and the JDBC persistence.</p><p>AMQ 5.x</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: xml; gutter: false; theme: Default" style="font-size:12px;">&lt;beans 
+<div class="wiki-content maincontent"><h2 id="Persistence-ActiveMQV5.9">ActiveMQ V5.9</h2><p>In ActiveMQ 5.9, the <a shape="rect" href="replicated-leveldb-store.html">Replicated LevelDB Store</a> is introduced. It handles using <a shape="rect" class="external-link" href="http://zookeeper.apache.org/">Apache ZooKeeper</a> to pick a master from a set of broker nodes configured to replicate single LevelDB Store. Then synchronizes all slave LevelDB Stores with the master keeps them up to date by replicating all updates to the master. This might become the preferred <a shape="rect" href="masterslave.html">Master Slave</a> configuration going forward.</p><h2 id="Persistence-ActiveMQV5.8">ActiveMQ V5.8</h2><p>In ActiveMQ 5.8, the <a shape="rect" href="leveldb-store.html">LevelDB Store</a> was introduced. The LevelDB Store is a file based persistence database. It has been optimized to provide even faster persistence than KahaDB. Although not yet the default message store, we expect this sto
 re implementation become the default in future releases.</p><h2 id="Persistence-ActiveMQV5.3">ActiveMQ V5.3</h2><p>From 5.3 onwards - we recommend you use <a shape="rect" href="kahadb.html">KahaDB</a> - which offers improved scalability and recoverability over the <a shape="rect" href="amq-message-store.html">AMQ Message Store</a>.<br clear="none"> The <a shape="rect" href="amq-message-store.html">AMQ Message Store</a> which although faster than <a shape="rect" href="kahadb.html">KahaDB</a> - does not scales as well as <a shape="rect" href="kahadb.html">KahaDB</a> and recovery times take longer.</p><h2 id="Persistence-ActiveMQV4">ActiveMQ V4</h2><p>For long term persistence we recommend using JDBC coupled with our high performance journal. You can use just JDBC if you wish but its quite slow.</p><p>Our out of the box default configuration uses <a shape="rect" class="external-link" href="http://incubator.apache.org/derby/">Apache Derby</a> as the default database, which is easy to em
 bed - but we support all the <a shape="rect" href="jdbc-support.html">major SQL databases</a> - just reconfigure your JDBC configuration in the <a shape="rect" href="xml-configuration.html">Xml Configuration</a>.</p><h2 id="Persistence-Highperformancejournal-ActiveMQ4.x">High performance journal - ActiveMQ 4.x</h2><p>To achieve high performance of durable messaging in ACtiveMQ V4.x we strongly recommend you use our high performance journal - which is enabled by default. This works rather like a database; messages (and transcation commits/rollbacks and message acknowledgements) are written to the journal as fast as is humanly possible - then at intervals we checkpoint the journal to the long term persistence storage (in this case JDBC).</p><p>Its common when using queues for example that messages are consumed fairly shortly after being published; so you could publish 10,000 messages and only have a few messages outstanding - so when we checkpoint to the JDBC database, we often have o
 nly a small amount of messages to actually write to JDBC. Even if we have to write all the messages to the JDBC, we still get performance gains with the journal, since we can use a large transaction batch to insert the messages into the JDBC database to boost performance on the JDBC side.</p><p>Our journal is based on lots of the great work in the <a shape="rect" class="external-link" href="http://howl.objectweb.org/" rel="nofollow">Howl</a> project; we keep close ties to the Howl community. However since ActiveMQ has to handle arbitarily large message sizes, we've had to make our journal handle any size of message and so we don't use the fixed size record model that Howl uses.</p><h2 id="Persistence-Configuringpersistence">Configuring persistence</h2><p>For full explict control over configuration check out the <a shape="rect" href="xml-configuration.html">Xml Configuration</a>. However a quick way to set which persistence adapter to use is to set the following system property to be
  the class name of the PersistenceAdapter implementation.</p><plain-text-body>activemq.persistenceAdapter
+</plain-text-body><p>When running the broker from the command line, we look for the activemq.xml on the classpath unless you specify one to use. e.g.<br clear="none"> <strong>AMQ 4.x</strong></p><plain-text-body>activemq xbean:file:myconfig.xml
+</plain-text-body><p><strong>AMQ 3.x</strong></p><plain-text-body>activemq myconfig.xml
+</plain-text-body><p>or just<br clear="none"> <strong>AMQ3.x/AMQ4.x</strong></p><plain-text-body>activemq
+</plain-text-body><p>Here is a sample XML configuration which shows how to configure the journal and the JDBC persistence.</p><p>AMQ 5.x</p><parameter ac:name="">xml</parameter><plain-text-body>&lt;beans 
   xmlns="http://www.springframework.org/schema/beans" 
   xmlns:amq="http://activemq.apache.org/schema/core"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
@@ -130,73 +111,23 @@
     &lt;property name="poolPreparedStatements" value="true"/&gt;
   &lt;/bean&gt;
   --&gt;  
-&lt;/beans&gt;</pre>
-</div></div><p>For more details see the <a shape="rect" href="initial-configuration.html">Initial Configuration</a> guide.</p><h2 id="Persistence-JDBCPersistencewithoutJournaling">JDBC Persistence without Journaling</h2><p>To enable JDBC persistence of JMS messages without journaling, we need to change the message broker's default persistence configuration from<br clear="none"> <strong>AMQ 4.x</strong></p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">&lt;persistenceAdapter&gt;
+&lt;/beans&gt;</plain-text-body><p>For more details see the <a shape="rect" href="initial-configuration.html">Initial Configuration</a> guide.</p><h2 id="Persistence-JDBCPersistencewithoutJournaling">JDBC Persistence without Journaling</h2><p>To enable JDBC persistence of JMS messages without journaling, we need to change the message broker's default persistence configuration from<br clear="none"> <strong>AMQ 4.x</strong></p><plain-text-body>&lt;persistenceAdapter&gt;
       &lt;journaledJDBC journalLogFiles="5" dataDirectory="../activemq-data"/&gt;
 &lt;/persistenceAdapter&gt;
-</pre>
-</div></div><p>to</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">&lt;persistenceAdapter&gt;
+</plain-text-body><p>to</p><plain-text-body>&lt;persistenceAdapter&gt;
       &lt;jdbcPersistenceAdapter dataSource="#my-ds"/&gt;
 &lt;/persistenceAdapter&gt;
-</pre>
-</div></div><p><strong>For AMQ 3.x</strong></p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">&lt;persistence&gt;
+</plain-text-body><p><strong>For AMQ 3.x</strong></p><plain-text-body>&lt;persistence&gt;
   &lt;journalPersistence directory="../var/journal"&gt;
       &lt;jdbcPersistence dataSourceRef="derby-ds"/&gt;
   &lt;/journalPersistence&gt;
 &lt;/persistence&gt;
-</pre>
-</div></div><p>to</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">&lt;persistence&gt;
+</plain-text-body><p>to</p><plain-text-body>&lt;persistence&gt;
      &lt;jdbcPersistence dataSourceRef="derby-ds"/&gt;
  &lt;/persistence&gt;
-</pre>
-</div></div><p>Make sure to send durable messages so that it will be persisted in the database server while waiting to be consumed by clients. More information on configuration JDBC persistence at <a shape="rect" href="jdbc-support.html">JDBC Support</a></p><p></p><h2 id="Persistence-KahaPersistence">Kaha Persistence</h2>
-
-<p>Kaha Peristence is a storage solution written especially for message persistence and is part of the ActiveMQ project. It's tuned to provide optimal performance for typical message usage patterns, which involves writing/reading and discarding messages that are persisted very quickly.</p>
-
-<p>Data stored in Kaha is appended to data logs - the log files are discarded once there is no longer interest in the data contained in the log.</p>
-
-<h3 id="Persistence-ConfiguringKahaPersistence">Configuring Kaha Persistence</h3>
-
-<p>In the broker XML specify the persistence adaptor to be Kaha e.g.</p>
-
-<p>ActiveMQ 5.0 and above:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
- &lt;broker brokerName="broker" persistent="true" useShutdownHook="false"&gt;
-    &lt;transportConnectors&gt;
-      &lt;transportConnector uri="tcp://localhost:61616"/&gt;
-    &lt;/transportConnectors&gt;
-    &lt;persistenceAdapter&gt;
-      &lt;kahaPersistenceAdapter directory="activemq-data" maxDataFileLength="33554432"/&gt;
-    &lt;/persistenceAdapter&gt;
-  &lt;/broker&gt;
-</pre>
-</div></div>
-
-
-<p>ActiveMQ 4.1 and earlier:</p>
-
-<div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">
- &lt;broker brokerName="broker" persistent="true" useShutdownHook="false"&gt;
-    &lt;transportConnectors&gt;
-      &lt;transportConnector uri="tcp://localhost:61616"/&gt;
-    &lt;/transportConnectors&gt;
-    &lt;persistenceAdapter&gt;
-      &lt;kahaPersistenceAdapter dir="activemq-data" maxDataFileLength="33554432"/&gt;
-    &lt;/persistenceAdapter&gt;
-  &lt;/broker&gt;
-</pre>
-</div></div><h2 id="Persistence-DisasterRecoveryoptions">Disaster Recovery options</h2><p>For people with high <a shape="rect" href="dr.html">DR</a> requirements we have various options for providing a <a shape="rect" href="replicated-message-store.html">Replicated Message Store</a> to allow full failover in times of major data centre failure.</p><h2 id="Persistence-DisablingPersistence">Disabling Persistence</h2><p>If you don't want persistence at all you can disable it easily via the <a shape="rect" href="xml-configuration.html">Xml Configuration</a>. e.g.</p><div class="code panel pdl" style="border-width: 1px;"><div class="codeContent panelContent pdl">
-<pre class="brush: java; gutter: false; theme: Default" style="font-size:12px;">&lt;broker persistent="false"&gt;
+</plain-text-body><p>Make sure to send durable messages so that it will be persisted in the database server while waiting to be consumed by clients. More information on configuration JDBC persistence at <a shape="rect" href="jdbc-support.html">JDBC Support</a></p><p><parameter ac:name=""><a shape="rect" href="kaha-persistence.html">Kaha Persistence</a></parameter></p><h2 id="Persistence-DisasterRecoveryoptions">Disaster Recovery options</h2><p>For people with high <a shape="rect" href="dr.html">DR</a> requirements we have various options for providing a <a shape="rect" href="replicated-message-store.html">Replicated Message Store</a> to allow full failover in times of major data centre failure.</p><h2 id="Persistence-DisablingPersistence">Disabling Persistence</h2><p>If you don't want persistence at all you can disable it easily via the <a shape="rect" href="xml-configuration.html">Xml Configuration</a>. e.g.</p><plain-text-body>&lt;broker persistent="false"&gt;
 &lt;/broker&gt;
-</pre>
-</div></div><p>This will make the broker use the <a shape="rect" class="external-link" href="http://activemq.apache.org/maven/apidocs/org/apache/activemq/store/memory/MemoryPersistenceAdapter.html">&lt;memoryPersistenceAdapter&gt;</a><br clear="none"> For an example of using a configuration URI see <a shape="rect" href="how-to-unit-test-jms-code.html">How To Unit Test JMS Code</a></p></div>
+</plain-text-body><p>This will make the broker use the <a shape="rect" class="external-link" href="http://activemq.apache.org/maven/apidocs/org/apache/activemq/store/memory/MemoryPersistenceAdapter.html">&lt;memoryPersistenceAdapter&gt;</a><br clear="none"> For an example of using a configuration URI see <a shape="rect" href="how-to-unit-test-jms-code.html">How To Unit Test JMS Code</a></p></div>
         </td>
         <td valign="top">
           <div class="navigation">



Mime
View raw message