You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2014/12/12 17:32:49 UTC

[2/5] activemq-6 git commit: documentation review fixes

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/b4144013/docs/user-manual/en/management.md
----------------------------------------------------------------------
diff --git a/docs/user-manual/en/management.md b/docs/user-manual/en/management.md
index 5c37827..3969514 100644
--- a/docs/user-manual/en/management.md
+++ b/docs/user-manual/en/management.md
@@ -1,5 +1,4 @@
-Management
-==========
+# Management
 
 ActiveMQ has an extensive management API that allows a user to modify a
 server configuration, create new resources (e.g. JMS queues and topics),
@@ -26,8 +25,7 @@ JMS messages.
 This choice depends on your requirements, your application settings and
 your environment to decide which way suits you best.
 
-The Management API
-==================
+## The Management API
 
 Regardless of the way you *invoke* management operations, the management
 API is the same.
@@ -53,13 +51,12 @@ messages, or JMS messages are used.
 > empty string means that the management operation will be performed on
 > *all messages*.
 
-Core Management API
--------------------
+### Core Management API
 
 ActiveMQ defines a core management API to manage core resources. For
 full details of the API please consult the javadoc. In summary:
 
-### Core Server Management
+#### Core Server Management
 
 -   Listing, creating, deploying and destroying queues
 
@@ -145,7 +142,7 @@ full details of the API please consult the javadoc. In summary:
     > receive some sort of error depending on which management service
     > you use to call it.
 
-### Core Address Management
+#### Core Address Management
 
 Core addresses can be managed using the `AddressControl` class (with the
 ObjectName `org.apache.activemq:module=Core,type=Address,name="<the
@@ -159,7 +156,7 @@ ObjectName `org.apache.activemq:module=Core,type=Address,name="<the
     `addRole()` or `removeRole()` methods. You can list all the roles
     associated to the queue with the `getRoles()` method
 
-### Core Queue Management
+#### Core Queue Management
 
 The bulk of the core management API deals with core queues. The
 `QueueControl` class defines the Core queue management operations (with
@@ -219,8 +216,8 @@ messages with a given property.)
 
     Message counters can be listed for a queue with the
     `listMessageCounter()` and `listMessageCounterHistory()` methods
-    (see ?). The message counters can also be reset for a single queue
-    using the `resetMessageCounter()` method.
+    (see Message Counters section). The message counters can also be 
+    reset for a single queue using the `resetMessageCounter()` method.
 
 -   Retrieving the queue attributes
 
@@ -236,7 +233,7 @@ messages with a given property.)
     When it's resume, it'll begin delivering the queued messages, if
     any.
 
-### Other Core Resources Management
+#### Other Core Resources Management
 
 ActiveMQ allows to start and stop its remote resources (acceptors,
 diverts, bridges, etc.) so that a server can be taken off line for a
@@ -252,7 +249,7 @@ transactions). These resources are:
                             name>"` or the resource name
     `core.acceptor.<the
                             address name>`). The acceptors parameters
-    can be retrieved using the `AcceptorControl` attributes (see ?)
+    can be retrieved using the `AcceptorControl` attributes (see [Understanding Acceptors](configuring-transports.md))
 
 -   Diverts
 
@@ -261,7 +258,7 @@ transactions). These resources are:
     `org.apache.activemq:module=Core,type=Divert,name=<the divert name>`
     or the resource name `core.divert.<the divert name>`). Diverts
     parameters can be retrieved using the `DivertControl` attributes
-    (see ?)
+    (see [Diverting and Splitting Message Flows)](diverts.md))
 
 -   Bridges
 
@@ -271,7 +268,7 @@ transactions). These resources are:
                             name>"` or the resource name
     `core.bridge.<the bridge
                             name>`). Bridges parameters can be retrieved
-    using the `BridgeControl` attributes (see ?)
+    using the `BridgeControl` attributes (see [Core bridges](core-bridges.md))
 
 -   Broadcast groups
 
@@ -281,7 +278,7 @@ transactions). These resources are:
                             name>"` or the resource name
     `core.broadcastgroup.<the broadcast group name>`). Broadcast groups
     parameters can be retrieved using the `BroadcastGroupControl`
-    attributes (see ?)
+    attributes (see [Clusters](clusters.md))
 
 -   Discovery groups
 
@@ -292,7 +289,7 @@ transactions). These resources are:
     `core.discovery.<the
                             discovery group name>`). Discovery groups
     parameters can be retrieved using the `DiscoveryGroupControl`
-    attributes (see ?)
+    attributes (see [Clusters](clusters.md))
 
 -   Cluster connections
 
@@ -302,15 +299,14 @@ transactions). These resources are:
                             connection name>"` or the resource name
     `core.clusterconnection.<the cluster connection name>`). Cluster
     connections parameters can be retrieved using the
-    `ClusterConnectionControl` attributes (see ?)
+    `ClusterConnectionControl` attributes (see [Clusters](clusters.md))
 
-JMS Management API
-------------------
+### JMS Management API
 
 ActiveMQ defines a JMS Management API to manage JMS *administrated
 objects* (i.e. JMS queues, topics and connection factories).
 
-### JMS Server Management
+#### JMS Server Management
 
 JMS Resources (connection factories and destinations) can be created
 using the `JMSServerControl` class (with the ObjectName
@@ -333,7 +329,8 @@ using the `JMSServerControl` class (with the ObjectName
     curly braces. For example `{key=10}, {key=20}`. In that case, the
     first `key` will be associated to the first transport configuration
     and the second `key` will be associated to the second transport
-    configuration (see ? for a list of the transport parameters)
+    configuration (see [Configuring Transports](configuring-transports.md) 
+    for a list of the transport parameters)
 
 -   Listing, creating, destroying queues
 
@@ -364,7 +361,7 @@ using the `JMSServerControl` class (with the ObjectName
     `listConnectionIDs()` and all the sessions for a given connection ID
     can be listed using `listSessions()`.
 
-### JMS ConnectionFactory Management
+#### JMS ConnectionFactory Management
 
 JMS Connection Factories can be managed using the
 `ConnectionFactoryControl` class (with the ObjectName
@@ -382,7 +379,7 @@ JMS Connection Factories can be managed using the
     from the connection factory will block or not when sending
     non-durable messages, etc.)
 
-### JMS Queue Management
+#### JMS Queue Management
 
 JMS queues can be managed using the `JMSQueueControl` class (with the
 ObjectName `org.apache.activemq:module=JMS,type=Queue,name="<the queue
@@ -439,7 +436,7 @@ operations on a core queue.*
 
     Message counters can be listed for a queue with the
     `listMessageCounter()` and `listMessageCounterHistory()` methods
-    (see ?)
+    (see Message Counters section)
 
 -   Retrieving the queue attributes
 
@@ -455,7 +452,7 @@ operations on a core queue.*
     will not deliver them. When resumed again it will deliver the
     enqueued messages, if any.
 
-### JMS Topic Management
+#### JMS Topic Management
 
 JMS Topics can be managed using the `TopicControl` class (with the
 ObjectName `org.apache.activemq:module=JMS,type=Topic,name="<the topic
@@ -484,8 +481,7 @@ ObjectName `org.apache.activemq:module=JMS,type=Topic,name="<the topic
     message selector to know the number of messages matching the
     selector)
 
-Using Management Via JMX
-========================
+## Using Management Via JMX
 
 ActiveMQ can be managed using
 [JMX](http://www.oracle.com/technetwork/java/javase/tech/javamanagement-140525.html).
@@ -510,8 +506,7 @@ Managing ActiveMQ using JMX is identical to management of any Java
 Applications using JMX. It can be done by reflection or by creating
 proxies of the MBeans.
 
-Configuring JMX
----------------
+### Configuring JMX
 
 By default, JMX is enabled to manage ActiveMQ. It can be disabled by
 setting `jmx-management-enabled` to `false` in
@@ -538,7 +533,7 @@ domain can be configured for each individual ActiveMQ server by setting
     <!-- use a specific JMX domain for ActiveMQ MBeans -->
     <jmx-domain>my.org.apache.activemq</jmx-domain>
 
-### MBeanServer configuration
+#### MBeanServer configuration
 
 When ActiveMQ is run in standalone, it uses the Java Virtual Machine's
 `Platform MBeanServer` to register its MBeans. This is configured in
@@ -559,14 +554,12 @@ own MBean Server so that it can be managed using AS 5's jmx-console:
                        factoryMethod="locateJBoss" />
     </bean>
 
-Example
--------
+### Example
 
 See ? for an example which shows how to use a remote connection to JMX
 and MBean proxies to manage ActiveMQ.
 
-Using Management Via Core API
-=============================
+## Using Management Via Core API
 
 The core management API in ActiveMQ is called by sending Core messages
 to a special address, the *management address*.
@@ -615,14 +608,16 @@ operations using Core messages:
 For example, to find out the number of messages in the core queue
 `exampleQueue`:
 
-    ClientSession session = ...
-    ClientRequestor requestor = new ClientRequestor(session, "jms.queue.activemq.management");
-    ClientMessage message = session.createMessage(false);
-    ManagementHelper.putAttribute(message, "core.queue.exampleQueue", "messageCount");
-    session.start();
-    ClientMessage reply = requestor.request(m);
-    int count = (Integer) ManagementHelper.getResult(reply);
-    System.out.println("There are " + count + " messages in exampleQueue");
+``` java
+ClientSession session = ...
+ClientRequestor requestor = new ClientRequestor(session, "jms.queue.activemq.management");
+ClientMessage message = session.createMessage(false);
+ManagementHelper.putAttribute(message, "core.queue.exampleQueue", "messageCount");
+session.start();
+ClientMessage reply = requestor.request(m);
+int count = (Integer) ManagementHelper.getResult(reply);
+System.out.println("There are " + count + " messages in exampleQueue");
+```
 
 Management operation name and parameters must conform to the Java
 interfaces defined in the `management` packages.
@@ -633,8 +628,7 @@ straightforward (`core.queue.exampleQueue` for the Core Queue
 `exampleQueue`, `jms.topic.exampleTopic` for the JMS Topic
 `exampleTopic`, etc.).
 
-Configuring Core Management
----------------------------
+### Configuring Core Management
 
 The management address to send management messages is configured in
 `activemq-configuration.xml`:
@@ -655,8 +649,7 @@ configured in activemq-configuration.xml:
        <permission type="manage" roles="admin" />
     </security-setting>
 
-Using Management Via JMS
-========================
+## Using Management Via JMS
 
 Using JMS messages to manage ActiveMQ is very similar to using core API.
 
@@ -688,32 +681,29 @@ API instead:
 
 For example, to know the number of messages in the JMS queue
 `exampleQueue`:
-
-    Queue managementQueue = ActiveMQJMSClient.createQueue("activemq.management");
-
-    QueueSession session = ...
-    QueueRequestor requestor = new QueueRequestor(session, managementQueue);
-    connection.start();
-    Message message = session.createMessage();
-    JMSManagementHelper.putAttribute(message, "jms.queue.exampleQueue", "messageCount");
-    Message reply = requestor.request(message);
-    int count = (Integer)JMSManagementHelper.getResult(reply);
-    System.out.println("There are " + count + " messages in exampleQueue");
-
-Configuring JMS Management
---------------------------
+``` java
+Queue managementQueue = ActiveMQJMSClient.createQueue("activemq.management");
+
+QueueSession session = ...
+QueueRequestor requestor = new QueueRequestor(session, managementQueue);
+connection.start();
+Message message = session.createMessage();
+JMSManagementHelper.putAttribute(message, "jms.queue.exampleQueue", "messageCount");
+Message reply = requestor.request(message);
+int count = (Integer)JMSManagementHelper.getResult(reply);
+System.out.println("There are " + count + " messages in exampleQueue");
+```
+### Configuring JMS Management
 
 Whether JMS or the core API is used for management, the configuration
-steps are the same (see ?).
+steps are the same (see Configuring Core Management section).
 
-Example
--------
+### Example
 
 See ? for an example which shows how to use JMS messages to manage
 ActiveMQ server.
 
-Management Notifications
-========================
+## Management Notifications
 
 ActiveMQ emits *notifications* to inform listeners of potentially
 interesting events (creation of new resources, security violation,
@@ -727,10 +717,9 @@ These notifications can be received by 3 different ways:
 
 -   JMS messages
 
-JMX Notifications
------------------
+### JMX Notifications
 
-If JMX is enabled (see ?), JMX notifications can be received by
+If JMX is enabled (see Configuring JMX section), JMX notifications can be received by
 subscribing to 2 MBeans:
 
 -   `org.apache.activemq:module=Core,type=Server` for notifications on
@@ -739,8 +728,7 @@ subscribing to 2 MBeans:
 -   `org.apache.activemq:module=JMS,type=Server` for notifications on
     *JMS* resources
 
-Core Messages Notifications
----------------------------
+### Core Messages Notifications
 
 ActiveMQ defines a special *management notification address*. Core
 queues can be bound to this address so that clients will receive
@@ -758,7 +746,7 @@ Since notifications are regular core messages, it is possible to use
 message selectors to filter out notifications and receives only a subset
 of all the notifications emitted by the server.
 
-### Configuring The Core Management Notification Address
+#### Configuring The Core Management Notification Address
 
 The management notification address to receive management notifications
 is configured in `activemq-configuration.xml`:
@@ -767,8 +755,7 @@ is configured in `activemq-configuration.xml`:
 
 By default, the address is `activemq.notifications`.
 
-JMS Messages Notifications
---------------------------
+### JMS Messages Notifications
 
 ActiveMQ's notifications can also be received using JMS messages.
 
@@ -786,40 +773,39 @@ change the server's management notification address to start with
 Once the notification topic is created, you can receive messages from it
 or set a `MessageListener`:
 
-    Topic notificationsTopic = ActiveMQJMSClient.createTopic("notificationsTopic");
-
-    Session session = ...
-    MessageConsumer notificationConsumer = session.createConsumer(notificationsTopic);
-    notificationConsumer.setMessageListener(new MessageListener()
-    {
-       public void onMessage(Message notif)
-       {
-          System.out.println("------------------------");
-          System.out.println("Received notification:");
-          try
-          {
-             Enumeration propertyNames = notif.getPropertyNames();
-             while (propertyNames.hasMoreElements())
-             {
-                String propertyName = (String)propertyNames.nextElement();
-                System.out.format("  %s: %s\n", propertyName, notif.getObjectProperty(propertyName));
-             }
-          }
-          catch (JMSException e)
-          {
-          }
-          System.out.println("------------------------");
-       }
-    });
-
-Example
--------
+``` java
+Topic notificationsTopic = ActiveMQJMSClient.createTopic("notificationsTopic");
+
+Session session = ...
+MessageConsumer notificationConsumer = session.createConsumer(notificationsTopic);
+notificationConsumer.setMessageListener(new MessageListener()
+{
+   public void onMessage(Message notif)
+   {
+      System.out.println("------------------------");
+      System.out.println("Received notification:");
+      try
+      {
+         Enumeration propertyNames = notif.getPropertyNames();
+         while (propertyNames.hasMoreElements())
+         {
+            String propertyName = (String)propertyNames.nextElement();
+            System.out.format("  %s: %s\n", propertyName, notif.getObjectProperty(propertyName));
+         }
+      }
+      catch (JMSException e)
+      {
+      }
+      System.out.println("------------------------");
+   }
+});
+```
+### Example
 
 See ? for an example which shows how to use a JMS `MessageListener` to
 receive management notifications from ActiveMQ server.
 
-Notification Types and Headers
-------------------------------
+### Notification Types and Headers
 
 Below is a list of all the different kinds of notifications as well as
 which headers are on the messages. Every notification has a
@@ -914,8 +900,7 @@ header. The timestamp is the un-formatted result of a call to
     `_HQ_Address`, `_HQ_ConsumerCount`, `_HQ_RemoteAddress`,
     `_HQ_ConnectionName`, `_HQ_ConsumerName`, `_HQ_SessionName`
 
-Message Counters
-================
+## Message Counters
 
 Message counters can be used to obtain information on queues *over time*
 as ActiveMQ keeps a history on queue metrics.
@@ -966,8 +951,7 @@ For example, to know specifically how many messages were *consumed* from
 the queue since the last update simply subtract the `messageCountDelta`
 from `countDelta`.
 
-Configuring Message Counters
-----------------------------
+### Configuring Message Counters
 
 By default, message counters are disabled as it might have a small
 negative effect on memory.
@@ -991,28 +975,28 @@ configured to suit your messaging use case in
 Message counters can be retrieved using the Management API. For example,
 to retrieve message counters on a JMS Queue using JMX:
 
-    // retrieve a connection to ActiveMQ's MBeanServer
-    MBeanServerConnection mbsc = ...
-    JMSQueueControlMBean queueControl = (JMSQueueControl)MBeanServerInvocationHandler.newProxyInstance(mbsc,
-       on,
-       JMSQueueControl.class,
-       false);
-    // message counters are retrieved as a JSON String                                                                                                      
-    String counters = queueControl.listMessageCounter();
-    // use the MessageCounterInfo helper class to manipulate message counters more easily
-    MessageCounterInfo messageCounter = MessageCounterInfo.fromJSON(counters);         
-    System.out.format("%s message(s) in the queue (since last sample: %s)\n",
-    messageCounter.getMessageCount(),
-    messageCounter.getMessageCountDelta());
-
-Example
--------
+``` java
+// retrieve a connection to ActiveMQ's MBeanServer
+MBeanServerConnection mbsc = ...
+JMSQueueControlMBean queueControl = (JMSQueueControl)MBeanServerInvocationHandler.newProxyInstance(mbsc,
+   on,
+   JMSQueueControl.class,
+   false);
+// message counters are retrieved as a JSON String                                                                                                      
+String counters = queueControl.listMessageCounter();
+// use the MessageCounterInfo helper class to manipulate message counters more easily
+MessageCounterInfo messageCounter = MessageCounterInfo.fromJSON(counters);         
+System.out.format("%s message(s) in the queue (since last sample: %s)\n",
+messageCounter.getMessageCount(),
+messageCounter.getMessageCountDelta());
+```
+
+### Example
 
 See ? for an example which shows how to use message counters to retrieve
 information on a JMS `Queue`.
 
-Administering ActiveMQ Resources Using The JBoss AS Admin Console
-=================================================================
+## Administering ActiveMQ Resources Using The JBoss AS Admin Console
 
 Its possible to create and configure ActiveMQ resources via the admin
 console within the JBoss Application Server.
@@ -1027,8 +1011,7 @@ Factories, clicking on each node will reveal which resources are
 currently available. The following sections explain how to create and
 configure each resource in turn.
 
-JMS Queues
-----------
+### JMS Queues
 
 To create a new JMS Queue click on the JMS Queues item to reveal the
 available queues. On the right hand panel you will see an add a new
@@ -1055,7 +1038,7 @@ configuration options, apart from security roles, relate to address
 settings for a particular address. The default address settings are
 picked up from the servers configuration, if you change any of these
 settings or create a queue via the console a new Address Settings entry
-will be added. For a full explanation on Address Settings see ?
+will be added. For a full explanation on Address Settings see [Configuring Queues Via Address Settings](queue-attributes.md)
 
 To delete a queue simply click on the delete button beside the queue
 name in the main JMS Queues screen. This will also delete any address
@@ -1065,7 +1048,7 @@ The last part of the configuration options are security roles. If non
 are provided on creation then the servers default security settings will
 be shown. If these are changed or updated then new security settings are
 created for the address of this queue. For more information on security
-setting see ?
+setting see [Security](security.md)
 
 It is also possible via the metrics tab to view statistics for this
 queue. This will show statistics such as message count, consumer count
@@ -1079,15 +1062,13 @@ you to a screen where you can parameters for the operation can be set.
 Once set clicking the ok button will invoke the operation, results
 appear at the bottom of the screen.
 
-JMS Topics
-----------
+### JMS Topics
 
 Creating and configuring JMS Topics is almost identical to creating
 queues. The only difference is that the configuration will be applied to
 the queue representing a subscription.
 
-JMS Connection Factories
-------------------------
+### JMS Connection Factories
 
 The format for creating connection factories is the same as for JMS
 Queues and topics apart from the configuration being different. For as

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/b4144013/docs/user-manual/en/message-expiry.md
----------------------------------------------------------------------
diff --git a/docs/user-manual/en/message-expiry.md b/docs/user-manual/en/message-expiry.md
index a42939c..3d75302 100644
--- a/docs/user-manual/en/message-expiry.md
+++ b/docs/user-manual/en/message-expiry.md
@@ -1,5 +1,4 @@
-Message Expiry
-==============
+# Message Expiry
 
 Messages can be set with an optional *time to live* when sending them.
 
@@ -12,8 +11,7 @@ messages are expired, they are removed from the queue and sent to the
 expiry address. Many different queues can be bound to an expiry address.
 These *expired* messages can later be consumed for further inspection.
 
-Message Expiry
-==============
+## Message Expiry
 
 Using ActiveMQ Core API, you can set an expiration time directly on the
 message:
@@ -44,8 +42,7 @@ following properties:
     a Long property containing the *actual expiration time* of the
     expired message
 
-Configuring Expiry Addresses
-============================
+## Configuring Expiry Addresses
 
 Expiry address are defined in the address-setting configuration:
 
@@ -56,10 +53,9 @@ Expiry address are defined in the address-setting configuration:
 
 If messages are expired and no expiry address is specified, messages are
 simply removed from the queue and dropped. Address wildcards can be used
-to configure expiry address for a set of addresses (see ?).
+to configure expiry address for a set of addresses (see [Understanding the HornetQ Wildcard Syntax](wildcard-syntax.md)).
 
-Configuring The Expiry Reaper Thread
-====================================
+## Configuring The Expiry Reaper Thread
 
 A reaper thread will periodically inspect the queues to check if
 messages have expired.
@@ -78,8 +74,7 @@ The reaper thread can be configured with the following properties in
     The reaper thread priority (it must be between 0 and 9, 9 being the
     highest priority, default is 3)
 
-Example
-=======
+## Example
 
 See ? for an example which shows how message expiry is configured and
 used with JMS.

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/b4144013/docs/user-manual/en/message-grouping.md
----------------------------------------------------------------------
diff --git a/docs/user-manual/en/message-grouping.md b/docs/user-manual/en/message-grouping.md
index 2a0da9e..7b3d0bd 100644
--- a/docs/user-manual/en/message-grouping.md
+++ b/docs/user-manual/en/message-grouping.md
@@ -1,5 +1,4 @@
-Message Grouping
-================
+# Message Grouping
 
 Message groups are sets of messages that have the following
 characteristics:
@@ -21,7 +20,7 @@ An example might be orders for a certain stock. You may want orders for
 any particular stock to be processed serially by the same consumer. To
 do this you can create a pool of consumers (perhaps one for each stock,
 but less will work too), then set the stock name as the value of the
-\_HQ\_GROUP\_ID property.
+_HQ_GROUP_ID property.
 
 This will ensure that all messages for a particular stock will always be
 processed by the same consumer.
@@ -41,16 +40,14 @@ processed by the same consumer.
 > and consider whether or not you should isolate your grouped messages
 > from your non-grouped messages.
 
-Using Core API
-==============
+## Using Core API
 
 The property name used to identify the message group is `"_HQ_GROUP_ID"`
 (or the constant `MessageImpl.HDR_GROUP_ID`). Alternatively, you can set
 `autogroup` to true on the `SessionFactory` which will pick a random
 unique id.
 
-Using JMS
-=========
+## Using JMS
 
 The property name used to identify the message group is `JMSXGroupID`.
 
@@ -85,20 +82,17 @@ which is available in the context by default:
     java.naming.provider.url=tcp://localhost:5445
     connection.ConnectionFactory.groupID=Group-0
 
-Example
-=======
+## Example
 
 See ? for an example which shows how message groups are configured and
 used with JMS.
 
-Example
-=======
+## Example
 
 See ? for an example which shows how message groups are configured via a
 connection factory.
 
-Clustered Grouping
-==================
+## Clustered Grouping
 
 Using message groups in a cluster is a bit more complex. This is because
 messages with a particular group id can arrive on any node so each node
@@ -158,8 +152,7 @@ exception thrown. To avoid this happening Local Handlers can be
 replicated on another backup node. Simple create your back up node and
 configure it with the same Local handler.
 
-Clustered Grouping Best Practices
----------------------------------
+## Clustered Grouping Best Practices
 
 Some best practices should be followed when using clustered grouping:
 
@@ -191,8 +184,7 @@ Some best practices should be followed when using clustered grouping:
     last-time-use value should be updated with a round trip for a
     request to the group between the nodes.
 
-Clustered Grouping Example
---------------------------
+## Clustered Grouping Example
 
 See ? for an example of how to configure message groups with a ActiveMQ
 cluster

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/b4144013/docs/user-manual/en/messaging-concepts.md
----------------------------------------------------------------------
diff --git a/docs/user-manual/en/messaging-concepts.md b/docs/user-manual/en/messaging-concepts.md
index 284473b..f33d54e 100644
--- a/docs/user-manual/en/messaging-concepts.md
+++ b/docs/user-manual/en/messaging-concepts.md
@@ -1,5 +1,4 @@
-Messaging Concepts
-==================
+# Messaging Concepts
 
 ActiveMQ is an asynchronous messaging system, an example of [Message
 Oriented
@@ -13,8 +12,7 @@ about in the messaging world.
 If you're already familiar with what a messaging system is and what it's
 capable of, then you can skip this chapter.
 
-Messaging Concepts
-==================
+## Messaging Concepts
 
 Messaging systems allow you to loosely couple heterogeneous systems
 together, whilst typically providing reliability, transactions and many
@@ -51,8 +49,7 @@ grow and adapt more easily. It also allows more flexibility to add new
 systems or retire old ones since they don't have brittle dependencies on
 each other.
 
-Messaging styles
-================
+## Messaging styles
 
 Messaging systems normally support two main styles of asynchronous
 messaging: [message queue](http://en.wikipedia.org/wiki/Message_queue)
@@ -60,8 +57,7 @@ messaging (also known as *point-to-point messaging*) and [publish
 subscribe](http://en.wikipedia.org/wiki/Publish_subscribe) messaging.
 We'll summarise them briefly here:
 
-The Message Queue Pattern
--------------------------
+### The Message Queue Pattern
 
 With this type of messaging you send a message to a queue. The message
 is then typically persisted to provide a guarantee of delivery, then
@@ -101,8 +97,7 @@ forgotten about. Often the send to the warehouse system, update in
 database and acknowledgement will be completed in a single transaction
 to ensure [ACID](http://en.wikipedia.org/wiki/ACID) properties.
 
-The Publish-Subscribe Pattern
------------------------------
+### The Publish-Subscribe Pattern
 
 With publish-subscribe messaging many senders can send messages to an
 entity on the server, often called a *topic* (e.g. in the JMS world).
@@ -126,8 +121,7 @@ are interested in receiving news items - each one creates a subscription
 and the messaging system ensures that a copy of each news message is
 delivered to each subscription.
 
-Delivery guarantees
-===================
+## Delivery guarantees
 
 A key feature of most messaging systems is *reliable messaging*. With
 reliable messaging the server gives a guarantee that the message will be
@@ -143,16 +137,14 @@ which are quickly superseded by the next update on the same stock. The
 messaging system allows you to configure which delivery guarantees you
 require.
 
-Transactions
-============
+## Transactions
 
 Messaging systems typically support the sending and acknowledgement of
 multiple messages in a single local transaction. ActiveMQ also supports
 the sending and acknowledgement of message as part of a large global
 transaction - using the Java mapping of XA: JTA.
 
-Durability
-==========
+## Durability
 
 Messages are either durable or non durable. Durable messages will be
 persisted in permanent storage and will survive server failure or
@@ -162,8 +154,7 @@ they cannot be lost. An example of a non durable message might be a
 stock price update which is transitory and doesn't need to survive a
 restart.
 
-Messaging APIs and protocols
-============================
+## Messaging APIs and protocols
 
 How do client applications interact with messaging systems in order to
 send and consume messages?
@@ -176,8 +167,7 @@ and some emerging standards in this space.
 
 Let's take a brief look at these:
 
-Java Message Service (JMS)
---------------------------
+### Java Message Service (JMS)
 
 [JMS](http://en.wikipedia.org/wiki/Java_Message_Service) is part of
 Sun's JEE specification. It's a Java API that encapsulates both message
@@ -196,8 +186,7 @@ internal wire protocol.
 
 ActiveMQ provides a fully compliant JMS 1.1 and JMS 2.0 API.
 
-System specific APIs
---------------------
+### System specific APIs
 
 Many systems provide their own programmatic API for which to interact
 with the messaging system. The advantage of this it allows the full set
@@ -209,8 +198,7 @@ ActiveMQ provides its own core client API for clients to use if they
 wish to have access to functionality over and above that accessible via
 the JMS API.
 
-RESTful API
------------
+### RESTful API
 
 [REST](http://en.wikipedia.org/wiki/Representational_State_Transfer)
 approaches to messaging are showing a lot interest recently.
@@ -228,10 +216,9 @@ use HTTP as their underlying protocol.
 The advantage of a REST approach with HTTP is in its simplicity and the
 fact the internet is already tuned to deal with HTTP optimally.
 
-Please see ? for using ActiveMQ's RESTful interface.
+Please see [Rest Interface](rest.md) for using ActiveMQ's RESTful interface.
 
-STOMP
------
+### STOMP
 
 [Stomp](http://stomp.github.io/) is a very simple text protocol for
 interoperating with messaging systems. It defines a wire format, so
@@ -239,10 +226,9 @@ theoretically any Stomp client can work with any messaging system that
 supports Stomp. Stomp clients are available in many different
 programming languages.
 
-Please see ? for using STOMP with ActiveMQ.
+Please see [Stomp](interoperability.md) for using STOMP with ActiveMQ.
 
-AMQP
-----
+### AMQP
 
 [AMQP](http://en.wikipedia.org/wiki/AMQP) is a specification for
 interoperable messaging. It also defines a wire format, so any AMQP
@@ -254,8 +240,7 @@ ActiveMQ implements the [AMQP
 specification. Any client that supports the 1.0 specification will be
 able to interact with ActiveMQ.
 
-High Availability
-=================
+## High Availability
 
 High Availability (HA) means that the system should remain operational
 after failure of one or more of the servers. The degree of support for
@@ -265,10 +250,9 @@ ActiveMQ provides automatic failover where your sessions are
 automatically reconnected to the backup server on event of live server
 failure.
 
-For more information on HA, please see ?.
+For more information on HA, please see [High Availability and Failover](ha.md).
 
-Clusters
-========
+## Clusters
 
 Many messaging systems allow you to create groups of messaging servers
 called *clusters*. Clusters allow the load of sending and consuming
@@ -287,10 +271,9 @@ whether they are ready for messages.
 ActiveMQ also has the ability to automatically redistribute messages
 between nodes of a cluster to prevent starvation on any particular node.
 
-For full details on clustering, please see ?.
+For full details on clustering, please see [Clusters](clusters.md).
 
-Bridges and routing
-===================
+## Bridges and routing
 
 Some messaging systems allow isolated clusters or single nodes to be
 bridged together, typically over unreliable connections like a wide area
@@ -309,4 +292,4 @@ side configuration. This allows complex routing networks to be set up
 forwarding or copying messages from one destination to another, forming
 a global network of interconnected brokers.
 
-For more information please see ? and ?.
+For more information please see [Core Bridges](core-bridges.md) and [Diverting and Splitting Message Flows](diverts.md).

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/b4144013/docs/user-manual/en/paging.md
----------------------------------------------------------------------
diff --git a/docs/user-manual/en/paging.md b/docs/user-manual/en/paging.md
index 392c9ae..491b09f 100644
--- a/docs/user-manual/en/paging.md
+++ b/docs/user-manual/en/paging.md
@@ -1,5 +1,4 @@
-Paging
-======
+# Paging
 
 ActiveMQ transparently supports huge queues containing millions of
 messages while the server is running with limited memory.
@@ -15,8 +14,7 @@ messages in memory for an address exceeds a configured maximum size.
 By default, ActiveMQ does not page messages - this must be explicitly
 configured to activate it.
 
-Page Files
-==========
+## Page Files
 
 Messages are stored per address on the file system. Each address has an
 individual folder where messages are stored in multiple files (page
@@ -30,8 +28,7 @@ Browsers will read through the page-cursor system.
 Consumers with selectors will also navigate through the page-files and
 it will ignore messages that don't match the criteria.
 
-Configuration
-=============
+## Configuration
 
 You can configure the location of the paging folder
 
@@ -51,8 +48,7 @@ Global paging parameters are specified on the main configuration file
 
   : Paging Configuration Parameters
 
-Paging Mode
-===========
+## Paging Mode
 
 As soon as messages delivered to an address exceed the configured size,
 that address alone goes into page mode.
@@ -65,8 +61,7 @@ that address alone goes into page mode.
 > total overall size of all matching addresses is limited to
 > max-size-bytes.
 
-Configuration
--------------
+## Configuration
 
 Configuration is done at the address settings, done at the main
 configuration file (`activemq-configuration.xml`).
@@ -90,8 +85,7 @@ This is the list of available parameters on the address settings.
 
   : Paging Address Settings
 
-Dropping messages
-=================
+## Dropping messages
 
 Instead of paging messages when the max size is reached, an address can
 also be configured to just drop messages when the address is full.
@@ -99,8 +93,7 @@ also be configured to just drop messages when the address is full.
 To do this just set the `address-full-policy` to `DROP` in the address
 settings
 
-Dropping messages and throwing an exception to producers
-========================================================
+## Dropping messages and throwing an exception to producers
 
 Instead of paging messages when the max size is reached, an address can
 also be configured to drop messages and also throw an exception on the
@@ -109,8 +102,7 @@ client-side when the address is full.
 To do this just set the `address-full-policy` to `FAIL` in the address
 settings
 
-Blocking producers
-==================
+## Blocking producers
 
 Instead of paging messages when the max size is reached, an address can
 also be configured to block producers from sending further messages when
@@ -126,8 +118,7 @@ settings
 In the default configuration, all addresses are configured to block
 producers after 10 MiB of data are in the address.
 
-Caution with Addresses with Multiple Queues
-===========================================
+## Caution with Addresses with Multiple Queues
 
 When a message is routed to an address that has multiple queues bound to
 it, e.g. a JMS subscription in a Topic, there is only 1 copy of the
@@ -154,7 +145,6 @@ In this example all the other 9 queues will be consuming messages from
 the page system. This may cause performance issues if this is an
 undesirable state.
 
-Example
-=======
+## Example
 
 See ? for an example which shows how to use paging with ActiveMQ.

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/b4144013/docs/user-manual/en/perf-tuning.md
----------------------------------------------------------------------
diff --git a/docs/user-manual/en/perf-tuning.md b/docs/user-manual/en/perf-tuning.md
index f1410af..919f936 100644
--- a/docs/user-manual/en/perf-tuning.md
+++ b/docs/user-manual/en/perf-tuning.md
@@ -1,11 +1,9 @@
-Performance Tuning
-==================
+# Performance Tuning
 
 In this chapter we'll discuss how to tune ActiveMQ for optimum
 performance.
 
-Tuning persistence
-==================
+## Tuning persistence
 
 -   Put the message journal on its own physical volume. If the disk is
     shared with other processes e.g. transaction co-ordinator, database
@@ -38,8 +36,7 @@ Tuning persistence
     performance by increasing `journal-max-io`. DO NOT change this
     parameter if you are running NIO.
 
-Tuning JMS
-==========
+## Tuning JMS
 
 There are a few areas where some tweaks can be done if you are using the
 JMS API
@@ -78,8 +75,7 @@ JMS API
     ActiveMQ will only require a network round trip on the commit, not
     on every send or acknowledgement.
 
-Other Tunings
-=============
+## Other Tunings
 
 There are various other places in ActiveMQ where we can perform some
 tuning:
@@ -89,12 +85,13 @@ tuning:
     reached the server by the time the call to send() returns, don't set
     durable messages to be sent blocking, instead use asynchronous send
     acknowledgements to get your acknowledgements of send back in a
-    separate stream, see ? for more information on this.
+    separate stream, see [Guarantees of sends and commits](send-guarantees.md) 
+    for more information on this.
 
 -   Use pre-acknowledge mode. With pre-acknowledge mode, messages are
     acknowledged `before` they are sent to the client. This reduces the
     amount of acknowledgement traffic on the wire. For more information
-    on this, see ?.
+    on this, see [Extra Acknowledge Modes](pre-acknowledge.md).
 
 -   Disable security. You may get a small performance boost by disabling
     security by setting the `security-enabled` parameter to `false` in
@@ -107,20 +104,22 @@ tuning:
 -   Sync transactions lazily. Setting `journal-sync-transactional` to
     `false` in `activemq-configuration.xml` can give you better
     transactional persistent performance at the expense of some
-    possibility of loss of transactions on failure. See ? for more
-    information.
+    possibility of loss of transactions on failure. See  [Guarantees of sends and commits](send-guarantees.md) 
+    for more information.
 
 -   Sync non transactional lazily. Setting
     `journal-sync-non-transactional` to `false` in
     `activemq-configuration.xml` can give you better non-transactional
     persistent performance at the expense of some possibility of loss of
-    durable messages on failure. See ? for more information.
+    durable messages on failure. See  [Guarantees of sends and commits](send-guarantees.md)
+    for more information.
 
 -   Send messages non blocking. Setting `block-on-durable-send` and
     `block-on-non-durable-send` to `false` in `activemq-jms.xml` (if
     you're using JMS and JNDI) or directly on the ServerLocator. This
     means you don't have to wait a whole network round trip for every
-    message sent. See ? for more information.
+    message sent. See  [Guarantees of sends and commits](send-guarantees.md) 
+    for more information.
 
 -   If you have very fast consumers, you can increase
     consumer-window-size. This effectively disables consumer flow
@@ -128,7 +127,7 @@ tuning:
 
 -   Socket NIO vs Socket Old IO. By default ActiveMQ uses old (blocking)
     on the server and the client side (see the chapter on configuring
-    transports for more information ?). NIO is much more scalable but
+    transports for more information [Configuring the Transport](configuring-transports.md). NIO is much more scalable but
     can give you some latency hit compared to old blocking IO. If you
     need to be able to service many thousands of connections on the
     server, then you should make sure you're using NIO on the server.
@@ -145,12 +144,12 @@ tuning:
     the wire, so if you re-use `SimpleString` instances between calls
     then you can avoid some unnecessary copying.
 
-Tuning Transport Settings
-=========================
+## Tuning Transport Settings
 
 -   TCP buffer sizes. If you have a fast network and fast machines you
     may get a performance boost by increasing the TCP send and receive
-    buffer sizes. See the ? for more information on this.
+    buffer sizes. See the [Configuring the Transport](configuring-transports.md) 
+    for more information on this.
 
     > **Note**
     >
@@ -180,10 +179,10 @@ Tuning Transport Settings
     `activemq-configuration.xml` and JMS connection factory
     (`ThroughputConnectionFactory`) in `activemq-jms.xml`which can be
     used to give the very best throughput, especially for small
-    messages. See the ? for more information on this.
+    messages. See the [Configuring the Transport](configuring-transports.md) 
+    for more information on this.
 
-Tuning the VM
-=============
+## Tuning the VM
 
 We highly recommend you use the latest Java JVM for the best
 performance. We test internally using the Sun JVM, so some of these
@@ -194,7 +193,7 @@ tunings won't apply to JDKs from other providers (e.g. IBM or JRockit)
     `-XX:+UseParallelOldGC` on Sun JDKs.
 
 -   Memory settings. Give as much memory as you can to the server.
-    ActiveMQ can run in low memory by using paging (described in ?) but
+    ActiveMQ can run in low memory by using paging (described in [Paging](paging.md)) but
     if it can run with all queues in RAM this will improve performance.
     The amount of memory you require will depend on the size and number
     of your queues and the size and number of your messages. Use the JVM
@@ -210,8 +209,7 @@ tunings won't apply to JDKs from other providers (e.g. IBM or JRockit)
     some mileage with the other tuning parameters depending on your OS
     platform and application usage patterns.
 
-Avoiding Anti-Patterns
-======================
+## Avoiding Anti-Patterns
 
 -   Re-use connections / sessions / consumers / producers. Probably the
     most common messaging anti-pattern we see is users who create a new

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/b4144013/docs/user-manual/en/persistence.md
----------------------------------------------------------------------
diff --git a/docs/user-manual/en/persistence.md b/docs/user-manual/en/persistence.md
index e2c6f58..b02f968 100644
--- a/docs/user-manual/en/persistence.md
+++ b/docs/user-manual/en/persistence.md
@@ -1,5 +1,4 @@
-Persistence
-===========
+# Persistence
 
 In this chapter we will describe how persistence works with ActiveMQ and
 how to configure it.
@@ -63,14 +62,14 @@ implementations. ActiveMQ ships with two implementations:
 
     The AIO journal is only available when running Linux kernel 2.6 or
     later and after having installed libaio (if it's not already
-    installed). For instructions on how to install libaio please see ?.
+    installed). For instructions on how to install libaio please see Installing AIO section.
 
     Also, please note that AIO will only work with the following file
     systems: ext2, ext3, ext4, jfs, xfs. With other file systems, e.g.
     NFS it may appear to work, but it will fall back to a slower
     synchronous behaviour. Don't put the journal on a NFS share!
 
-    For more information on libaio please see ?.
+    For more information on libaio please see [lib AIO](libaio.md).
 
     libaio is part of the kernel project.
 
@@ -118,16 +117,16 @@ The standard ActiveMQ core server uses two instances of the journal:
     (configurable), and it is located at the journal folder.
 
 For large messages, ActiveMQ persists them outside the message journal.
-This is discussed in ?.
+This is discussed in [Large Messages](large-messages.md).
 
 ActiveMQ can also be configured to page messages to disk in low memory
-situations. This is discussed in ?.
+situations. This is discussed in [Paging](paging.md).
 
 If no persistence is required at all, ActiveMQ can also be configured
-not to persist any data at all to storage as discussed in ?.
+not to persist any data at all to storage as discussed in the Configuring 
+HornetQ for Zero Persistence section.
 
-Configuring the bindings journal
-================================
+## Configuring the bindings journal
 
 The bindings journal is configured using the following attributes in
 `activemq-configuration.xml`
@@ -144,13 +143,11 @@ The bindings journal is configured using the following attributes in
     `bindings-directory` if it does not already exist. The default value
     is `true`
 
-Configuring the jms journal
-===========================
+## Configuring the jms journal
 
 The jms config shares its configuration with the bindings journal.
 
-Configuring the message journal
-===============================
+## Configuring the message journal
 
 The message journal is configured using the following attributes in
 `activemq-configuration.xml`
@@ -283,8 +280,7 @@ The message journal is configured using the following attributes in
 
     The default for this parameter is `30`
 
-An important note on disabling disk write cache.
-================================================
+## An important note on disabling disk write cache.
 
 > **Warning**
 >
@@ -323,8 +319,7 @@ An important note on disabling disk write cache.
 > On Windows you can check / change the setting by right clicking on the
 > disk and clicking properties.
 
-Installing AIO
-==============
+## Installing AIO
 
 The Java NIO journal gives great performance, but If you are running
 ActiveMQ using Linux Kernel 2.6 or later, we highly recommend you use
@@ -344,8 +339,7 @@ Using aptitude, (e.g. on Ubuntu or Debian system):
 
     apt-get install libaio
 
-Configuring ActiveMQ for Zero Persistence
-=========================================
+## Configuring ActiveMQ for Zero Persistence
 
 In some situations, zero persistence is sometimes required for a
 messaging system. Configuring ActiveMQ to perform zero persistence is
@@ -356,8 +350,7 @@ Please note that if you set this parameter to false, then *zero*
 persistence will occur. That means no bindings data, message data, large
 message data, duplicate id caches or paging data will be persisted.
 
-Import/Export the Journal Data
-==============================
+## Import/Export the Journal Data
 
 You may want to inspect the existent records on each one of the journals
 used by ActiveMQ, and you can use the export/import tool for that
@@ -379,13 +372,12 @@ require netty.jar):
     folder. Example: ./activemq/data/journal
 
 -   JournalPrefix: Use the prefix for your selected journal, as
-    discussed [here](#persistence.journallist)
+    discussed above
 
 -   FileExtension: Use the extension for your selected journal, as
-    discussed [here](#persistence.journallist)
+    discussed above
 
--   FileSize: Use the size for your selected journal, as discussed
-    [here](#persistence.journallist)
+-   FileSize: Use the size for your selected journal, as discussed above
 
 -   FileOutput: text file that will contain the exported data
 

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/b4144013/docs/user-manual/en/pre-acknowledge.md
----------------------------------------------------------------------
diff --git a/docs/user-manual/en/pre-acknowledge.md b/docs/user-manual/en/pre-acknowledge.md
index 1bec75e..4a78e70 100644
--- a/docs/user-manual/en/pre-acknowledge.md
+++ b/docs/user-manual/en/pre-acknowledge.md
@@ -1,5 +1,4 @@
-Extra Acknowledge Modes
-=======================
+# Extra Acknowledge Modes
 
 JMS specifies 3 acknowledgement modes:
 
@@ -41,8 +40,7 @@ arrive soon, overriding the previous price.
 > the transaction. This may be stating the obvious but we like to be
 > clear on these things to avoid confusion!
 
-Using PRE\_ACKNOWLEDGE
-======================
+## Using PRE_ACKNOWLEDGE
 
 This can be configured in a client's JNDI context environment, e.g.
 `jndi.properties`, like this:
@@ -63,8 +61,7 @@ Or you can set pre-acknowledge directly on the
 To use pre-acknowledgement mode using the core API you can set it
 directly on the `ClientSessionFactory` instance using the setter method.
 
-Individual Acknowledge
-======================
+## Individual Acknowledge
 
 A valid use-case for individual acknowledgement would be when you need
 to have your own scheduling and you don't know when your message
@@ -85,8 +82,7 @@ the exception the message is individually acked.
 > adapter). this is because you have to finish the process of your
 > message inside the MDB.
 
-Example
-=======
+## Example
 
 See ? for an example which shows how to use pre-acknowledgement mode
 with JMS.

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/b4144013/docs/user-manual/en/preface.md
----------------------------------------------------------------------
diff --git a/docs/user-manual/en/preface.md b/docs/user-manual/en/preface.md
index 8cc9717..27f4b9b 100644
--- a/docs/user-manual/en/preface.md
+++ b/docs/user-manual/en/preface.md
@@ -1,5 +1,4 @@
-Preface
-=======
+# Preface
 
 What is ActiveMQ?
 
@@ -8,11 +7,11 @@ What is ActiveMQ?
     system.
 
 -   ActiveMQ is an example of Message Oriented Middleware (MoM). For a
-    description of MoMs and other messaging concepts please see the ?.
+    description of MoMs and other messaging concepts please see the [Messaging Concepts](messaging-concepts.md).
 
 -   For answers to more questions about what ActiveMQ is and what it
     isn't please visit the [FAQs wiki
-    page](http://www.jboss.org/community/wiki/ActiveMQGeneralFAQs).
+    page](todo).
 
 Why use ActiveMQ? Here are just a few of the reasons:
 
@@ -47,6 +46,6 @@ Why use ActiveMQ? Here are just a few of the reasons:
     routing of messages in a highly flexible way.
 
 -   For a full list of features, please see the [features wiki
-    page](http://www.jboss.org/community/wiki/ActiveMQFeatures) .
+    page](todo) .
 
 

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/b4144013/docs/user-manual/en/project-info.md
----------------------------------------------------------------------
diff --git a/docs/user-manual/en/project-info.md b/docs/user-manual/en/project-info.md
index 2465981..b6099ac 100644
--- a/docs/user-manual/en/project-info.md
+++ b/docs/user-manual/en/project-info.md
@@ -1,50 +1,30 @@
-Project Information
-===================
+# Project Information
 
-The official ActiveMQ project page is <http://activemq.org/>.
+The official ActiveMQ project page is <http://activemq.apache.org//>.
 
-Software Download
-=================
+## Software Download
 
 The software can be download from the Download
-page:<http://activemq.org/downloads.html>
+page:<http://activemq.apache.org/download.html>
 
-Project Information
-===================
-
--   Please take a look at our project
-    [wiki](http://www.jboss.org/community/wiki/ActiveMQ)
+## Project Information
 
 -   If you have any user questions please use our [user
-    forum](https://community.jboss.org/en/activemq)
+    forum](http://activemq.2283324.n4.nabble.com/ActiveMQ-User-f2341805.html)
 
 -   If you have development related questions, please use our [developer
-    forum](https://community.jboss.org/en/activemq/dev)
+    forum](http://activemq.2283324.n4.nabble.com/ActiveMQ-Dev-f2368404.html)
 
 -   Pop in and chat to us in our [IRC
     channel](irc://irc.freenode.net:6667/activemq)
 
--   Our project [blog](http://activemq.blogspot.com/)
-
--   Follow us on [twitter](http://twitter.com/activemq)
+-   Follow us on [twitter](https://twitter.com/activemq)
 
--   ActiveMQ Git repository is <https://github.com/activemq/activemq>
+-   ActiveMQ Git repository is <https://github.com/apache/activemq-6>
 
 -   All release tags are available from
-    <https://github.com/activemq/activemq/tags>
-
-Red Hat kindly employs developers to work full time on ActiveMQ, they
-are:
-
--   Clebert Suconic (project lead)
-
--   Andy Taylor
-
--   Howard Gao
+    <https://github.com/apache/activemq-6/releases>
 
--   Justin Bertram
 
 And many thanks to all our contributors, both old and new who helped
-create ActiveMQ, for a full list of the people who made it happen, take
-a look at our [team
-page](http://jboss.org.apache.activemq/community/team.html).
+create ActiveMQ.

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/b4144013/docs/user-manual/en/project-info.xml
----------------------------------------------------------------------
diff --git a/docs/user-manual/en/project-info.xml b/docs/user-manual/en/project-info.xml
deleted file mode 100644
index 51a7470..0000000
--- a/docs/user-manual/en/project-info.xml
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- ============================================================================= -->
-<!-- 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.                                                -->
-<!-- ============================================================================= -->
-
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "ActiveMQ_User_Manual.ent">
-%BOOK_ENTITIES;
-]>
-<chapter id="project-info">
-   <title>Project Information</title>
-   <para>The official ActiveMQ project page is <ulink url="http://activemq.org/"
-         >http://activemq.org/</ulink>.</para>
-   <section id="download.software">
-      <title>Software Download</title>
-      <para>The software can be download from the Download page:<ulink
-            url="http://activemq.org/downloads.html">http://activemq.org/downloads.html</ulink></para>
-   </section>
-   <section id="download.git">
-      <title>Project Information</title>
-      <para>
-         <itemizedlist>
-            <listitem>
-               <para>Please take a look at our project <ulink
-                     url="http://www.jboss.org/community/wiki/ActiveMQ">wiki</ulink></para>
-            </listitem>
-            <listitem>
-               <para>If you have any user questions please use our <ulink
-                     url="https://community.jboss.org/en/activemq">user
-                     forum</ulink></para>
-            </listitem>
-            <listitem>
-               <para>If you have development related questions, please use our <ulink
-                     url="https://community.jboss.org/en/activemq/dev"
-                     >developer forum</ulink></para>
-            </listitem>
-            <listitem>
-               <para>Pop in and chat to us in our <ulink url="irc://irc.freenode.net:6667/activemq"
-                     >IRC channel</ulink></para>
-            </listitem>
-            <listitem>
-               <para>Our project <ulink url="http://activemq.blogspot.com/">blog</ulink></para>
-            </listitem>
-            <listitem>
-               <para>Follow us on <ulink url="http://twitter.com/activemq">twitter</ulink></para>
-            </listitem>
-            <listitem>
-               <para>ActiveMQ Git repository is <ulink
-                     url="https://github.com/activemq/activemq"
-                     >https://github.com/activemq/activemq</ulink></para>
-            </listitem>
-            <listitem>
-               <para>All release tags are available from <ulink
-                     url="https://github.com/activemq/activemq/tags"
-                     >https://github.com/activemq/activemq/tags</ulink></para>
-            </listitem>
-         </itemizedlist>
-      </para>
-      <para>Red Hat kindly employs developers to work full time on ActiveMQ, they are: <itemizedlist>
-            <listitem>
-               <para>Clebert Suconic (project lead)</para>
-            </listitem>
-            <listitem>
-               <para>Andy Taylor</para>
-            </listitem>
-            <listitem>
-               <para>Howard Gao</para>
-            </listitem>
-            <listitem>
-               <para>Justin Bertram</para>
-            </listitem>
-         </itemizedlist></para>
-      <para> And many thanks to all our contributors, both old and new who helped create ActiveMQ,
-         for a full list of the people who made it happen, take a look at our <ulink
-            url="http://jboss.org.apache.activemq/community/team.html">team page</ulink>. </para>
-   </section>
-</chapter>

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/b4144013/docs/user-manual/en/queue-attributes.md
----------------------------------------------------------------------
diff --git a/docs/user-manual/en/queue-attributes.md b/docs/user-manual/en/queue-attributes.md
index d2dafa5..d534673 100644
--- a/docs/user-manual/en/queue-attributes.md
+++ b/docs/user-manual/en/queue-attributes.md
@@ -1,13 +1,11 @@
-Queue Attributes
-================
+# Queue Attributes
 
 Queue attributes can be set in one of two ways. Either by configuring
 them using the configuration file or by using the core API. This chapter
 will explain how to configure each attribute and what effect the
 attribute has.
 
-Predefined Queues
-=================
+## Predefined Queues
 
 Queues can be predefined via configuration at a core level or at a JMS
 level. Firstly let's look at a JMS level.
@@ -59,11 +57,10 @@ which are.
 
 3.  There is no entry element.
 
-4.  The filter uses the *Core filter syntax* (described in ?), *not* the
+4.  The filter uses the *Core filter syntax* (described in [filter Expressions](filter-expressions.md)), *not* the
     JMS selector syntax.
 
-Using the API
-=============
+## Using the API
 
 Queues can also be created using the core API or the management API.
 
@@ -74,11 +71,10 @@ previously mentioned attributes. There is one extra attribute that can
 be set via this API which is `temporary`. setting this to true means
 that the queue will be deleted once the session is disconnected.
 
-Take a look at ? for a description of the management API for creating
+Take a look at [Management](management.md) for a description of the management API for creating
 queues.
 
-Configuring Queues Via Address Settings
-=======================================
+## Configuring Queues Via Address Settings
 
 There are some attributes that are defined against an address wildcard
 rather than a specific queue. Here an example of an `address-setting`
@@ -163,7 +159,7 @@ to disk. If the value is DROP then further messages will be silently
 dropped. If the value is FAIL then further messages will be dropped and
 an exception will be thrown on the client-side. If the value is BLOCK
 then client message producers will block when they try and send further
-messages. See the following chapters for more info ?, ?.
+messages. See the following chapters for more info [Flow Control](flow-control.md), [Paging](paging.md).
 
 `slow-consumer-threshold`. The minimum rate of message consumption
 allowed before a consumer is considered "slow." Measured in

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/b4144013/docs/user-manual/en/rest.md
----------------------------------------------------------------------
diff --git a/docs/user-manual/en/rest.md b/docs/user-manual/en/rest.md
index c48ffc1..988d553 100644
--- a/docs/user-manual/en/rest.md
+++ b/docs/user-manual/en/rest.md
@@ -1,5 +1,4 @@
-REST Interface
-==============
+# REST Interface
 
 The ActiveMQ REST interface allows you to leverage the reliability and
 scalability features of ActiveMQ over a simple REST/HTTP interface.
@@ -24,8 +23,7 @@ as a JMS message and distributed through core ActiveMQ. Simple and easy.
 Consuming messages from a queue or topic looks very similar. We'll
 discuss the entire interface in detail later in this docbook.
 
-Goals of REST Interface
-=======================
+## Goals of REST Interface
 
 Why would you want to use ActiveMQ's REST interface? What are the goals
 of the REST interface?
@@ -54,8 +52,7 @@ of the REST interface?
     ActiveMQ on the back end without sacrificing the simplicity of a
     REST interface.
 
-Installation and Configuration
-==============================
+## Installation and Configuration
 
 ActiveMQ's REST interface is installed as a Web archive (WAR). It
 depends on the [RESTEasy](http://jboss.org/resteasy) project and can
@@ -66,8 +63,7 @@ deploying within JBoss AS 7) or you want the ActiveMQ REST WAR to
 startup and manage the ActiveMQ server (e.g. you're deploying within
 something like Apache Tomcat).
 
-Installing Within Pre-configured Environment
---------------------------------------------
+### Installing Within Pre-configured Environment
 
 This section should be used when you want to use the ActiveMQ REST
 interface in an environment that already has ActiveMQ installed and
@@ -178,8 +174,7 @@ more about this later.
 > It is possible to put the WAR file at the "root context" of AS7, but
 > that is beyond the scope of this documentation.
 
-Bootstrapping ActiveMQ Along with REST
---------------------------------------
+### Bootstrapping ActiveMQ Along with REST
 
 You can bootstrap ActiveMQ within your WAR as well. To do this, you must
 have the ActiveMQ core and JMS jars along with Netty, Resteasy, and the
@@ -293,8 +288,7 @@ WEB-INF/classes directory!
        </dependencies>
     </project>
 
-REST Configuration
-------------------
+### REST Configuration
 
 The ActiveMQ REST implementation does have some configuration options.
 These are configured via XML configuration file that must be in your
@@ -362,8 +356,7 @@ Let's give an explanation of each config option.
     same as the ActiveMQ one of the same name. It will be used by
     sessions created by the ActiveMQ REST implementation.
 
-ActiveMQ REST Interface Basics
-==============================
+## ActiveMQ REST Interface Basics
 
 The ActiveMQ REST interface publishes a variety of REST resources to
 perform various tasks on a queue or topic. Only the top-level queue and
@@ -372,8 +365,7 @@ all over resources to interact with by looking for and traversing links.
 You'll find published links within custom response headers and embedded
 in published XML representations. Let's look at how this works.
 
-Queue and Topic Resources
--------------------------
+### Queue and Topic Resources
 
 To interact with a queue or topic you do a HEAD or GET request on the
 following relative URI pattern:
@@ -420,8 +412,7 @@ every time you initially interact (at boot time) with the server. If you
 treat all URLs as opaque then you will be isolated from implementation
 changes as the ActiveMQ REST interface evolves over time.
 
-Queue Resource Response Headers
--------------------------------
+### Queue Resource Response Headers
 
 Below is a list of response headers you should expect when interacting
 with a Queue resource.
@@ -441,8 +432,7 @@ with a Queue resource.
     want the ActiveMQ REST server to push messages to. The semantics of
     this link are described in [Pushing Messages](#message-push).
 
-Topic Resource Response Headers
--------------------------------
+### Topic Resource Response Headers
 
 Below is a list of response headers you should expect when interacting
 with a Topic resource.
@@ -462,8 +452,7 @@ with a Topic resource.
     you want the ActiveMQ REST server to push messages to. The semantics
     of this link are described in [Pushing Messages](#message-push).
 
-Posting Messages
-================
+## Posting Messages
 
 This chapter discusses the protocol for posting messages to a queue or a
 topic. In [ActiveMQ REST Interface Basics](#basics), you saw that a
@@ -548,8 +537,7 @@ ActiveMQ destination. Here's an example scenario:
 > then just go back to the queue or topic resource to get the
 > `msg-create` URL again.
 
-Duplicate Detection
--------------------
+### Duplicate Detection
 
 Sometimes you might have network problems when posting new messages to a
 queue or topic. You may do a POST and never receive a response.
@@ -670,8 +658,7 @@ The advantage of this approach is that the client does not have to
 repost the message. It also only has to come up with a unique
 `DUPLICATE_DETECTION_ID` once.
 
-Persistent Messages
--------------------
+### Persistent Messages
 
 By default, posted messages are not durable and will not be persisted in
 ActiveMQ's journal. You can create durable messages by modifying the
@@ -691,8 +678,7 @@ headers. here's an example of that.
        <cost>$199.99</cost>
     </order>
 
-TTL, Expiration and Priority
-----------------------------
+### TTL, Expiration and Priority
 
 You can set the time to live, expiration, and/or the priority of the
 message in the queue or topic by setting an additional query parameter.
@@ -712,8 +698,7 @@ the priority of the message. i.e.:
        <cost>$199.99</cost>
     </order>
 
-Consuming Messages via Pull
-===========================
+## Consuming Messages via Pull
 
 There are two different ways to consume messages from a topic or queue.
 You can wait and have the messaging server push them to you, or you can
@@ -769,8 +754,7 @@ parameters (`application/x-www-form-urlencoded`) described below.
 > then one consumer might buffer messages while the other consumer gets
 > none.
 
-Auto-Acknowledge
-----------------
+### Auto-Acknowledge
 
 This section focuses on the auto-acknowledge protocol for consuming
 messages via a pull. Here's a list of the response headers and URLs
@@ -790,7 +774,7 @@ you'll be interested in.
 -   `msg-consumer`. This is a URL pointing back to the consumer or
     subscription resource created for the client.
 
-### Creating an Auto-Ack Consumer or Subscription
+#### Creating an Auto-Ack Consumer or Subscription
 
 Here is an example of creating an auto-acknowledged queue pull consumer.
 
@@ -858,7 +842,7 @@ pull subscription.
     although, as you'll see later, it is transmitted with each response
     just to remind you.
 
-### Consuming Messages
+#### Consuming Messages
 
 After you have created a consumer resource, you are ready to start
 pulling messages from the server. Notice that when you created the
@@ -935,7 +919,7 @@ resource.
 
         <order>...</order>
 
-### Recovering From Network Failures
+#### Recovering From Network Failures
 
 If you experience a network failure and do not know if your post to a
 msg-consume-next URL was successful or not, just re-do your POST. A POST
@@ -948,7 +932,7 @@ URL). This is the reason why the protocol always requires you to use the
 next new msg-consume-next URL returned with each response. Information
 about what state the client is in is embedded within the actual URL.
 
-### Recovering From Client or Server Crashes
+#### Recovering From Client or Server Crashes
 
 If the server crashes and you do a POST to the msg-consume-next URL, the
 server will return a 412 (Preconditions Failed) response code. This is
@@ -970,8 +954,7 @@ would happen if the server crashes after auto-acknowledging a message
 and before the client receives the message. If you want more reliable
 messaging, then you must use the acknowledgement protocol.
 
-Manual Acknowledgement
-----------------------
+### Manual Acknowledgement
 
 The manual acknowledgement protocol is similar to the auto-ack protocol
 except there is an additional round trip to the server to tell it that
@@ -995,7 +978,7 @@ in.
 -   `msg-consumer`. This is a URL pointing back to the consumer or
     subscription resource created for the client.
 
-### Creating manually-acknowledged consumers or subscriptions
+#### Creating manually-acknowledged consumers or subscriptions
 
 Here is an example of creating an auto-acknowledged queue pull consumer.
 
@@ -1067,7 +1050,7 @@ topic pull subscription.
     although, as you'll see later, it is transmitted with each response
     just to remind you.
 
-### Consuming and Acknowledging a Message
+#### Consuming and Acknowledging a Message
 
 After you have created a consumer resource, you are ready to start
 pulling messages from the server. Notice that when you created the
@@ -1127,7 +1110,7 @@ resource.
     will contain a new msg-acknowledge-next header that you must use to
     obtain the next message.
 
-### Recovering From Network Failures
+#### Recovering From Network Failures
 
 If you experience a network failure and do not know if your post to a
 `msg-acknowledge-next` or `msg-acknowledgement` URL was successful or
@@ -1142,7 +1125,7 @@ at the URLs you'll see that they contain information about the expected
 current state of the server. This is how the server knows what the
 client is expecting.
 
-### Recovering From Client or Server Crashes
+#### Recovering From Client or Server Crashes
 
 If the server crashes and while you are doing a POST to the
 `msg-acknowledge-next` URL, just re-post. Everything should reconnect
@@ -1168,8 +1151,7 @@ can re-create the consumer resource with the same exact name. The
 response will contain the same information as if you did a GET or HEAD
 request on the consumer resource.
 
-Blocking Pulls with Accept-Wait
--------------------------------
+#### Blocking Pulls with Accept-Wait
 
 Unless your queue or topic has a high rate of message flowing though it,
 if you use the pull protocol, you're going to be receiving a lot of 503
@@ -1195,8 +1177,7 @@ header with your pull requests. Here's an example:
 In this example, we're posting to a msg-consume-next URL and telling the
 server that we would be willing to block for 30 seconds.
 
-Clean Up Your Consumers!
-------------------------
+### Clean Up Your Consumers!
 
 When the client is done with its consumer or topic subscription it
 should do an HTTP DELETE call on the consumer URL passed back from the
@@ -1208,16 +1189,14 @@ clean up your messes. A consumer timeout for durable subscriptions will
 not delete the underlying durable JMS subscription though, only the
 server-side consumer resource (and underlying JMS session).
 
-Pushing Messages
-================
+## Pushing Messages
 
 You can configure the ActiveMQ REST server to push messages to a
 registered URL either remotely through the REST interface, or by
 creating a pre-configured XML file for the ActiveMQ REST server to load
 at boot time.
 
-The Queue Push Subscription XML
--------------------------------
+### The Queue Push Subscription XML
 
 Creating a push consumer for a queue first involves creating a very
 simple XML document. This document tells the server if the push
@@ -1302,8 +1281,7 @@ values a rel attribute can have:
            <link href="http://somewhere.com" type="application/json" method="PUT"/>
         </push-registration>
 
-The Topic Push Subscription XML
--------------------------------
+### The Topic Push Subscription XML
 
 The push XML for a topic is the same except the root element is
 push-topic-registration. (Also remember the `selector` element is
@@ -1319,8 +1297,7 @@ template registration:
        <link rel="template" href="http://somewhere.com/resources/{id}/messages" method="POST"/>
     </push-topic registration>
 
-Creating a Push Subscription at Runtime
----------------------------------------
+### Creating a Push Subscription at Runtime
 
 Creating a push subscription at runtime involves getting the factory
 resource URL from the msg-push-consumers header, if the destination is a
@@ -1387,8 +1364,7 @@ Here's an example of creating a push registration for a topic:
     The Location header contains the URL for the created resource. If
     you want to unregister this, then do a HTTP DELETE on this URL.
 
-Creating a Push Subscription by Hand
-------------------------------------
+### Creating a Push Subscription by Hand
 
 You can create a push XML file yourself if you do not want to go through
 the REST interface to create a push subscription. There is some
@@ -1420,8 +1396,7 @@ variable defined in Chapter 2:
        <topic>jms.topic.foo</topic>
     </push-topic-registration>
 
-Pushing to Authenticated Servers
---------------------------------
+### Pushing to Authenticated Servers
 
 Push subscriptions only support BASIC and DIGEST authentication out of
 the box. Here is an example of adding BASIC authentication:
@@ -1450,8 +1425,7 @@ headers might look like:
        <header name="secret-header">jfdiwe3321</header>
     </push-topic registration>
 
-Creating Destinations
-=====================
+## Creating Destinations
 
 You can create a durable queue or topic through the REST interface.
 Currently you cannot create a temporary queue or topic. To create a
@@ -1487,11 +1461,9 @@ Here's what creating a topic would look like:
     HTTP/1.1 201 Created
     Location: http://example.com/topics/jms.topic.testTopic
 
-Securing the ActiveMQ REST Interface
-====================================
+## Securing the ActiveMQ REST Interface
 
-Within JBoss Application server
--------------------------------
+### Within JBoss Application server
 
 Securing the ActiveMQ REST interface is very simple with the JBoss
 Application Server. You turn on authentication for all URLs within your
@@ -1499,8 +1471,7 @@ WAR's web.xml, and let the user Principal to propagate to ActiveMQ. This
 only works if you are using the JBossSecurityManager with ActiveMQ. See
 the ActiveMQ documentation for more details.
 
-Security in other environments
-------------------------------
+### Security in other environments
 
 To secure the ActiveMQ REST interface in other environments you must
 role your own security by specifying security constraints with your
@@ -1520,8 +1491,7 @@ is a list of URI patterns:
   /topics/{topic-name}/push-subscriptions/\*   secure this URL pattern for pushing messages.
   -------------------------------------------- -----------------------------------------------------------------------
 
-Mixing JMS and REST
-===================
+## Mixing JMS and REST
 
 The ActiveMQ REST interface supports mixing JMS and REST producers and
 consumers. You can send an ObjectMessage through a JMS Producer, and
@@ -1530,8 +1500,7 @@ to a topic and have a JMS Consumer receive it. Some simple
 transformations are supported if you have the correct RESTEasy providers
 installed.
 
-JMS Producers - REST Consumers
-------------------------------
+### JMS Producers - REST Consumers
 
 If you have a JMS producer, the ActiveMQ REST interface only supports
 ObjectMessage type. If the JMS producer is aware that there may be REST
@@ -1551,8 +1520,7 @@ types it wants to convert the Java object into. If the REST client is a
 push registration, then the type attribute of the link element of the
 push registration should be set to the desired type.
 
-REST Producers - JMS Consumers
-------------------------------
+### REST Producers - JMS Consumers
 
 If you have a REST client producing messages and a JMS consumer,
 ActiveMQ REST has a simple helper class for you to transform the HTTP

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/b4144013/docs/user-manual/en/scheduled-messages.md
----------------------------------------------------------------------
diff --git a/docs/user-manual/en/scheduled-messages.md b/docs/user-manual/en/scheduled-messages.md
index e8f4cad..22812e2 100644
--- a/docs/user-manual/en/scheduled-messages.md
+++ b/docs/user-manual/en/scheduled-messages.md
@@ -1,13 +1,11 @@
-Scheduled Messages
-==================
+# Scheduled Messages
 
 Scheduled messages differ from normal messages in that they won't be
 delivered until a specified time in the future, at the earliest.
 
 To do this, a special property is set on the message before sending it.
 
-Scheduled Delivery Property
-===========================
+## Scheduled Delivery Property
 
 The property name used to identify a scheduled message is
 `"_HQ_SCHED_DELIVERY"` (or the constant
@@ -17,20 +15,20 @@ The specified value must be a positive `long` corresponding to the time
 the message must be delivered (in milliseconds). An example of sending a
 scheduled message using the JMS API is as follows.
 
-    TextMessage message = session.createTextMessage("This is a scheduled message message which will be delivered in 5 sec.");
-    message.setLongProperty("_HQ_SCHED_DELIVERY", System.currentTimeMillis() + 5000);
-    producer.send(message);
+``` java
+TextMessage message = session.createTextMessage("This is a scheduled message message which will be delivered in 5 sec.");
+message.setLongProperty("_HQ_SCHED_DELIVERY", System.currentTimeMillis() + 5000);
+producer.send(message);
 
-    ...
-
-    // message will not be received immediately but 5 seconds later
-    TextMessage messageReceived = (TextMessage) consumer.receive();
+...
 
+// message will not be received immediately but 5 seconds later
+TextMessage messageReceived = (TextMessage) consumer.receive();
+```
 Scheduled messages can also be sent using the core API, by setting the
 same property on the core message before sending.
 
-Example
-=======
+## Example
 
 See ? for an example which shows how scheduled messages can be used with
 JMS.

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/b4144013/docs/user-manual/en/security.md
----------------------------------------------------------------------
diff --git a/docs/user-manual/en/security.md b/docs/user-manual/en/security.md
index 6871334..efc610a 100644
--- a/docs/user-manual/en/security.md
+++ b/docs/user-manual/en/security.md
@@ -1,5 +1,4 @@
-Security
-========
+# Security
 
 This chapter describes how security works with ActiveMQ and how you can
 configure it. To disable security completely simply set the
@@ -11,13 +10,12 @@ long. To change this period set the property
 `security-invalidation-interval`, which is in milliseconds. The default
 is `10000` ms.
 
-Role based security for addresses
-=================================
+## Role based security for addresses
 
 ActiveMQ contains a flexible role-based security model for applying
 security to queues, based on their addresses.
 
-As explained in ?, ActiveMQ core consists mainly of sets of queues bound
+As explained in [Using Core](using-core.md), ActiveMQ core consists mainly of sets of queues bound
 to addresses. A message is sent to an address and the server looks up
 the set of queues that are bound to that address, the server then routes
 the message to those set of queues.
@@ -69,7 +67,8 @@ Let's take a simple example, here's a security block from
 
 The '`#`' character signifies "any sequence of words". Words are
 delimited by the '`.`' character. For a full description of the wildcard
-syntax please see ?. The above security block applies to any address
+syntax please see [Understanding the HornetQ Wildcard Syntax](wildcard-syntax.md). 
+The above security block applies to any address
 that starts with the string "globalqueues.europe.":
 
 Only users who have the `admin` role can create or delete durable queues
@@ -88,7 +87,7 @@ security manager. ActiveMQ ships with a user manager that reads user
 credentials from a file on disk, and can also plug into JAAS or JBoss
 Application Server security.
 
-For more information on configuring the security manager, please see ?.
+For more information on configuring the security manager, please see 'Changing the Security Manager'.
 
 There can be zero or more `security-setting` elements in each xml file.
 Where more than one match applies to a set of addresses the *more
@@ -121,18 +120,16 @@ permissions in more specific security-setting blocks by simply not
 specifying them. Otherwise it would not be possible to deny permissions
 in sub-groups of addresses.
 
-Secure Sockets Layer (SSL) Transport
-====================================
+## Secure Sockets Layer (SSL) Transport
 
 When messaging clients are connected to servers, or servers are
 connected to other servers (e.g. via bridges) over an untrusted network
 then ActiveMQ allows that traffic to be encrypted using the Secure
 Sockets Layer (SSL) transport.
 
-For more information on configuring the SSL transport, please see ?.
+For more information on configuring the SSL transport, please see [Configuring the Transport](configuring-transports.md).
 
-Basic user credentials
-======================
+## Basic user credentials
 
 ActiveMQ ships with a security manager implementation that reads user
 credentials, i.e. user names, passwords and role information from an xml
@@ -178,8 +175,7 @@ We then have three more users, the user `tim` has the role `admin`. The
 user `andy` has the roles `admin` and `guest`, and the user `jeff` has
 the roles `europe-users` and `guest`.
 
-Changing the security manager
-=============================
+## Changing the security manager
 
 If you do not want to use the default security manager then you can
 specify a different one by editing the file `activemq-beans.xml` (or
@@ -209,8 +205,7 @@ running JBoss Application Server).
 
 These two implementations are discussed in the next two sections.
 
-JAAS Security Manager
-=====================
+## JAAS Security Manager
 
 JAAS stands for 'Java Authentication and Authorization Service' and is a
 standard part of the Java platform. It provides a common API for
@@ -245,14 +240,12 @@ properties:
 -   CallbackHandler: the `CallbackHandler` implementation to use if user
     interaction are required
 
-Example
--------
+## Example
 
 See ? for an example which shows how ActiveMQ can be configured to use
 JAAS.
 
-JBoss AS Security Manager
-=========================
+## JBoss AS Security Manager
 
 The JBoss AS security manager is used when running ActiveMQ inside the
 JBoss Application server. This allows tight integration with the JBoss
@@ -265,8 +258,7 @@ Take a look at one of the default `activemq-jboss-beans.xml` files for
 JBoss Application Server that are bundled in the distribution for an
 example of how this is configured.
 
-Configuring Client Login
-------------------------
+### Configuring Client Login
 
 JBoss can be configured to allow client login, basically this is when a
 JEE component such as a Servlet or EJB sets security credentials on the
@@ -287,20 +279,18 @@ There is more info on using the JBoss client login module
 > meaning that the security context has been cleared. If this is the
 > case then messages will need to be sent blocking
 
-Changing the Security Domain
-----------------------------
+### Changing the Security Domain
 
 The name of the security domain used by the JBoss AS security manager
 defaults to `java:/jaas/activemq
           `. This can be changed by specifying `securityDomainName`
 (e.g. java:/jaas/myDomain).
 
-Changing the username/password for clustering
-=============================================
+## Changing the username/password for clustering
 
 In order for cluster connections to work correctly, each node in the
 cluster must make connections to the other nodes. The username/password
 they use for this should always be changed from the installation default
 to prevent a security risk.
 
-Please see ? for instructions on how to do this.
+Please see [Management](management.md) for instructions on how to do this.

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/b4144013/docs/user-manual/en/send-guarantees.md
----------------------------------------------------------------------
diff --git a/docs/user-manual/en/send-guarantees.md b/docs/user-manual/en/send-guarantees.md
index 439f70e..4027897 100644
--- a/docs/user-manual/en/send-guarantees.md
+++ b/docs/user-manual/en/send-guarantees.md
@@ -1,8 +1,6 @@
-Guarantees of sends and commits
-===============================
+# Guarantees of sends and commits
 
-Guarantees of Transaction Completion
-====================================
+## Guarantees of Transaction Completion
 
 When committing or rolling back a transaction with ActiveMQ, the request
 to commit or rollback is sent to the server, and the call will block on
@@ -26,8 +24,7 @@ of some loss of transaction durability.
 
 This parameter is set in `activemq-configuration.xml`
 
-Guarantees of Non Transactional Message Sends
-=============================================
+## Guarantees of Non Transactional Message Sends
 
 If you are sending messages to a server using a non transacted session,
 ActiveMQ can be configured to block the call to send until the message
@@ -53,7 +50,7 @@ of your network. For better performance we recommend either batching
 many messages sends together in a transaction since with a transactional
 session, only the commit / rollback blocks not every send, or, using
 ActiveMQ's advanced *asynchronous send acknowledgements feature*
-described in ?.
+described in Asynchronous Send Acknowledgements.
 
 If you are using JMS and you're using the JMS service on the server to
 load your JMS connection factory instances into JNDI then these
@@ -75,8 +72,7 @@ send a response back to the client until the message has been persisted
 and the server has a guarantee that the data has been persisted to disk.
 The default value for this parameter is `true`.
 
-Guarantees of Non Transactional Acknowledgements
-================================================
+## Guarantees of Non Transactional Acknowledgements
 
 If you are acknowledging the delivery of a message at the client side
 using a non transacted session, ActiveMQ can be configured to block the
@@ -89,12 +85,11 @@ been sent back. You might want to set this to `true` if you want to
 implement a strict *at most once* delivery policy. The default value is
 `false`
 
-Asynchronous Send Acknowledgements
-==================================
+## Asynchronous Send Acknowledgements
 
 If you are using a non transacted session but want a guarantee that
 every message sent to the server has reached it, then, as discussed in
-?, you can configure ActiveMQ to block the call to send until the server
+Guarantees of Non Transactional Message Sends, you can configure ActiveMQ to block the call to send until the server
 has received the message, persisted it and sent back a response. This
 works well but has a severe performance penalty - each call to send
 needs to block for at least the time of a network round trip (RTT) - the
@@ -128,10 +123,9 @@ successfully reached the server.
 
 The window size for send acknowledgements is determined by the
 confirmation-window-size parameter on the connection factory or client
-session factory. Please see ? for more info on this.
+session factory. Please see [Client Reconnection and Session Reattachment](client-reconnection.md) for more info on this.
 
-Asynchronous Send Acknowledgements
-----------------------------------
+# Asynchronous Send Acknowledgements
 
 To use the feature using the core API, you implement the interface
 `org.apache.activemq.api.core.client.SendAcknowledgementHandler` and set