http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/eap-manual/en/HornetQ_EAP_Manual.xml ---------------------------------------------------------------------- diff --git a/docs/eap-manual/en/HornetQ_EAP_Manual.xml b/docs/eap-manual/en/HornetQ_EAP_Manual.xml new file mode 100644 index 0000000..296057b --- /dev/null +++ b/docs/eap-manual/en/HornetQ_EAP_Manual.xml @@ -0,0 +1,24 @@ +<?xml version='1.0' encoding='UTF-8'?> +<!-- + ~ Copyright 2009 Red Hat, Inc. + ~ Red Hat 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. + --> + +<!-- This document was created with Syntext Serna Free. --> +<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ +<!ENTITY % BOOK_ENTITIES SYSTEM "HornetQ_EAP_Manual.ent"> +%BOOK_ENTITIES; + +]> +<book> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Book_Info.xml"/> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="clusters.xml"/> +</book>
http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/eap-manual/en/clusters.xml ---------------------------------------------------------------------- diff --git a/docs/eap-manual/en/clusters.xml b/docs/eap-manual/en/clusters.xml new file mode 100644 index 0000000..db38cdd --- /dev/null +++ b/docs/eap-manual/en/clusters.xml @@ -0,0 +1,569 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- + ~ Copyright 2009 Red Hat, Inc. + ~ Red Hat 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. + --> + +<chapter id="clusters"> + <title>HornetQ and EAP Cluster Configuration</title> + <section> + <title>Configuring Failover</title> + <para> + This chapter explains how to configure HornetQ within EAP with live backup-groups. Currently in this version + HornetQ only supports shared store for backup nodes so we assume that in the rest of this chapter. + </para> + <para>There are 2 main ways to configure HornetQ servers to have a backup server:</para> + <itemizedlist> + <listitem> + <para>Colocated. This is when an EAP instance has both a live and backup(s) running.</para> + </listitem> + <listitem> + <para>Dedicated. This is when an EAP instance has either a live or backup running but never both.</para> + </listitem> + </itemizedlist> + <section> + <title>Colocated Live and Backup in Symmetrical cluster</title> + <para> + The colocated symmetrical topology will be the most widely used topology, this is where an EAP instance has + a live node running plus 1 or more backup node. Each backup node will belong to a live node on another EAP + instance. In a simple cluster of 2 + EAP instances this would mean that each EAP instance would have a live server and 1 backup server as in + diagram1. + </para> + <para> + <graphic fileref="images/simple-colocated.jpg" align="center" format="jpg" scale="30"/> + </para> + <para> + Here the continuous lines show before failover and the dotted lines show the state of the cluster after + failover has occurred. To start with the 2 live servers are connected forming a cluster with each live server + connected to its local applications (via JCA). Also remote clients are connected to the live servers. After + failover the backup connects to the still available live server (which happens to be in the same vm) and takes + over as the live server in the cluster. Any remote clients also failover. + </para> + <para> + One thing to mention is that in that depending on what consumers/producers and MDB's etc are available messages + will be distributed between the nodes to make sure that all clients are satisfied from a JMS perspective. That is + if a producer is sending messages to a queue on a backup server that has no consumers, the messages will be + distributed to a live node elsewhere. + </para> + <para> + The following diagram is slightly more complex but shows the same configuration with 3 servers. Note that the + cluster connections ave been removed to make the configuration clearer but in reality all live servers will + form a cluster. + </para> + <para> + <graphic fileref="images/simple-colocated2.jpg" align="center" format="jpg" scale="30"/> + </para> + <para> + With more than 2 servers it is up to the user as to how many backups per live server are configured, you can + have + as many backups as required but usually 1 would suffice. In 3 node topology you may have each EAP instance + configured + with 2 backups in a 4 node 3 backups and so on. The following diagram demonstrates this. + </para> + <para> + <graphic fileref="images/simple-colocated3.jpg" align="center" format="jpg" scale="30"/> + </para> + <section> + <title>Configuration</title> + <section> + <title>Live Server Configuration</title> + <para> + First let's start with the configuration of the live server, we will use the EAP 'all' configuration as + our starting point. Since this version only supports shared store for failover we need to configure + this in the + <literal>hornetq-configuration.xml</literal> + file like so: + </para> + <programlisting> + <shared-store>true</shared-store> + </programlisting> + <para> + Obviously this means that the location of the journal files etc will have to be configured to be some + where + where + this lives backup can access. You may change the lives configuration in + <literal>hornetq-configuration.xml</literal> + to + something like: + </para> + <programlisting> + <large-messages-directory>/media/shared/data/large-messages</large-messages-directory> + <bindings-directory>/media/shared/data/bindings</bindings-directory> + <journal-directory>/media/shared/data/journal</journal-directory> + <paging-directory>/media/shared/data/paging</paging-directory> + </programlisting> + <para> + How these paths are configured will of course depend on your network settings or file system. + </para> + <para> + Now we need to configure how remote JMS clients will behave if the server is shutdown in a normal + fashion. + By + default + Clients will not failover if the live server is shutdown. Depending on there connection factory + settings + they will either fail or try to reconnect to the live server. + </para> + <para>If you want clients to failover on a normal server shutdown the you must configure the + <literal>failover-on-shutdown</literal> + flag to true in the + <literal>hornetq-configuration.xml</literal> + file like so: + </para> + <programlisting> + <failover-on-shutdown>false</failover-on-shutdown> + </programlisting> + <para>Don't worry if you have this set to false (which is the default) but still want failover to occur, + simply + kill + the + server process directly or call + <literal>forceFailover</literal> + via jmx or the admin console on the core server object. + </para> + <para>We also need to configure the connection factories used by the client to be HA. This is done by + adding + certain attributes to the connection factories in<literal>hornetq-jms.xml</literal>. Let's look at an + example: + </para> + <programlisting> + <connection-factory name="NettyConnectionFactory"> + <xa>true</xa> + <connectors> + <connector-ref connector-name="netty"/> + </connectors> + <entries> + <entry name="/ConnectionFactory"/> + <entry name="/XAConnectionFactory"/> + </entries> + + <ha>true</ha> + <!-- Pause 1 second between connect attempts --> + <retry-interval>1000</retry-interval> + + <!-- Multiply subsequent reconnect pauses by this multiplier. This can be used to + implement an exponential back-off. For our purposes we just set to 1.0 so each reconnect + pause is the same length --> + <retry-interval-multiplier>1.0</retry-interval-multiplier> + + <!-- Try reconnecting an unlimited number of times (-1 means "unlimited") --> + <reconnect-attempts>-1</reconnect-attempts> + </connection-factory> + + </programlisting> + <para>We have added the following attributes to the connection factory used by the client:</para> + <itemizedlist> + <listitem> + <para> + <literal>ha</literal> + - This tells the client it support HA and must always be true for failover + to occur + </para> + </listitem> + <listitem> + <para> + <literal>retry-interval</literal> + - this is how long the client will wait after each unsuccessful + reconnect to the server + </para> + </listitem> + <listitem> + <para> + <literal>retry-interval-multiplier</literal> + - is used to configure an exponential back off for + reconnect attempts + </para> + </listitem> + <listitem> + <para> + <literal>reconnect-attempts</literal> + - how many reconnect attempts should a client make before failing, + -1 means unlimited. + </para> + </listitem> + </itemizedlist> + </section> + <section> + <title>Backup Server Configuration</title> + <para> + Now let's look at how to create and configure a backup server on the same eap instance. This is running + on the same eap instance as the live server from the previous chapter but is configured as the backup + for a live server running on a different eap instance. + </para> + <para> + The first thing to mention is that the backup only needs a <literal>hornetq-jboss-beans.xml</literal> + and a <literal>hornetq-configuration.xml</literal> configuration file. This is because any JMS components + are created from the Journal when the backup server becomes live. + </para> + <para> + Firstly we need to define a new HornetQ Server that EAP will deploy. We do this by creating a new + <literal>hornetq-jboss-beans.xml</literal> + configuration. We will place this under a new directory + <literal>hornetq-backup1</literal> + which will need creating + in the + <literal>deploy</literal> + directory but in reality it doesn't matter where this is put. This will look like: + </para> + <programlisting> + <?xml version="1.0" encoding="UTF-8"?> + + <deployment xmlns="urn:jboss:bean-deployer:2.0"> + + <!-- The core configuration --> + <bean name="BackupConfiguration" class="org.hornetq.core.config.impl.FileConfiguration"> + <property + name="configurationUrl">${jboss.server.home.url}/deploy/hornetq-backup1/hornetq-configuration.xml</property> + </bean> + + + <!-- The core server --> + <bean name="BackupHornetQServer" class="org.hornetq.core.server.impl.HornetQServerImpl"> + <constructor> + <parameter> + <inject bean="BackupConfiguration"/> + </parameter> + <parameter> + <inject bean="MBeanServer"/> + </parameter> + <parameter> + <inject bean="HornetQSecurityManager"/> + </parameter> + </constructor> + <start ignored="true"/> + <stop ignored="true"/> + </bean> + + <!-- The JMS server --> + <bean name="BackupJMSServerManager" class="org.hornetq.jms.server.impl.JMSServerManagerImpl"> + <constructor> + <parameter> + <inject bean="BackupHornetQServer"/> + </parameter> + </constructor> + </bean> + + </deployment> + </programlisting> + <para> + The first thing to notice is the BackupConfiguration bean. This is configured to pick up the + configuration + for + the + server which we will place in the same directory. + </para> + <para> + After that we just configure a new HornetQ Server and JMS server. + </para> + <note> + <para> + Notice that the names of the beans have been changed from that of the live servers configuration. + This + is + so + there is no clash. Obviously if you add more backup servers you will need to rename those as well, + backup1, + backup2 etc. + </para> + </note> + <para> + Now let's add the server configuration in + <literal>hornetq-configuration.xml</literal> + and add it to the same directory + <literal>deploy/hornetq-backup1</literal> + and configure it like so: + </para> + <programlisting> + <configuration xmlns="urn:hornetq" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="urn:hornetq /schema/hornetq-configuration.xsd"> + + <jmx-domain>org.hornetq.backup1</jmx-domain> + + <clustered>true</clustered> + + <backup>true</backup> + + <shared-store>true</shared-store> + + <allow-failback>true</allow-failback> + + <bindings-directory>/media/shared/data/hornetq-backup/bindings</bindings-directory> + + <journal-directory>/media/shared/data/hornetq-backup/journal</journal-directory> + + <journal-min-files>10</journal-min-files> + + <large-messages-directory>/media/shared/data/hornetq-backup/largemessages</large-messages-directory> + + <paging-directory>/media/shared/data/hornetq-backup/paging</paging-directory> + + <connectors> + <connector name="netty-connector"> + <factory-class>org.hornetq.core.remoting.impl.netty.NettyConnectorFactory</factory-class> + <param key="host" value="${jboss.bind.address:localhost}"/> + <param key="port" value="${hornetq.remoting.backup.netty.port:5446}"/> + </connector> + + <connector name="in-vm"> + <factory-class>org.hornetq.core.remoting.impl.invm.InVMConnectorFactory</factory-class> + <param key="server-id" value="${hornetq.server-id:0}"/> + </connector> + + </connectors> + + <acceptors> + <acceptor name="netty"> + <factory-class>org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory</factory-class> + <param key="host" value="${jboss.bind.address:localhost}"/> + <param key="port" value="${hornetq.remoting.backup.netty.port:5446}"/> + </acceptor> + </acceptors> + + <broadcast-groups> + <broadcast-group name="bg-group1"> + <group-address>231.7.7.7</group-address> + <group-port>9876</group-port> + <broadcast-period>1000</broadcast-period> + <connector-ref>netty-connector</connector-ref> + </broadcast-group> + </broadcast-groups> + + <discovery-groups> + <discovery-group name="dg-group1"> + <group-address>231.7.7.7</group-address> + <group-port>9876</group-port> + <refresh-timeout>60000</refresh-timeout> + </discovery-group> + </discovery-groups> + + <cluster-connections> + <cluster-connection name="my-cluster"> + <address>jms</address> + <connector-ref>netty-connector</connector-ref> + <discovery-group-ref discovery-group-name="dg-group1"/> + <!--max hops defines how messages are redistributed, the default is 1 meaning only distribute to directly + connected nodes, to disable set to 0--> + <!--<max-hops>0</max-hops>--> + </cluster-connection> + </cluster-connections> + + <security-settings> + <security-setting match="#"> + <permission type="createNonDurableQueue" roles="guest"/> + <permission type="deleteNonDurableQueue" roles="guest"/> + <permission type="consume" roles="guest"/> + <permission type="send" roles="guest"/> + </security-setting> + </security-settings> + + <address-settings> + <!--default for catch all--> + <address-setting match="#"> + <dead-letter-address>jms.queue.DLQ</dead-letter-address> + <expiry-address>jms.queue.ExpiryQueue</expiry-address> + <redelivery-delay>0</redelivery-delay> + <max-size-bytes>10485760</max-size-bytes> + <message-counter-history-day-limit>10</message-counter-history-day-limit> + <address-full-policy>BLOCK</address-full-policy> + </address-setting> + </address-settings> + + </configuration> + + </programlisting> + <para> + The second thing you can see is we have added a + <literal>jmx-domain</literal> + attribute, this is used when + adding objects, such as the HornetQ server and JMS server to jmx, we change this from the default + <literal>org.hornetq</literal> + to avoid naming clashes with the live server + </para> + <para> + The first important part of the configuration is to make sure that this server starts as a backup + server not + a live server, via the + <literal>backup</literal> + attribute. + </para> + <para> + After that we have the same cluster configuration as live, that is + <literal>clustered</literal> + is true and + <literal>shared-store</literal> + is true. However you can see we have added a new configuration element + <literal>allow-failback</literal>. When this is set to true then this backup server will automatically + stop + and fall back into backup node if failover occurs and the live server has become available. If false + then + the user will have to stop the server manually. + </para> + <para> + Next we can see the configuration for the journal location, as in the live configuration this must + point to + the same directory as this backup's live server. + </para> + <para> + Now we see the connectors configuration, we have 3 defined which are needed for the following + </para> + <itemizedlist> + <listitem> + <para> + <literal>netty-connector.</literal> + This is the connector used to connect to this backup server once live. + </para> + </listitem> + </itemizedlist> + <para>After that you will see the acceptors defined, This is the acceptor where clients will reconnect. + </para> + <para> + The Broadcast groups, Discovery group and cluster configurations are as per normal, details of these + can be found in the HornetQ user manual. + </para> + <note> + <para>notice the commented out <literal>max-hops</literal> in the cluster connection, set this to 0 if + you want to disable server side load balancing.</para> + </note> + <para> + When the backup becomes it will be not be servicing any JEE components on this eap instance. Instead any + existing messages will be redistributed around the cluster and new messages forwarded to and from the backup + to service any remote clients it has (if it has any). + </para> + </section> + <section> + <title>Configuring multiple backups</title> + <para> + In this instance we have assumed that there are only 2 nodes where each node has a backup for the other + node. However you may want to configure a server too have multiple backup nodes. For example you may want + 3 nodes where each node has 2 backups, one for each of the other 2 live servers. For this you would simply + copy the backup configuration and make sure you do the following: + </para> + <itemizedlist> + <listitem> + <para> + Make sure that you give all the beans in the <literal>hornetq-jboss-beans.xml</literal> configuration + file a unique name, i.e. + </para> + </listitem> + </itemizedlist> + </section> + <section> + <title>Running the shipped example</title> + <para> + EAP ships with an example configuration for this topology. Look under <literal>extras/hornetq/resources/examples/symmetric-cluster-with-backups-colocated</literal> + and follow the read me + </para> + </section> + </section> + </section> + <section> + <title>Dedicated Live and Backup in Symmetrical cluster</title> + <para> + In reality the configuration for this is exactly the same as the backup server in the previous section, the only + difference is that a backup will reside on an eap instance of its own rather than colocated with another live server. + Of course this means that the eap instance is passive and not used until the backup comes live and is only + really useful for pure JMS applications. + </para> + <para>The following diagram shows a possible configuration for this:</para> + <para> + <graphic fileref="images/simple-dedicated.jpg" align="center" format="jpg" scale="30"/> + </para> + <para> + Here you can see how this works with remote JMS clients. Once failover occurs the HornetQ backup Server takes + running within another eap instance takes over as live. + </para> + <para> + This is fine with applications that are pure JMS and have no JMS components such as MDB's. If you are using + JMS components then there are 2 ways that this can be done. The first is shown in the following diagram: + </para> + <para> + <graphic fileref="images/simple-dedicated-jca.jpg" align="center" format="jpg" scale="30"/> + </para> + <para> + Because there is no live hornetq server running by default in the eap instance running the backup server it + makes no sense to host any applications in it. However you can host applications on the server running the live + hornetq server. If failure occurs to an live hornetq server then remote jms clients will failover as previously + explained however what happens to any messages meant for or sent from JEE components. Well when the backup comes + live, messages will be distributed to and from the backup server over HornetQ cluster connections and handled + appropriately. + </para> + <para> + The second way to do this is to have both live and backup server remote form the eap instance as shown in the + following diagram. + </para> + <para> + <graphic fileref="images/simple-dedicated-jca-remote.jpg" align="center" format="jpg" scale="30"/> + </para> + <para> + Here you can see that all the Application (via JCA) will be serviced by a HornetQ server in its own eap instance. + </para> + <section> + <title>Configuration of dedicated Live and backup</title> + <para> + The live server configuration is exactly the same as in the previous example. The only difference of course + is that there is no backup in the eap instance. + </para> + <para> + For the backup server the <literal>hornetq-configuration.xml</literal> is unchanged, however since there is + no live server we need to make sure that the <literal>hornetq-jboss-beans.xml</literal> instantiates all + the beans needed. For this simply use the same configuration as in the live server changing only the + location of the <literal>hornetq-configuration.xml</literal> parameter for the <literal>Configuration</literal> + bean. + </para> + <para> + As before there will be no <literal>hornetq-jms.xml</literal> or <literal>jms-ds.xml</literal> configuration. + </para> + <para> + If you want both hornetq servers to be in there own dedicated server where they are remote to applications, + as in the last diagram. Then simply edit the <literal>jms-ds.xml</literal> and change the following lines to + </para> + <programlisting> + <config-property name="ConnectorClassName" type="java.lang.String">org.hornetq.core.remoting.impl.netty.NettyConnectorFactory</config-property> + <config-property name="ConnectionParameters" type="java.lang.String">host=127.0.0.1;port=5446</config-property> + </programlisting> + <para> + This will change the outbound JCA connector, to configure the inbound connector for MDB's edit the + <literal>ra.xml</literal> config file and change the following parameters. + </para> + <programlisting> + <config-property> + <description>The transport type</description> + <config-property-name>ConnectorClassName</config-property-name> + <config-property-type>java.lang.String</config-property-type> + <config-property-value>org.hornetq.core.remoting.impl.netty.NettyConnectorFactory</config-property-value> + </config-property> + <config-property> + <description>The transport configuration. These values must be in the form of key=val;key=val;</description> + <config-property-name>ConnectionParameters</config-property-name> + <config-property-type>java.lang.String</config-property-type> + <config-property-value>host=127.0.0.1;port=5446</config-property-value> + </config-property> + </programlisting> + <para> + In both cases the host and port should match your live server. If you are using Discovery then set the + appropriate parameters for <literal>DiscoveryAddress</literal> and <literal>DiscoveryPort</literal> to match + your configured broadcast groups. + </para> + </section> + <section> + <title>Running the shipped example</title> + <para> + EAP ships with an example configuration for this topology. Look under + <literal>extras/hornetq/resources/examples/cluster-with-dedicated-backup</literal> + and follow the read me + </para> + </section> + </section> + </section> +</chapter> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/eap-manual/en/diagrams/ha-topologies1.odg ---------------------------------------------------------------------- diff --git a/docs/eap-manual/en/diagrams/ha-topologies1.odg b/docs/eap-manual/en/diagrams/ha-topologies1.odg new file mode 100644 index 0000000..f42e64f Binary files /dev/null and b/docs/eap-manual/en/diagrams/ha-topologies1.odg differ http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/eap-manual/en/images/simple-colocated.jpg ---------------------------------------------------------------------- diff --git a/docs/eap-manual/en/images/simple-colocated.jpg b/docs/eap-manual/en/images/simple-colocated.jpg new file mode 100644 index 0000000..ed998e5 Binary files /dev/null and b/docs/eap-manual/en/images/simple-colocated.jpg differ http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/eap-manual/en/images/simple-colocated2.jpg ---------------------------------------------------------------------- diff --git a/docs/eap-manual/en/images/simple-colocated2.jpg b/docs/eap-manual/en/images/simple-colocated2.jpg new file mode 100644 index 0000000..76e6ee3 Binary files /dev/null and b/docs/eap-manual/en/images/simple-colocated2.jpg differ http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/eap-manual/en/images/simple-colocated3.jpg ---------------------------------------------------------------------- diff --git a/docs/eap-manual/en/images/simple-colocated3.jpg b/docs/eap-manual/en/images/simple-colocated3.jpg new file mode 100644 index 0000000..d07a9eb Binary files /dev/null and b/docs/eap-manual/en/images/simple-colocated3.jpg differ http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/eap-manual/en/images/simple-dedicated-jca-remote.jpg ---------------------------------------------------------------------- diff --git a/docs/eap-manual/en/images/simple-dedicated-jca-remote.jpg b/docs/eap-manual/en/images/simple-dedicated-jca-remote.jpg new file mode 100644 index 0000000..6a98b3a Binary files /dev/null and b/docs/eap-manual/en/images/simple-dedicated-jca-remote.jpg differ http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/eap-manual/en/images/simple-dedicated-jca.jpg ---------------------------------------------------------------------- diff --git a/docs/eap-manual/en/images/simple-dedicated-jca.jpg b/docs/eap-manual/en/images/simple-dedicated-jca.jpg new file mode 100644 index 0000000..4d6387f Binary files /dev/null and b/docs/eap-manual/en/images/simple-dedicated-jca.jpg differ http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/eap-manual/en/images/simple-dedicated.jpg ---------------------------------------------------------------------- diff --git a/docs/eap-manual/en/images/simple-dedicated.jpg b/docs/eap-manual/en/images/simple-dedicated.jpg new file mode 100644 index 0000000..ea97b2c Binary files /dev/null and b/docs/eap-manual/en/images/simple-dedicated.jpg differ http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/eap-manual/en/master.xml ---------------------------------------------------------------------- diff --git a/docs/eap-manual/en/master.xml b/docs/eap-manual/en/master.xml new file mode 100644 index 0000000..e69de29 http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/eap-manual/pom.xml ---------------------------------------------------------------------- diff --git a/docs/eap-manual/pom.xml b/docs/eap-manual/pom.xml new file mode 100644 index 0000000..4c85f52 --- /dev/null +++ b/docs/eap-manual/pom.xml @@ -0,0 +1,305 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + ~ Copyright 2009 Red Hat, Inc. + ~ Red Hat 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. + --> + +<project xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + + <modelVersion>4.0.0</modelVersion> + <groupId>org.jboss.project</groupId> + <artifactId>${docname}-${translation}</artifactId> + <version>1.0</version> + <packaging>jdocbook</packaging> + <name>${bookname}-(${translation})</name> + + <properties> + <translation>en</translation> + <docname>HornetQ_EAP_Manual</docname> + <bookname>HornetQ EAP Manual</bookname> + </properties> + + <repositories> + <repository> + <id>jboss-public-repository-group</id> + <name>JBoss Public Maven Repository Group</name> + <url>https://repository.jboss.org/nexus/content/groups/public/</url> + <layout>default</layout> + <releases> + <enabled>true</enabled> + <updatePolicy>never</updatePolicy> + </releases> + <snapshots> + <enabled>true</enabled> + <updatePolicy>never</updatePolicy> + </snapshots> + </repository> + </repositories> + <pluginRepositories> + <pluginRepository> + <id>jboss-public-repository-group</id> + <name>JBoss Public Maven Repository Group</name> + <url>https://repository.jboss.org/nexus/content/groups/public/</url> + <layout>default</layout> + <releases> + <enabled>true</enabled> + </releases> + <snapshots> + <enabled>true</enabled> + </snapshots> + </pluginRepository> + <!--pluginRepository> + <id>jboss-snapshot-repository-group</id> + <name>JBoss Snapshot Maven Repository Group</name> + <url>https://repository.jboss.org/nexus/content/groups/snapshot/</url> + <layout>default</layout> + <releases> + <enabled>true</enabled> + </releases> + <snapshots> + <enabled>true</enabled> + </snapshots> + </pluginRepository--> + </pluginRepositories> + + <profiles> + + <!-- mvn compile --> + <profile> + <id>all</id> + <activation> + <activeByDefault>true</activeByDefault> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.jboss.maven.plugins</groupId> + <artifactId>maven-jdocbook-plugin</artifactId> + <version>2.2.1</version> + <extensions>true</extensions> + <configuration> + <formats> + <format> + <formatName>pdf</formatName> + <stylesheetResource>classpath:/xslt/org/jboss/pdf.xsl</stylesheetResource> + <finalName>${docname}.pdf</finalName> + </format> + <format> + <formatName>html</formatName> + <stylesheetResource>classpath:/xslt/org/jboss/xhtml.xsl</stylesheetResource> + <finalName>index.html</finalName> + </format> + <format> + <formatName>html_single</formatName> + <stylesheetResource>classpath:/xslt/org/jboss/xhtml-single.xsl</stylesheetResource> + <finalName>index.html</finalName> + </format> + </formats> + </configuration> + </plugin> + </plugins> + </build> + </profile> + + <!-- mvn compile -Phtml --> + <profile> + <id>html</id> + <activation> + <activeByDefault>false</activeByDefault> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.jboss.maven.plugins</groupId> + <artifactId>maven-jdocbook-plugin</artifactId> + <version>2.2.1</version> + <extensions>true</extensions> + <configuration> + <formats> + <format> + <formatName>html</formatName> + <stylesheetResource>classpath:/xslt/org/jboss/xhtml.xsl</stylesheetResource> + <finalName>index.html</finalName> + </format> + </formats> + </configuration> + </plugin> + </plugins> + </build> + </profile> + + <!-- mvn compile -Phtml-single --> + <profile> + <id>html-single</id> + <activation> + <activeByDefault>false</activeByDefault> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.jboss.maven.plugins</groupId> + <artifactId>maven-jdocbook-plugin</artifactId> + <version>2.2.1</version> + <extensions>true</extensions> + </plugin> + </plugins> + </build> + </profile> + + <!-- mvn compile -Ppdf --> + <profile> + <id>pdf</id> + <activation> + <activeByDefault>false</activeByDefault> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.jboss.maven.plugins</groupId> + <artifactId>maven-jdocbook-plugin</artifactId> + <version>2.1.0</version> + <extensions>true</extensions> + <configuration> + <formats> + <format> + <formatName>pdf</formatName> + <stylesheetResource>classpath:/xslt/org/jboss/pdf.xsl</stylesheetResource> + <finalName>${docname}.pdf</finalName> + </format> + </formats> + </configuration> + </plugin> + </plugins> + </build> + </profile> + + </profiles> + <build> + <pluginManagement> + <plugins> + <plugin> + <groupId>org.jboss.maven.plugins</groupId> + <artifactId>maven-jdocbook-plugin</artifactId> + <version>2.2.1</version> + <extensions>true</extensions> + <dependencies> + <dependency> + <groupId>org.jboss.pressgang</groupId> + <artifactId>pressgang-xslt</artifactId> + <version>1.2.0</version> + </dependency> + <dependency> + <groupId>org.jboss</groupId> + <artifactId>jbossorg-jdocbook-style</artifactId> + <version>1.1.1</version> + <type>jdocbook-style</type> + </dependency> + </dependencies> + <configuration> + <sourceDirectory>${project.basedir}</sourceDirectory> + <sourceDocumentName>${docname}.xml</sourceDocumentName> + <masterTranslation>en</masterTranslation> + <imageResource> + <directory>${project.basedir}/en</directory> + <includes> + <include>images/*.png</include> + </includes> + </imageResource> + <formats> + <format> + <formatName>pdf</formatName> + <stylesheetResource>classpath:/xslt/org/jboss/pdf.xsl</stylesheetResource> + <finalName>${pdf.name}</finalName> + </format> + <format> + <formatName>html</formatName> + <stylesheetResource>classpath:/xslt/org/jboss/xhtml.xsl</stylesheetResource> + <finalName>index.html</finalName> + </format> + <format> + <formatName>html_single</formatName> + <stylesheetResource>classpath:/xslt/org/jboss/xhtml-single.xsl</stylesheetResource> + <finalName>index.html</finalName> + </format> + </formats> + <options> + <xincludeSupported>true</xincludeSupported> + <xmlTransformerType>saxon</xmlTransformerType> + <docbookVersion>1.72.0</docbookVersion> + <localeSeparator>-</localeSeparator> + <transformerParameters> + <property> + <name>javax.xml.parsers.DocumentBuilderFactory</name> + <value>org.apache.xerces.jaxp.DocumentBuilderFactoryImpl</value> + </property> + <property> + <name>javax.xml.parsers.SAXParserFactory</name> + <value>org.apache.xerces.jaxp.SAXParserFactoryImpl</value> + </property> + </transformerParameters> + </options> + </configuration> + </plugin> + </plugins> + </pluginManagement> + </build> + <!--<build> + <plugins> + <plugin> + <groupId>org.jboss.maven.plugins</groupId> + <artifactId>maven-jdocbook-plugin</artifactId> + <version>2.2.1</version> + <extensions>true</extensions> + <dependencies> + <dependency> + <groupId>org.jboss.pressgang</groupId> + <artifactId>pressgang-xslt</artifactId> + <version>1.2.0</version> + </dependency> + <dependency> + <groupId>org.jboss</groupId> + <artifactId>jbossorg-jdocbook-style</artifactId> + <version>1.1.1</version> + <type>jdocbook-style</type> + </dependency> + </dependencies> + <configuration> + <sourceDocumentName>${docname}.xml</sourceDocumentName> + <sourceDirectory>.</sourceDirectory> + <imageResource> + <directory>${translation}</directory> + <includes> + <include>images/*</include> + </includes> + </imageResource> + <options> + <xincludeSupported>true</xincludeSupported> + <xmlTransformerType>saxon</xmlTransformerType> + <transformerParameters> + <property> + <name>javax.xml.parsers.DocumentBuilderFactory</name> + <value>org.apache.xerces.jaxp.DocumentBuilderFactoryImpl</value> + </property> + <property> + <name>javax.xml.parsers.SAXParserFactory</name> + <value>org.apache.xerces.jaxp.SAXParserFactoryImpl</value> + </property> + </transformerParameters> + </options> + </configuration> + </plugin> + + </plugins> + </build>--> + +</project> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/pom.xml ---------------------------------------------------------------------- diff --git a/docs/pom.xml b/docs/pom.xml new file mode 100644 index 0000000..de0fd31 --- /dev/null +++ b/docs/pom.xml @@ -0,0 +1,51 @@ +<!-- + ~ Copyright 2009 Red Hat, Inc. + ~ Red Hat 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. + --> + +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.hornetq</groupId> + <artifactId>hornetq-pom</artifactId> + <version>2.5.0-SNAPSHOT</version> + </parent> + + <groupId>org.hornetq.docs</groupId> + <artifactId>hornetq-docs</artifactId> + <packaging>pom</packaging> + <name>HornetQ Documentation</name> + + <properties> + <skipLicenseCheck>true</skipLicenseCheck> + <skipStyleCheck>true</skipStyleCheck> + </properties> + + <modules> + <module>user-manual</module> + <module>quickstart-guide</module> + </modules> + + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-deploy-plugin</artifactId> + <configuration> + <skip>true</skip> + </configuration> + </plugin> + </plugins> + </build> + +</project> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/quickstart-guide/en/Author_Group.xml ---------------------------------------------------------------------- diff --git a/docs/quickstart-guide/en/Author_Group.xml b/docs/quickstart-guide/en/Author_Group.xml new file mode 100644 index 0000000..b0dac5f --- /dev/null +++ b/docs/quickstart-guide/en/Author_Group.xml @@ -0,0 +1,45 @@ +<?xml version='1.0' encoding='UTF-8'?> +<!DOCTYPE authorgroup PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ +<!ENTITY % BOOK_ENTITIES SYSTEM "HornetQ_QuickStart_Guide.ent"> +%BOOK_ENTITIES; +]> +<authorgroup> + <author> + <firstname>Clebert</firstname> + <surname>Suconic</surname> + <affiliation> + <shortaffil>Red Hat, Inc.</shortaffil> + <jobtitle>Project Lead</jobtitle> + <orgdiv>JBoss</orgdiv> + </affiliation> + <email>csuco...@redhat.com</email> + </author> + <author> + <firstname>Andy</firstname> + <surname>Taylor</surname> + <affiliation> + <shortaffil>Red Hat, Inc.</shortaffil> + <jobtitle>Core Developer</jobtitle> + <orgdiv>JBoss</orgdiv> + </affiliation> + <email>atay...@redhat.com</email> + </author> + <author> + <firstname>Tim</firstname> + <surname>Fox</surname> + </author> + <author> + <firstname>Jeff</firstname> + <surname>Mesnil</surname> + </author> + <author> + <firstname>Howard</firstname> + <surname>Gao</surname> + <affiliation> + <shortaffil>Red Hat, Inc.</shortaffil> + <jobtitle>Core Developer</jobtitle> + <orgdiv>JBoss</orgdiv> + </affiliation> + <email>ghow...@redhat.com</email> + </author> +</authorgroup> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/quickstart-guide/en/Book_Info.xml ---------------------------------------------------------------------- diff --git a/docs/quickstart-guide/en/Book_Info.xml b/docs/quickstart-guide/en/Book_Info.xml new file mode 100644 index 0000000..5f2ce4b --- /dev/null +++ b/docs/quickstart-guide/en/Book_Info.xml @@ -0,0 +1,31 @@ +<?xml version='1.0' encoding='UTF-8'?> +<!-- This document was created with Syntext Serna Free. --><!DOCTYPE bookinfo PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ +<!ENTITY % BOOK_ENTITIES SYSTEM "HornetQ_QuickStart_Guide.ent"> +%BOOK_ENTITIES; +]> +<bookinfo id="HornetQ_QuickStart_Guide"> + <title>HornetQ QuickStart Guide</title> + <subtitle>Putting the buzz in messaging</subtitle> + <productname>HornetQ</productname> + <edition>2.1.0</edition> + <pubsnumber>1</pubsnumber> + <abstract> + <para>This Quickstart guide will help you get HornetQ up and running in a few minutes and will explain the basics needed + to get started.</para> + </abstract> + <corpauthor> + <inlinemediaobject> + <imageobject> + <imagedata fileref="images/hornetQ_logo_600px.png" format="PNG"/> + </imageobject> + <textobject> + <phrase>HornetQ Logo</phrase> + </textobject> + </inlinemediaobject> + </corpauthor> + <copyright> + <year>&YEAR;</year> + <holder>&HOLDER;</holder> + </copyright> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Author_Group.xml"/> +</bookinfo> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/quickstart-guide/en/HornetQ_QuickStart_Guide.ent ---------------------------------------------------------------------- diff --git a/docs/quickstart-guide/en/HornetQ_QuickStart_Guide.ent b/docs/quickstart-guide/en/HornetQ_QuickStart_Guide.ent new file mode 100644 index 0000000..f3d2b4a --- /dev/null +++ b/docs/quickstart-guide/en/HornetQ_QuickStart_Guide.ent @@ -0,0 +1,5 @@ +<!ENTITY PRODUCT "HornetQ"> +<!ENTITY BOOKID "HornetQ_QuickStart_Guide"> +<!ENTITY YEAR "2011"> +<!ENTITY HOLDER "Red Hat Inc."> +<!ENTITY semi ";"> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/quickstart-guide/en/HornetQ_QuickStart_Guide.xml ---------------------------------------------------------------------- diff --git a/docs/quickstart-guide/en/HornetQ_QuickStart_Guide.xml b/docs/quickstart-guide/en/HornetQ_QuickStart_Guide.xml new file mode 100644 index 0000000..62114fa --- /dev/null +++ b/docs/quickstart-guide/en/HornetQ_QuickStart_Guide.xml @@ -0,0 +1,17 @@ +<?xml version='1.0' encoding='UTF-8'?> + +<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [ +<!ENTITY % BOOK_ENTITIES SYSTEM "HornetQ_QuickStart_Guide.ent"> +%BOOK_ENTITIES; + +]> +<book> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Book_Info.xml"/> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="notice.xml"/> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="about.xml"/> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="introduction.xml"/> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="download.xml"/> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="installation.xml"/> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="running.xml"/> + <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="examples.xml"/> +</book> http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/quickstart-guide/en/about.xml ---------------------------------------------------------------------- diff --git a/docs/quickstart-guide/en/about.xml b/docs/quickstart-guide/en/about.xml new file mode 100644 index 0000000..b55905c --- /dev/null +++ b/docs/quickstart-guide/en/about.xml @@ -0,0 +1,84 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<!-- ============================================================================= --> +<!-- Copyright © 2009 Red Hat, Inc. and others. --> +<!-- --> +<!-- The text of and illustrations in this document are licensed by Red Hat under --> +<!-- a Creative Commons AttributionâShare Alike 3.0 Unported license ("CC-BY-SA"). --> +<!-- --> +<!-- An explanation of CC-BY-SA is available at --> +<!-- --> +<!-- http://creativecommons.org/licenses/by-sa/3.0/. --> +<!-- --> +<!-- In accordance with CC-BY-SA, if you distribute this document or an adaptation --> +<!-- of it, you must provide the URL for the original version. --> +<!-- --> +<!-- Red Hat, as the licensor of this document, waives the right to enforce, --> +<!-- and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent --> +<!-- permitted by applicable law. --> +<!-- ============================================================================= --> + +<!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 "HornetQ_QuickStart_Guide.ent"> +%BOOK_ENTITIES; +]> + +<chapter id="about"> + <title>About HornetQ</title> + <para>What is HornetQ?</para> + <itemizedlist> + <listitem> + <para>HornetQ is an open source project to build a multi-protocol, embeddable, very high + performance, clustered, asynchronous messaging system.</para> + </listitem> + <listitem> + <para>For answers to more questions about what HornetQ is and what it isn't please visit + the <ulink url="http://www.jboss.org/community/wiki/HornetQGeneralFAQs">FAQs wiki + page</ulink>.</para> + </listitem> + </itemizedlist> + <para>Why use HornetQ? Here are just a few of the reasons:</para> + <itemizedlist> + <listitem> + <para>100% open source software. HornetQ is licenced using the Apache Software License v2.0 + to minimise barriers to adoption.</para> + </listitem> + <listitem> + <para>HornetQ is designed with usability in mind.</para> + </listitem> + <listitem> + <para>Written in Java. Runs on any platform with a Java 6+ runtime, that's everything + from Windows desktops to IBM mainframes.</para> + </listitem> + <listitem> + <para>Amazing performance. Our class beating high performance journal provides persistent + messaging performance at rates normally seen for non persistent messaging, our non + persistent messaging performance rocks the boat too.</para> + </listitem> + <listitem> + <para>Full feature set. All the features you'd expect in any serious messaging system, + and others you won't find anywhere else.</para> + </listitem> + <listitem> + <para>Elegant, clean-cut design with minimal third party dependencies. Run HornetQ + stand-alone, run it in integrated in your favourite JEE application server, or run + it embedded inside your own product. It's up to you.</para> + </listitem> + <listitem> + <para>Seamless high availability. We provide a HA solution with automatic client + failover so you can guarantee zero message loss or duplication in event of server + failure.</para> + </listitem> + <listitem> + <para>Hugely flexible clustering. Create clusters of servers that know how to load + balance messages. Link geographically distributed clusters over unreliable + connections to form a global network. Configure routing of messages in a highly + flexible way.</para> + </listitem> + <listitem> + <para>For a full list of features, please see the <ulink + url="http://www.jboss.org/community/wiki/HornetQFeatures">features wiki + page</ulink> .</para> + </listitem> + </itemizedlist> +</chapter> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/docs/quickstart-guide/en/download.xml ---------------------------------------------------------------------- diff --git a/docs/quickstart-guide/en/download.xml b/docs/quickstart-guide/en/download.xml new file mode 100644 index 0000000..bc0beec --- /dev/null +++ b/docs/quickstart-guide/en/download.xml @@ -0,0 +1,75 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- ============================================================================= --> +<!-- Copyright © 2009 Red Hat, Inc. and others. --> +<!-- --> +<!-- The text of and illustrations in this document are licensed by Red Hat under --> +<!-- a Creative Commons AttributionâShare Alike 3.0 Unported license ("CC-BY-SA"). --> +<!-- --> +<!-- An explanation of CC-BY-SA is available at --> +<!-- --> +<!-- http://creativecommons.org/licenses/by-sa/3.0/. --> +<!-- --> +<!-- In accordance with CC-BY-SA, if you distribute this document or an adaptation --> +<!-- of it, you must provide the URL for the original version. --> +<!-- --> +<!-- Red Hat, as the licensor of this document, waives the right to enforce, --> +<!-- and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent --> +<!-- permitted by applicable law. --> +<!-- ============================================================================= --> + +<!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 "HornetQ_QuickStart_Guide.ent"> +%BOOK_ENTITIES; +]> +<chapter id="download"> + <title>Download</title> + <para>The official HornetQ project page is <ulink url="http://hornetq.org/" + >http://hornetq.org/</ulink>.</para> + <section id="download.software"> + <title>Software Download</title> + <para>The software can be download from the Download page:<ulink + url="http://hornetq.org/downloads.html" + >http://hornetq.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/HornetQ">wiki</ulink></para> + </listitem> + <listitem> + <para>If you have any user questions please use our <ulink + url="https://community.jboss.org/en/hornetq">user + forum</ulink></para> + </listitem> + <listitem> + <para>If you have development related questions, please use our <ulink + url="http://www.jboss.org/index.html?module=bb&op=viewforum&f=313" + >developer forum</ulink></para> + </listitem> + <listitem> + <para>Pop in and chat to us in our <ulink url="irc://irc.freenode.net:6667/hornetq" + >IRC channel</ulink></para> + </listitem> + <listitem> + <para>Our project <ulink url="http://hornetq.blogspot.com/">blog</ulink></para> + </listitem> + <listitem> + <para>Follow us on <ulink url="http://twitter.com/hornetq">twitter</ulink></para> + </listitem> + <listitem> + <para>HornetQ Git repository is <ulink + url="https://github.com/hornetq/hornetq" + >https://github.com/hornetq/hornetq</ulink></para> + </listitem> + <listitem> + <para>All release tags are available from <ulink + url="https://github.com/hornetq/hornetq/tags" + >https://github.com/hornetq/hornetq/tags</ulink></para> + </listitem> + </itemizedlist> + </para> + </section> +</chapter>