activemq-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jbert...@apache.org
Subject [20/51] [partial] activemq-6 git commit: ACTIVEMQ6-1 - Initial HornetQ Donation Commit
Date Mon, 10 Nov 2014 16:32:31 GMT
http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/etc/org.eclipse.jdt.ui.prefs
----------------------------------------------------------------------
diff --git a/etc/org.eclipse.jdt.ui.prefs b/etc/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..f68cb8d
--- /dev/null
+++ b/etc/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,119 @@
+#Thu Nov 10 13:53:54 CET 2011
+cleanup.add_default_serial_version_id=false
+cleanup.add_generated_serial_version_id=true
+cleanup.add_missing_annotations=true
+cleanup.add_missing_deprecated_annotations=true
+cleanup.add_missing_methods=false
+cleanup.add_missing_nls_tags=false
+cleanup.add_missing_override_annotations=true
+cleanup.add_serial_version_id=true
+cleanup.always_use_blocks=true
+cleanup.always_use_parentheses_in_expressions=false
+cleanup.always_use_this_for_non_static_field_access=false
+cleanup.always_use_this_for_non_static_method_access=false
+cleanup.convert_to_enhanced_for_loop=true
+cleanup.correct_indentation=true
+cleanup.format_source_code=true
+cleanup.format_source_code_changes_only=false
+cleanup.make_local_variable_final=false
+cleanup.make_parameters_final=true
+cleanup.make_private_fields_final=true
+cleanup.make_type_abstract_if_missing_method=false
+cleanup.make_variable_declarations_final=true
+cleanup.never_use_blocks=false
+cleanup.never_use_parentheses_in_expressions=true
+cleanup.organize_imports=true
+cleanup.qualify_static_field_accesses_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+cleanup.qualify_static_member_accesses_with_declaring_class=true
+cleanup.qualify_static_method_accesses_with_declaring_class=true
+cleanup.remove_private_constructors=true
+cleanup.remove_trailing_whitespaces=true
+cleanup.remove_trailing_whitespaces_all=true
+cleanup.remove_trailing_whitespaces_ignore_empty=false
+cleanup.remove_unnecessary_casts=true
+cleanup.remove_unnecessary_nls_tags=true
+cleanup.remove_unused_imports=true
+cleanup.remove_unused_local_variables=false
+cleanup.remove_unused_private_fields=true
+cleanup.remove_unused_private_members=true
+cleanup.remove_unused_private_methods=true
+cleanup.remove_unused_private_types=true
+cleanup.sort_members=false
+cleanup.sort_members_all=false
+cleanup.use_blocks=true
+cleanup.use_blocks_only_for_return_and_throw=false
+cleanup.use_parentheses_in_expressions=true
+cleanup.use_this_for_non_static_field_access=true
+cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+cleanup.use_this_for_non_static_method_access=true
+cleanup.use_this_for_non_static_method_access_only_if_necessary=true
+cleanup_profile=_HornetQ profile
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_'HornetQ'
+formatter_settings_version=12
+org.eclipse.jdt.ui.exception.name=e
+org.eclipse.jdt.ui.gettersetter.use.is=true
+org.eclipse.jdt.ui.ignorelowercasenames=true
+org.eclipse.jdt.ui.importorder=java;javax;com;org;
+org.eclipse.jdt.ui.javadoc=true
+org.eclipse.jdt.ui.keywordthis=false
+org.eclipse.jdt.ui.ondemandthreshold=9999
+org.eclipse.jdt.ui.overrideannotation=true
+org.eclipse.jdt.ui.staticondemandthreshold=9999
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\n * @return the ${bare_field_name}\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\n * @param ${param} the ${bare_field_name} to set\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\n * ${tags}\n */</template><template autoinsert\="true" context\="filecomment_context"
  deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\n * \n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\n * ${tags}\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\n * \n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\n * ${tags}\n */</template><template autoinsert\="false" context\="overridecomment_context" deleted\="false" descrip
 tion\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\n * ${tags}\n * ${see_to_target}\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\n${package_declaration}\n\n${typecomment}\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" 
 description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="
 Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_missing_override_annotations_interface_methods=false
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=false
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_to_enhanced_for_loop=true
+sp_cleanup.correct_indentation=false
+sp_cleanup.format_source_code=true
+sp_cleanup.format_source_code_changes_only=true
+sp_cleanup.make_local_variable_final=false
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=true
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=true
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=true
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=true
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_blocks=false
+sp_cleanup.use_blocks_only_for_return_and_throw=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/examples/core/embedded-remote/pom.xml
----------------------------------------------------------------------
diff --git a/examples/core/embedded-remote/pom.xml b/examples/core/embedded-remote/pom.xml
new file mode 100644
index 0000000..c88da36
--- /dev/null
+++ b/examples/core/embedded-remote/pom.xml
@@ -0,0 +1,113 @@
+<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.examples.core</groupId>
+      <artifactId>core-examples</artifactId>
+      <version>2.5.0-SNAPSHOT</version>
+   </parent>
+
+   <artifactId>hornetq-core-embedded-remote-example</artifactId>
+   <packaging>jar</packaging>
+   <name>HornetQ Core Embedded Remote Example</name>
+
+   <dependencies>
+      <dependency>
+         <groupId>org.hornetq</groupId>
+         <artifactId>hornetq-core-client</artifactId>
+         <version>${project.version}</version>
+      </dependency>
+      <dependency>
+         <groupId>org.hornetq</groupId>
+         <artifactId>hornetq-commons</artifactId>
+         <version>${project.version}</version>
+      </dependency>
+      <dependency>
+         <groupId>org.hornetq</groupId>
+         <artifactId>hornetq-server</artifactId>
+         <version>${project.version}</version>
+      </dependency>
+      <dependency>
+         <groupId>io.netty</groupId>
+         <artifactId>netty-all</artifactId>
+      </dependency>
+      <dependency>
+         <groupId>org.jboss.javaee</groupId>
+         <artifactId>jboss-jms-api</artifactId>
+         <version>1.1.0.GA</version>
+      </dependency>
+      <dependency>
+         <groupId>org.jboss.naming</groupId>
+         <artifactId>jnp-client</artifactId>
+         <version>5.0.5.Final</version>
+      </dependency>
+      <dependency>
+         <groupId>org.jboss.spec.javax.jms</groupId>
+         <artifactId>jboss-jms-api_2.0_spec</artifactId>
+      </dependency>
+   </dependencies>
+
+   <profiles>
+      <profile>
+         <id>server</id>
+         <dependencies>
+            <dependency>
+               <groupId>org.hornetq</groupId>
+               <artifactId>hornetq-server</artifactId>
+               <version>${project.version}</version>
+            </dependency>
+         </dependencies>
+         <build>
+            <plugins>
+               <plugin>
+                  <groupId>org.codehaus.mojo</groupId>
+                  <artifactId>exec-maven-plugin</artifactId>
+                  <version>1.1</version>
+                  <executions>
+                     <execution>
+                        <phase>package</phase>
+                        <goals>
+                           <goal>java</goal>
+                        </goals>
+                     </execution>
+                  </executions>
+                  <configuration>
+                     <mainClass>org.hornetq.core.example.EmbeddedServer</mainClass>
+                  </configuration>
+               </plugin>
+            </plugins>
+         </build>
+      </profile>
+      <profile>
+         <id>client</id>
+         <dependencies>
+            <dependency>
+               <groupId>org.hornetq</groupId>
+               <artifactId>hornetq-core-client</artifactId>
+               <version>${project.version}</version>
+            </dependency>
+         </dependencies>
+         <build>
+            <plugins>
+               <plugin>
+                  <groupId>org.codehaus.mojo</groupId>
+                  <artifactId>exec-maven-plugin</artifactId>
+                  <version>1.1</version>
+                  <executions>
+                     <execution>
+                        <phase>package</phase>
+                        <goals>
+                           <goal>java</goal>
+                        </goals>
+                     </execution>
+                  </executions>
+                  <configuration>
+                     <mainClass>org.hornetq.core.example.EmbeddedRemoteExample</mainClass>
+                  </configuration>
+               </plugin>
+            </plugins>
+         </build>
+      </profile>
+   </profiles>
+</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/examples/core/embedded-remote/readme.html
----------------------------------------------------------------------
diff --git a/examples/core/embedded-remote/readme.html b/examples/core/embedded-remote/readme.html
new file mode 100644
index 0000000..ad25345
--- /dev/null
+++ b/examples/core/embedded-remote/readme.html
@@ -0,0 +1,85 @@
+<html>
+  <head>
+    <title>HornetQ Embedded Example</title>
+    <link rel="stylesheet" type="text/css" href="../../common/common.css" />
+    <link rel="stylesheet" type="text/css" href="../../common/prettify.css" />
+    <script type="text/javascript" src="../../common/prettify.js"></script>
+  </head>
+  <body onload="prettyPrint()">
+     <h1>Embedded Example</h1>
+     <p>This example shows how to setup and run HornetQ embedded with remote clients connecting.</p>
+     <p>HornetQ was designed to use POJOs (Plain Old Java Objects), what makes embedding HornetQ as simple as instantiating a few objects.</p>
+
+     <p>HornetQ Embedded could be used from very simple use cases with only InVM support to very complex cases with clustering, persistence and fail over.</p>
+
+
+     <h2>Example step-by-step</h2>     
+     <p><i>To run the example, simply type <code>mvn -Pserver</code> from this directory to start the server and <code>mvn -Pclient</code> to run the client example</i></p>
+     <p>In this we don't use any configuration files. (Everything is embedded). We simply instantiate ConfigurationImpl, HornetQServer, start it and operate on JMS regularly</p>
+     <br/>
+     <ol>
+        <li>On EmbeddedServer: Create the Configuration, and set the properties accordingly</li>
+        <pre class="prettyprint">
+           Configuration configuration = new ConfigurationImpl();
+           configuration.setEnablePersistence(false);
+           configuration.setSecurityEnabled(false);
+        </pre>
+         
+        <li>On EmbeddedServer: Create and start the server</li>
+        <pre class="prettyprint">
+           HornetQServer server = HornetQ.newHornetQServer(configuration);
+           server.start();
+        </pre>
+
+        <li>As we are not using a JNDI environment we instantiate the objects directly</li>
+        <pre class="prettyprint">
+           ServerLocator serverLocator = HornetQClient.createServerLocatorWithoutHA(new TransportConfiguration(NettyConnectorFactory.class.getName()));
+           ClientSessionFactory sf = serverLocator.createSessionFactory();
+        </pre>
+
+        <li>Create a Core Queue</li>
+        <pre class="prettyprint">
+           ClientSession coreSession = sf.createSession(false, false, false);
+           final String queueName = "queue.exampleQueue";
+           coreSession.createQueue(queueName, queueName, true);
+           coreSession.close();
+        </pre>
+
+        <li>Create the session and producer</li>
+        <pre class="prettyprint">
+           session = sf.createSession();
+                                   
+           ClientProducer producer = session.createProducer(queueName);
+        </pre>
+
+        <li>Create and send a Message</li>
+        <pre class="prettyprint">
+           ClientMessage message = session.createMessage(false);
+           message.putStringProperty(propName, "Hello sent at " + new Date());
+           System.out.println("Sending the message.");
+           producer.send(message);
+        </pre>
+
+        <li>Create the message consumer and start the connection</li>
+        <pre class="prettyprint">
+           ClientConsumer messageConsumer = session.createConsumer(queueName);
+           session.start();
+        </pre>
+
+        <li>Receive the message</li>
+        <pre class="prettyprint">
+           ClientMessage messageReceived = messageConsumer.receive(1000);
+           System.out.println("Received TextMessage:" + messageReceived.getProperty(propName));
+        </pre>
+
+        <li>Be sure to close our resources!</li>
+
+        <pre class="prettyprint">
+           if (sf != null)
+           {
+              sf.close();
+           }
+        </pre>
+     </ol>
+  </body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/examples/core/embedded-remote/src/main/java/org/hornetq/core/example/EmbeddedRemoteExample.java
----------------------------------------------------------------------
diff --git a/examples/core/embedded-remote/src/main/java/org/hornetq/core/example/EmbeddedRemoteExample.java b/examples/core/embedded-remote/src/main/java/org/hornetq/core/example/EmbeddedRemoteExample.java
new file mode 100644
index 0000000..95a5a6e
--- /dev/null
+++ b/examples/core/embedded-remote/src/main/java/org/hornetq/core/example/EmbeddedRemoteExample.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright 2005-2014 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.
+ */
+package org.hornetq.core.example;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.hornetq.api.core.TransportConfiguration;
+import org.hornetq.api.core.client.ClientConsumer;
+import org.hornetq.api.core.client.ClientMessage;
+import org.hornetq.api.core.client.ClientProducer;
+import org.hornetq.api.core.client.ClientSession;
+import org.hornetq.api.core.client.ClientSessionFactory;
+import org.hornetq.api.core.client.HornetQClient;
+import org.hornetq.api.core.client.ServerLocator;
+import org.hornetq.core.remoting.impl.netty.NettyConnectorFactory;
+
+/**
+ *
+ * This example shows how to run a HornetQ core client and server embedded in your
+ * own application
+ *
+ * @author <a href="mailto:tim.fox@jboss.com">Tim Fox</a>
+ *
+ */
+public class EmbeddedRemoteExample
+{
+
+   public static void main(final String[] args)
+   {
+      try
+      {
+         // Step 3. As we are not using a JNDI environment we instantiate the objects directly
+
+         /**
+          * this map with configuration values is not necessary (it configures the default values).
+          * If you modify it to run the example in two different hosts, remember to also modify the
+          * server's Acceptor at {@link EmbeddedServer}
+          */
+         Map<String,Object> map = new HashMap<String,Object>();
+         map.put("host", "localhost");
+         map.put("port", 5445);
+         // -------------------------------------------------------
+
+         ServerLocator serverLocator = HornetQClient.createServerLocatorWithoutHA(new TransportConfiguration(NettyConnectorFactory.class.getName(), map));
+         ClientSessionFactory sf = serverLocator.createSessionFactory();
+
+         // Step 4. Create a core queue
+         ClientSession coreSession = sf.createSession(false, false, false);
+
+         final String queueName = "queue.exampleQueue";
+
+         coreSession.createQueue(queueName, queueName, true);
+
+         coreSession.close();
+
+         ClientSession session = null;
+
+         try
+         {
+
+            // Step 5. Create the session, and producer
+            session = sf.createSession();
+
+            ClientProducer producer = session.createProducer(queueName);
+
+            // Step 6. Create and send a message
+            ClientMessage message = session.createMessage(false);
+
+            final String propName = "myprop";
+
+            message.putStringProperty(propName, "Hello sent at " + new Date());
+
+            System.out.println("Sending the message.");
+
+            producer.send(message);
+
+            // Step 7. Create the message consumer and start the connection
+            ClientConsumer messageConsumer = session.createConsumer(queueName);
+            session.start();
+
+            // Step 8. Receive the message.
+            ClientMessage messageReceived = messageConsumer.receive(1000);
+            System.out.println("Received TextMessage:" + messageReceived.getStringProperty(propName));
+         }
+         finally
+         {
+            // Step 9. Be sure to close our resources!
+            if (sf != null)
+            {
+               sf.close();
+            }
+         }
+      }
+      catch (Exception e)
+      {
+         e.printStackTrace();
+      }
+   }
+}

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/examples/core/embedded-remote/src/main/java/org/hornetq/core/example/EmbeddedServer.java
----------------------------------------------------------------------
diff --git a/examples/core/embedded-remote/src/main/java/org/hornetq/core/example/EmbeddedServer.java b/examples/core/embedded-remote/src/main/java/org/hornetq/core/example/EmbeddedServer.java
new file mode 100644
index 0000000..baaf917
--- /dev/null
+++ b/examples/core/embedded-remote/src/main/java/org/hornetq/core/example/EmbeddedServer.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2005-2014 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.
+ */
+package org.hornetq.core.example;
+
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+
+import org.hornetq.api.core.TransportConfiguration;
+import org.hornetq.core.config.Configuration;
+import org.hornetq.core.config.impl.ConfigurationImpl;
+import org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory;
+import org.hornetq.core.server.HornetQServer;
+import org.hornetq.core.server.HornetQServers;
+
+/**
+ * An EmbeddedServer
+ * @author <a href="mailto:clebert.suconic@jboss.org">Clebert Suconic</a>
+ */
+public class EmbeddedServer
+{
+
+	public static void main(final String arg[]) throws Exception
+   {
+      try
+      {
+         // Step 1. Create the Configuration, and set the properties accordingly
+         Configuration configuration = new ConfigurationImpl();
+         //we only need this for the server lock file
+         configuration.setJournalDirectory("target/data/journal");
+         configuration.setPersistenceEnabled(false);
+         configuration.setSecurityEnabled(false);
+         /**
+          * this map with configuration values is not necessary (it configures the default values).
+          * If you want to modify it to run the example in two different hosts, remember to also
+          * modify the client's Connector at {@link EmbeddedRemoteExample}.
+          */
+         Map<String, Object> map = new HashMap<String, Object>();
+         map.put("host", "localhost");
+         map.put("port", 5445);
+
+         TransportConfiguration transpConf = new TransportConfiguration(NettyAcceptorFactory.class.getName(),map);
+
+         HashSet<TransportConfiguration> setTransp = new HashSet<TransportConfiguration>();
+         setTransp.add(transpConf);
+
+         configuration.setAcceptorConfigurations(setTransp);
+
+         // Step 2. Create and start the server
+         HornetQServer server = HornetQServers.newHornetQServer(configuration);
+         server.start();
+      }
+      catch (Exception e)
+      {
+         e.printStackTrace();
+         throw e;
+      }
+   }
+}

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/examples/core/embedded/pom.xml
----------------------------------------------------------------------
diff --git a/examples/core/embedded/pom.xml b/examples/core/embedded/pom.xml
new file mode 100644
index 0000000..d6b92b4
--- /dev/null
+++ b/examples/core/embedded/pom.xml
@@ -0,0 +1,78 @@
+<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.examples.core</groupId>
+      <artifactId>core-examples</artifactId>
+      <version>2.5.0-SNAPSHOT</version>
+   </parent>
+
+   <artifactId>hornetq-core-embedded-example</artifactId>
+   <packaging>jar</packaging>
+   <name>HornetQ Core Embedded Example</name>
+
+   <dependencies>
+      <dependency>
+         <groupId>org.hornetq</groupId>
+         <artifactId>hornetq-server</artifactId>
+         <version>${project.version}</version>
+      </dependency>
+      <dependency>
+         <groupId>org.hornetq</groupId>
+         <artifactId>hornetq-core-client</artifactId>
+         <version>${project.version}</version>
+      </dependency>
+      <dependency>
+         <groupId>org.hornetq</groupId>
+         <artifactId>hornetq-commons</artifactId>
+         <version>${project.version}</version>
+      </dependency>
+      <dependency>
+         <groupId>io.netty</groupId>
+         <artifactId>netty-all</artifactId>
+      </dependency>
+      <dependency>
+         <groupId>org.jboss.javaee</groupId>
+         <artifactId>jboss-jms-api</artifactId>
+         <version>1.1.0.GA</version>
+      </dependency>
+      <dependency>
+         <groupId>org.jboss.naming</groupId>
+         <artifactId>jnp-client</artifactId>
+         <version>5.0.5.Final</version>
+      </dependency>
+      <dependency>
+         <groupId>org.jboss.spec.javax.jms</groupId>
+         <artifactId>jboss-jms-api_2.0_spec</artifactId>
+      </dependency>
+   </dependencies>
+
+   <profiles>
+      <profile>
+         <id>example</id>
+         <build>
+            <plugins>
+               <plugin>
+                  <groupId>org.codehaus.mojo</groupId>
+                  <artifactId>exec-maven-plugin</artifactId>
+                  <version>1.1</version>
+                  <executions>
+                     <execution>
+                        <phase>package</phase>
+                        <goals>
+                           <goal>java</goal>
+                        </goals>
+                     </execution>
+                  </executions>
+                  <configuration>
+                     <mainClass>org.hornetq.core.example.EmbeddedExample</mainClass>
+                  </configuration>
+               </plugin>
+            </plugins>
+         </build>
+      </profile>
+   </profiles>
+
+
+</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/examples/core/embedded/readme.html
----------------------------------------------------------------------
diff --git a/examples/core/embedded/readme.html b/examples/core/embedded/readme.html
new file mode 100644
index 0000000..ac41734
--- /dev/null
+++ b/examples/core/embedded/readme.html
@@ -0,0 +1,97 @@
+<html>
+  <head>
+    <title>HornetQ Embedded Example</title>
+    <link rel="stylesheet" type="text/css" href="../../common/common.css" />
+    <link rel="stylesheet" type="text/css" href="../../common/prettify.css" />
+    <script type="text/javascript" src="../../common/prettify.js"></script>
+  </head>
+  <body onload="prettyPrint()">
+     <h1>Embedded Example</h1>
+
+     <p>This example shows how to setup and run HornetQ embedded.</p>
+     <p>HornetQ was designed to use POJOs (Plain Old Java Objects), what makes embedding HornetQ as simple as instantiating a few objects.</p>
+     <p>In this example, we are using two jars:</p>
+     <ul>
+        <li>hornetq-server.jar</li>
+        <li>netty.jar</li>
+     </ul>
+     
+     <p>HornetQ Embedded could be used from very simple use cases with only InVM support to very complex cases with clustering, persistence and fail over.</p>
+
+     <h2>Example step-by-step</h2>     
+     <p><i>To run the example, simply type <code>mvn -Pexample</code> from this directory</i></p>
+     <p>In this we don't use any configuration files. (Everything is embedded). We simply instantiate ConfigurationImpl, HornetQServer, start it and operate on JMS regularly</p>
+
+     <ol>
+        <li>Create the Configuration, and set the properties accordingly</li>
+        <pre class="prettyprint">
+           Configuration configuration = new ConfigurationImpl();
+           configuration.setEnablePersistence(false);
+           configuration.setSecurityEnabled(false);
+           configuration.getAcceptorConfigurations().add(new TransportConfiguration(InVMAcceptorFactory.class.getName()));
+        </pre>
+         
+        <li>Create and start the server</li>
+        <pre class="prettyprint">
+           HornetQServer server = HornetQ.newHornetQServer(configuration);
+           server.start();
+        </pre>
+
+        <li>As we are not using a JNDI environment we instantiate the objects directly</li>
+        <pre class="prettyprint">
+           ServerLocator serverLocator = HornetQClient.createServerLocatorWithoutHA(new TransportConfiguration(InVMConnectorFactory.class.getName()));
+           ClientSessionFactory sf = serverLocator.createSessionFactory();
+        </pre>
+
+        <li>Create a Core Queue</li>
+        <pre class="prettyprint">
+           ClientSession coreSession = sf.createSession(false, false, false);
+           final String queueName = "queue.exampleQueue";
+           coreSession.createQueue(queueName, queueName, true);
+           coreSession.close();
+        </pre>
+
+        <li>Create the session and producer</li>
+        <pre class="prettyprint">
+            session = sf.createSession();
+                                   
+            ClientProducer producer = session.createProducer(queueName);
+        </pre>
+
+        <li>Create and send a Message</li>
+        <pre class="prettyprint">
+           ClientMessage message = session.createMessage(false);
+           message.putStringProperty(propName, "Hello sent at " + new Date());
+           System.out.println("Sending the message.");
+           producer.send(message);
+        </pre>
+
+        <li>Create the message consumer and start the connection</li>
+        <pre class="prettyprint">
+           ClientConsumer messageConsumer = session.createConsumer(queueName);
+           session.start();
+        </pre>
+
+        <li>Receive the message</li>
+        <pre class="prettyprint">
+           ClientMessage messageReceived = messageConsumer.receive(1000);
+           System.out.println("Received TextMessage:" + messageReceived.getProperty(propName));
+        </pre>
+
+        <li>Be sure to close our resources!</li>
+
+        <pre class="prettyprint">
+           if (sf != null)
+           {
+              sf.close();
+           }
+        </pre>
+
+        <li>Stop the server</li>
+
+        <pre class="prettyprint">
+           server.stop();
+        </pre>
+     </ol>
+  </body>
+</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/examples/core/embedded/src/main/java/org/hornetq/core/example/EmbeddedExample.java
----------------------------------------------------------------------
diff --git a/examples/core/embedded/src/main/java/org/hornetq/core/example/EmbeddedExample.java b/examples/core/embedded/src/main/java/org/hornetq/core/example/EmbeddedExample.java
new file mode 100644
index 0000000..96e3b02
--- /dev/null
+++ b/examples/core/embedded/src/main/java/org/hornetq/core/example/EmbeddedExample.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright 2005-2014 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.
+ */
+package org.hornetq.core.example;
+
+import java.util.Date;
+
+import org.hornetq.api.core.TransportConfiguration;
+import org.hornetq.api.core.client.ClientConsumer;
+import org.hornetq.api.core.client.ClientMessage;
+import org.hornetq.api.core.client.ClientProducer;
+import org.hornetq.api.core.client.ClientSession;
+import org.hornetq.api.core.client.ClientSessionFactory;
+import org.hornetq.api.core.client.HornetQClient;
+import org.hornetq.api.core.client.ServerLocator;
+import org.hornetq.core.config.Configuration;
+import org.hornetq.core.config.impl.ConfigurationImpl;
+import org.hornetq.core.remoting.impl.invm.InVMAcceptorFactory;
+import org.hornetq.core.remoting.impl.invm.InVMConnectorFactory;
+import org.hornetq.core.server.HornetQServer;
+import org.hornetq.core.server.HornetQServers;
+
+/**
+ *
+ * This example shows how to run a HornetQ core client and server embedded in your
+ * own application
+ *
+ * @author <a href="mailto:tim.fox@jboss.com">Tim Fox</a>
+ *
+ */
+public class EmbeddedExample
+{
+
+   public static void main(final String[] args) throws Exception
+   {
+      try
+      {
+         // Step 1. Create the Configuration, and set the properties accordingly
+         Configuration configuration = new ConfigurationImpl();
+         //we only need this for the server lock file
+         configuration.setJournalDirectory("target/data/journal");
+         configuration.setPersistenceEnabled(false);
+         configuration.setSecurityEnabled(false);
+         configuration.getAcceptorConfigurations().add(new TransportConfiguration(InVMAcceptorFactory.class.getName()));
+
+         // Step 2. Create and start the server
+         HornetQServer server = HornetQServers.newHornetQServer(configuration);
+         server.start();
+
+         // Step 3. As we are not using a JNDI environment we instantiate the objects directly
+         ServerLocator serverLocator = HornetQClient.createServerLocatorWithoutHA(new TransportConfiguration(InVMConnectorFactory.class.getName()));
+         ClientSessionFactory sf = serverLocator.createSessionFactory();
+
+         // Step 4. Create a core queue
+         ClientSession coreSession = sf.createSession(false, false, false);
+
+         final String queueName = "queue.exampleQueue";
+
+         coreSession.createQueue(queueName, queueName, true);
+
+         coreSession.close();
+
+         ClientSession session = null;
+
+         try
+         {
+
+            // Step 5. Create the session, and producer
+            session = sf.createSession();
+
+            ClientProducer producer = session.createProducer(queueName);
+
+            // Step 6. Create and send a message
+            ClientMessage message = session.createMessage(false);
+
+            final String propName = "myprop";
+
+            message.putStringProperty(propName, "Hello sent at " + new Date());
+
+            System.out.println("Sending the message.");
+
+            producer.send(message);
+
+            // Step 7. Create the message consumer and start the connection
+            ClientConsumer messageConsumer = session.createConsumer(queueName);
+            session.start();
+
+            // Step 8. Receive the message.
+            ClientMessage messageReceived = messageConsumer.receive(1000);
+            System.out.println("Received TextMessage:" + messageReceived.getStringProperty(propName));
+         }
+         finally
+         {
+            // Step 9. Be sure to close our resources!
+            if (sf != null)
+            {
+               sf.close();
+            }
+
+            // Step 10. Stop the server
+            server.stop();
+         }
+      }
+      catch (Exception e)
+      {
+         e.printStackTrace();
+         throw e;
+      }
+   }
+}

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/examples/core/microcontainer/pom.xml
----------------------------------------------------------------------
diff --git a/examples/core/microcontainer/pom.xml b/examples/core/microcontainer/pom.xml
new file mode 100644
index 0000000..f3d92f5
--- /dev/null
+++ b/examples/core/microcontainer/pom.xml
@@ -0,0 +1,84 @@
+<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.examples.core</groupId>
+      <artifactId>core-examples</artifactId>
+      <version>2.5.0-SNAPSHOT</version>
+   </parent>
+
+   <artifactId>hornetq-core-microcontainer-example</artifactId>
+   <packaging>jar</packaging>
+   <name>HornetQ Core Microcontainer Example</name>
+
+   <dependencies>
+      <dependency>
+         <groupId>org.hornetq</groupId>
+         <artifactId>hornetq-bootstrap</artifactId>
+         <version>${project.version}</version>
+      </dependency>
+      <dependency>
+         <groupId>org.hornetq</groupId>
+         <artifactId>hornetq-server</artifactId>
+         <version>${project.version}</version>
+      </dependency>
+      <dependency>
+         <groupId>org.hornetq</groupId>
+         <artifactId>hornetq-core-client</artifactId>
+         <version>${project.version}</version>
+      </dependency>
+      <dependency>
+         <groupId>org.hornetq</groupId>
+         <artifactId>hornetq-commons</artifactId>
+         <version>${project.version}</version>
+      </dependency>
+      <dependency>
+         <groupId>io.netty</groupId>
+         <artifactId>netty-all</artifactId>
+         <version>${netty.version}</version>
+      </dependency>
+      <dependency>
+         <groupId>org.jboss.javaee</groupId>
+         <artifactId>jboss-jms-api</artifactId>
+         <version>1.1.0.GA</version>
+      </dependency>
+      <dependency>
+         <groupId>org.jboss.naming</groupId>
+         <artifactId>jnp-client</artifactId>
+         <version>5.0.5.Final</version>
+      </dependency>
+      <dependency>
+         <groupId>org.jboss.spec.javax.jms</groupId>
+         <artifactId>jboss-jms-api_2.0_spec</artifactId>
+      </dependency>
+   </dependencies>
+
+   <profiles>
+      <profile>
+         <id>example</id>
+         <build>
+            <plugins>
+               <plugin>
+                  <groupId>org.codehaus.mojo</groupId>
+                  <artifactId>exec-maven-plugin</artifactId>
+                  <version>1.1</version>
+                  <executions>
+                     <execution>
+                        <phase>package</phase>
+                        <goals>
+                           <goal>java</goal>
+                        </goals>
+                     </execution>
+                  </executions>
+                  <configuration>
+                     <mainClass>org.hornetq.core.example.EmbeddedMicroContainerExample</mainClass>
+                  </configuration>
+               </plugin>
+            </plugins>
+         </build>
+      </profile>
+   </profiles>
+
+
+</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/examples/core/microcontainer/readme.html
----------------------------------------------------------------------
diff --git a/examples/core/microcontainer/readme.html b/examples/core/microcontainer/readme.html
new file mode 100644
index 0000000..40d2832
--- /dev/null
+++ b/examples/core/microcontainer/readme.html
@@ -0,0 +1,82 @@
+<html>
+  <head>
+    <title>HornetQ Embedded Example</title>
+    <link rel="stylesheet" type="text/css" href="../../common/common.css" />
+    <link rel="stylesheet" type="text/css" href="../../common/prettify.css" />
+    <script type="text/javascript" src="../../common/prettify.js"></script>
+  </head>
+  <body onload="prettyPrint()">
+     <h1>Micro Container Example</h1>
+
+     <p>This examples shows how to setup and run HornetQ through the Micro Container.</p>
+     <p>Refer to the user's manual for the list of required Jars, since JBoss Micro Container requires a few jars.</p>
+     <h2>Example step-by-step</h2>     
+     <p><i>To run the example, simply type <code>mvn verify</code> from this directory</i></p>
+     <p>In this we don't use any configuration files. (Everything is embedded). We simply instantiate ConfigurationImpl, HornetQServer, start it and operate on JMS regularly</p>
+
+     <ol>
+     
+        <li>Start the server</li>
+        <pre class="prettyprint">
+           hornetq = new HornetQBootstrapServer("./server0/hornetq-beans.xml");
+           hornetq.run();
+        </pre>
+     
+        <li>As we are not using a JNDI environment we instantiate the objects directly</li>
+        <pre class="prettyprint">
+           ServerLocator serverLocator = HornetQClient.createServerLocatorWithoutHA(new TransportConfiguration(NettyConnectorFactory.class.getName()));
+           ClientSessionFactory sf = serverLocator.createSessionFactory();
+        </pre>
+
+        <li>Create a Core Queue</li>
+        <pre class="prettyprint">
+           ClientSession coreSession = sf.createSession(false, false, false);
+           final String queueName = "queue.exampleQueue";
+           coreSession.createQueue(queueName, queueName, true);
+           coreSession.close();
+        </pre>
+
+        <li>Create the session and producer</li>
+        <pre class="prettyprint">
+           session = sf.createSession();
+                                   
+           ClientProducer producer = session.createProducer(queueName);
+        </pre>
+
+        <li>Create and send a Message</li>
+        <pre class="prettyprint">
+           ClientMessage message = session.createMessage(false);
+           message.putStringProperty(propName, "Hello sent at " + new Date());
+           System.out.println("Sending the message.");
+           producer.send(message);
+        </pre>
+
+        <li>Create the message consumer and start the connection</li>
+        <pre class="prettyprint">
+           ClientConsumer messageConsumer = session.createConsumer(queueName);
+           session.start();
+        </pre>
+
+        <li>Receive the message</li>
+        <pre class="prettyprint">
+           ClientMessage messageReceived = messageConsumer.receive(1000);
+           System.out.println("Received TextMessage:" + messageReceived.getProperty(propName));
+         </pre>
+
+        <li>Be sure to close our resources!</li>
+
+        <pre class="prettyprint">
+           if (sf != null)
+           {
+              sf.close();
+           }
+        </pre>
+
+        <li>Stop the server</li>
+
+        <pre class="prettyprint">
+           hornetq.shutdown();
+        </pre>
+     </ol>
+  </body>
+</html>

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/examples/core/microcontainer/src/main/java/org/hornetq/core/example/EmbeddedMicroContainerExample.java
----------------------------------------------------------------------
diff --git a/examples/core/microcontainer/src/main/java/org/hornetq/core/example/EmbeddedMicroContainerExample.java b/examples/core/microcontainer/src/main/java/org/hornetq/core/example/EmbeddedMicroContainerExample.java
new file mode 100644
index 0000000..ac5ace4
--- /dev/null
+++ b/examples/core/microcontainer/src/main/java/org/hornetq/core/example/EmbeddedMicroContainerExample.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright 2005-2014 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.
+ */
+package org.hornetq.core.example;
+
+import java.util.Date;
+
+import org.hornetq.api.core.TransportConfiguration;
+import org.hornetq.api.core.client.*;
+import org.hornetq.core.remoting.impl.netty.NettyConnectorFactory;
+import org.hornetq.integration.bootstrap.HornetQBootstrapServer;
+
+/**
+ *
+ * This example shows how to run a HornetQ core client and server embedded in your
+ * own application
+ *
+ * @author <a href="mailto:tim.fox@jboss.com">Tim Fox</a>
+ *
+ */
+public class EmbeddedMicroContainerExample
+{
+
+   public static void main(final String[] args) throws Exception
+   {
+
+      HornetQBootstrapServer hornetQ = null;
+      try
+      {
+
+         // Step 1. Start the server
+         hornetQ = new HornetQBootstrapServer("hornetq-beans.xml");
+         hornetQ.run();
+
+         // Step 2. As we are not using a JNDI environment we instantiate the objects directly
+         ServerLocator serverLocator = HornetQClient.createServerLocatorWithoutHA(new TransportConfiguration(NettyConnectorFactory.class.getName()));
+         ClientSessionFactory sf = serverLocator.createSessionFactory();
+
+         // Step 3. Create a core queue
+         ClientSession coreSession = sf.createSession(false, false, false);
+
+         final String queueName = "queue.exampleQueue";
+
+         coreSession.createQueue(queueName, queueName, true);
+
+         coreSession.close();
+
+         ClientSession session = null;
+
+         try
+         {
+
+            // Step 4. Create the session, and producer
+            session = sf.createSession();
+
+            ClientProducer producer = session.createProducer(queueName);
+
+            // Step 5. Create and send a message
+            ClientMessage message = session.createMessage(false);
+
+            final String propName = "myprop";
+
+            message.putStringProperty(propName, "Hello sent at " + new Date());
+
+            System.out.println("Sending the message.");
+
+            producer.send(message);
+
+            // Step 6. Create the message consumer and start the connection
+            ClientConsumer messageConsumer = session.createConsumer(queueName);
+            session.start();
+
+            // Step 7. Receive the message.
+            ClientMessage messageReceived = messageConsumer.receive(1000);
+
+            System.out.println("Received TextMessage:" + messageReceived.getStringProperty(propName));
+         }
+         finally
+         {
+            // Step 8. Be sure to close our resources!
+            if (sf != null)
+            {
+               sf.close();
+            }
+
+            // Step 9. Shutdown the container
+            if (hornetQ != null)
+            {
+               hornetQ.shutDown();
+            }
+         }
+      }
+      catch (Exception e)
+      {
+         e.printStackTrace();
+         throw e;
+      }
+   }
+}

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/examples/core/microcontainer/src/main/resources/hornetq-beans.xml
----------------------------------------------------------------------
diff --git a/examples/core/microcontainer/src/main/resources/hornetq-beans.xml b/examples/core/microcontainer/src/main/resources/hornetq-beans.xml
new file mode 100644
index 0000000..b68c7ae
--- /dev/null
+++ b/examples/core/microcontainer/src/main/resources/hornetq-beans.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+    <!-- MBean server -->
+   <bean name="MBeanServer" class="javax.management.MBeanServer">
+      <constructor factoryClass="java.lang.management.ManagementFactory"
+                   factoryMethod="getPlatformMBeanServer"/>
+   </bean>
+
+   <!-- The core configuration -->
+   <bean name="Configuration" class="org.hornetq.core.config.impl.FileConfiguration"/>
+
+   <!-- The security manager -->
+   <bean name="HornetQSecurityManager" class="org.hornetq.spi.core.security.HornetQSecurityManagerImpl">
+      <start ignored="true"/>
+      <stop ignored="true"/>
+   </bean>
+
+   <!-- The core server -->
+   <bean name="HornetQServer" class="org.hornetq.core.server.impl.HornetQServerImpl">
+      <constructor>
+         <parameter>
+            <inject bean="Configuration"/>
+         </parameter>
+         <parameter>
+            <inject bean="MBeanServer"/>
+         </parameter>
+         <parameter>
+            <inject bean="HornetQSecurityManager"/>
+         </parameter>
+      </constructor>
+   </bean>
+
+
+</deployment>

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/examples/core/microcontainer/src/main/resources/hornetq-configuration.xml
----------------------------------------------------------------------
diff --git a/examples/core/microcontainer/src/main/resources/hornetq-configuration.xml b/examples/core/microcontainer/src/main/resources/hornetq-configuration.xml
new file mode 100644
index 0000000..766b4b1
--- /dev/null
+++ b/examples/core/microcontainer/src/main/resources/hornetq-configuration.xml
@@ -0,0 +1,29 @@
+<configuration xmlns="urn:hornetq"
+            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+            xsi:schemaLocation="urn:hornetq /schema/hornetq-configuration.xsd">
+
+
+
+   <bindings-directory>target/data/messaging/bindings</bindings-directory>
+
+   <journal-directory>target/data/messaging/journal</journal-directory>
+
+   <large-messages-directory>target/data/messaging/largemessages</large-messages-directory>
+
+   <paging-directory>target/data/messaging/paging</paging-directory>
+
+   <!-- Acceptors -->
+   <acceptors>
+      <acceptor name="netty-acceptor">
+         <factory-class>org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory</factory-class>    
+         <param key="tcp-no-delay" value="false"/>
+         <param key="tcp-send-buffer-size" value="1048576"/>
+         <param key="tcp-receive-buffer-size" value="1048576"/>
+      </acceptor>
+   </acceptors>
+   
+   <security-enabled>false</security-enabled>
+   
+   <persistence-enabled>false</persistence-enabled>
+ 
+</configuration>

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/examples/core/perf/perf.properties
----------------------------------------------------------------------
diff --git a/examples/core/perf/perf.properties b/examples/core/perf/perf.properties
new file mode 100644
index 0000000..7e8b3d5
--- /dev/null
+++ b/examples/core/perf/perf.properties
@@ -0,0 +1,21 @@
+num-messages=100000
+num-warmup-messages=1000
+message-size=1024
+durable=false
+transacted=false
+batch-size=1048576
+drain-queue=false
+throttle-rate=-1
+address=perfAddress
+queue-name=perfQueue
+host=localhost
+port=5445
+tcp-buffer=2048576
+tcp-no-delay=false
+confirmation-window=1048576
+producer-window=1048576
+consumer-window=1048576
+pre-ack=false
+block-ack=false
+block-persistent=false
+use-send-acks=true

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/examples/core/perf/pom.xml
----------------------------------------------------------------------
diff --git a/examples/core/perf/pom.xml b/examples/core/perf/pom.xml
new file mode 100644
index 0000000..759a9bc
--- /dev/null
+++ b/examples/core/perf/pom.xml
@@ -0,0 +1,180 @@
+<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.examples.core</groupId>
+      <artifactId>core-examples</artifactId>
+      <version>2.5.0-SNAPSHOT</version>
+   </parent>
+
+   <artifactId>hornetq-core-perf-example</artifactId>
+   <packaging>jar</packaging>
+   <name>HornetQ Perf Example</name>
+
+   <dependencies>
+      <dependency>
+         <groupId>org.hornetq</groupId>
+         <artifactId>hornetq-core-client</artifactId>
+         <version>${project.version}</version>
+      </dependency>
+      <dependency>
+         <groupId>org.hornetq</groupId>
+         <artifactId>hornetq-commons</artifactId>
+         <version>${project.version}</version>
+      </dependency>
+      <dependency>
+         <groupId>io.netty</groupId>
+         <artifactId>netty-all</artifactId>
+         <version>${netty.version}</version>
+      </dependency>
+      <dependency>
+         <groupId>org.jboss.javaee</groupId>
+         <artifactId>jboss-jms-api</artifactId>
+         <version>1.1.0.GA</version>
+      </dependency>
+      <dependency>
+         <groupId>org.jboss.naming</groupId>
+         <artifactId>jnp-client</artifactId>
+         <version>5.0.5.Final</version>
+      </dependency>
+      <dependency>
+         <groupId>org.hornetq.examples.jms</groupId>
+         <artifactId>hornetq-jms-examples-common</artifactId>
+         <version>${project.version}</version>
+      </dependency>
+      <dependency>
+         <groupId>org.jboss.spec.javax.jms</groupId>
+         <artifactId>jboss-jms-api_2.0_spec</artifactId>
+      </dependency>
+   </dependencies>
+
+   <profiles>
+      <profile>
+         <id>default</id>
+         <activation>
+            <activeByDefault>true</activeByDefault>
+         </activation>
+         <build>
+            <plugins>
+               <plugin>
+                  <groupId>org.hornetq</groupId>
+                  <artifactId>hornetq-maven-plugin</artifactId>
+                  <executions>
+                     <execution>
+                        <id>start</id>
+                        <goals>
+                           <goal>start</goal>
+                        </goals>
+                        <configuration>
+                           <waitOnStart>true</waitOnStart>
+                           <hornetqConfigurationDir>${basedir}/target/classes/server0</hornetqConfigurationDir>
+                           <systemProperties>
+                              <property>
+                                 <name>build.directory</name>
+                                 <value>${basedir}/target/</value>
+                              </property>
+                           </systemProperties>
+                        </configuration>
+                     </execution>
+                  </executions>
+                  <configuration>
+                     <waitOnStart>false</waitOnStart>
+                     <hornetqConfigurationDir>${basedir}/target/classes/server0</hornetqConfigurationDir>
+                  </configuration>
+                  <dependencies>
+                     <dependency>
+                        <groupId>org.hornetq.examples.core</groupId>
+                        <artifactId>hornetq-core-perf-example</artifactId>
+                        <version>${project.version}</version>
+                     </dependency>
+                     <dependency>
+                        <groupId>org.hornetq</groupId>
+                        <artifactId>hornetq-core-client</artifactId>
+                        <version>${project.version}</version>
+                     </dependency>
+                     <dependency>
+                        <groupId>org.hornetq</groupId>
+                        <artifactId>hornetq-server</artifactId>
+                        <version>${project.version}</version>
+                     </dependency>
+                     <dependency>
+                        <groupId>org.hornetq</groupId>
+                        <artifactId>hornetq-jms-client</artifactId>
+                        <version>${project.version}</version>
+                     </dependency>
+                     <dependency>
+                        <groupId>org.hornetq</groupId>
+                        <artifactId>hornetq-jms-server</artifactId>
+                        <version>${project.version}</version>
+                     </dependency>
+                     <dependency>
+                        <groupId>io.netty</groupId>
+                        <artifactId>netty-all</artifactId>
+                        <version>${netty.version}</version>
+                     </dependency>
+                     <dependency>
+                        <groupId>org.jboss.javaee</groupId>
+                        <artifactId>jboss-jms-api</artifactId>
+                        <version>1.1.0.GA</version>
+                     </dependency>
+                     <dependency>
+                        <groupId>org.jboss.naming</groupId>
+                        <artifactId>jnpserver</artifactId>
+                        <version>5.0.3.GA</version>
+                     </dependency>
+                  </dependencies>
+               </plugin>
+            </plugins>
+         </build>
+      </profile>
+      <profile>
+         <id>listener</id>
+         <build>
+            <plugins>
+               <plugin>
+                  <groupId>org.codehaus.mojo</groupId>
+                  <artifactId>exec-maven-plugin</artifactId>
+                  <version>1.1</version>
+                  <executions>
+                     <execution>
+                        <phase>package</phase>
+                        <goals>
+                           <goal>java</goal>
+                        </goals>
+                     </execution>
+                  </executions>
+                  <configuration>
+                     <mainClass>org.hornetq.core.example.PerfListener</mainClass>
+                  </configuration>
+               </plugin>
+            </plugins>
+         </build>
+      </profile>
+      <profile>
+         <id>sender</id>
+         <build>
+            <plugins>
+               <plugin>
+                  <groupId>org.codehaus.mojo</groupId>
+                  <artifactId>exec-maven-plugin</artifactId>
+                  <version>1.1</version>
+                  <executions>
+                     <execution>
+                        <phase>package</phase>
+                        <goals>
+                           <goal>java</goal>
+                        </goals>
+                     </execution>
+                  </executions>
+                  <configuration>
+                     <mainClass>org.hornetq.core.example.PerfSender</mainClass>
+                  </configuration>
+               </plugin>
+            </plugins>
+         </build>
+      </profile>
+   </profiles>
+
+
+</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/examples/core/perf/src/main/java/org/hornetq/core/example/PerfBase.java
----------------------------------------------------------------------
diff --git a/examples/core/perf/src/main/java/org/hornetq/core/example/PerfBase.java b/examples/core/perf/src/main/java/org/hornetq/core/example/PerfBase.java
new file mode 100644
index 0000000..d837a7e
--- /dev/null
+++ b/examples/core/perf/src/main/java/org/hornetq/core/example/PerfBase.java
@@ -0,0 +1,550 @@
+/*
+ * Copyright 2005-2014 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.
+ */
+package org.hornetq.core.example;
+
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Random;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.atomic.AtomicLong;
+import java.util.logging.Logger;
+
+import org.hornetq.api.core.Message;
+import org.hornetq.api.core.TransportConfiguration;
+import org.hornetq.api.core.client.ClientConsumer;
+import org.hornetq.api.core.client.ClientMessage;
+import org.hornetq.api.core.client.ClientProducer;
+import org.hornetq.api.core.client.ClientSession;
+import org.hornetq.api.core.client.ClientSessionFactory;
+import org.hornetq.api.core.client.HornetQClient;
+import org.hornetq.api.core.client.MessageHandler;
+import org.hornetq.api.core.client.SendAcknowledgementHandler;
+import org.hornetq.api.core.client.ServerLocator;
+import org.hornetq.core.remoting.impl.netty.NettyConnectorFactory;
+import org.hornetq.core.remoting.impl.netty.TransportConstants;
+import org.hornetq.utils.TokenBucketLimiter;
+import org.hornetq.utils.TokenBucketLimiterImpl;
+
+/**
+ *
+ * A PerfBase
+ *
+ * @author <a href="mailto:tim.fox@jboss.com">Tim Fox</a>
+ *
+ *
+ */
+public abstract class PerfBase
+{
+   private static final Logger log = Logger.getLogger(PerfSender.class.getName());
+
+   private static final String DEFAULT_PERF_PROPERTIES_FILE_NAME = "perf.properties";
+
+   private static byte[] randomByteArray(final int length)
+   {
+      byte[] bytes = new byte[length];
+
+      Random random = new Random();
+
+      for (int i = 0; i < length; i++)
+      {
+         bytes[i] = Integer.valueOf(random.nextInt()).byteValue();
+      }
+
+      return bytes;
+   }
+
+   protected static String getPerfFileName(final String[] args)
+   {
+      String fileName;
+
+      if (args.length > 0)
+      {
+         fileName = args[0];
+      }
+      else
+      {
+         fileName = PerfBase.DEFAULT_PERF_PROPERTIES_FILE_NAME;
+      }
+
+      PerfBase.log.info("Using file name " + fileName);
+
+      return fileName;
+   }
+
+   protected static PerfParams getParams(final String fileName) throws Exception
+   {
+      Properties props = null;
+
+      InputStream is = null;
+
+      try
+      {
+         is = new FileInputStream(fileName);
+
+         props = new Properties();
+
+         props.load(is);
+      }
+      finally
+      {
+         if (is != null)
+         {
+            is.close();
+         }
+      }
+
+      int noOfMessages = Integer.valueOf(props.getProperty("num-messages"));
+      int noOfWarmupMessages = Integer.valueOf(props.getProperty("num-warmup-messages"));
+      int messageSize = Integer.valueOf(props.getProperty("message-size"));
+      boolean durable = Boolean.valueOf(props.getProperty("durable"));
+      boolean transacted = Boolean.valueOf(props.getProperty("transacted"));
+      int batchSize = Integer.valueOf(props.getProperty("batch-size"));
+      boolean drainQueue = Boolean.valueOf(props.getProperty("drain-queue"));
+      String queueName = props.getProperty("queue-name");
+      String address = props.getProperty("address");
+      int throttleRate = Integer.valueOf(props.getProperty("throttle-rate"));
+      String host = props.getProperty("host");
+      int port = Integer.valueOf(props.getProperty("port"));
+      int tcpBufferSize = Integer.valueOf(props.getProperty("tcp-buffer"));
+      boolean tcpNoDelay = Boolean.valueOf(props.getProperty("tcp-no-delay"));
+      boolean preAck = Boolean.valueOf(props.getProperty("pre-ack"));
+      int confirmationWindowSize = Integer.valueOf(props.getProperty("confirmation-window"));
+      int producerWindowSize = Integer.valueOf(props.getProperty("producer-window"));
+      int consumerWindowSize = Integer.valueOf(props.getProperty("consumer-window"));
+      boolean blockOnACK = Boolean.valueOf(props.getProperty("block-ack", "false"));
+      boolean blockOnPersistent = Boolean.valueOf(props.getProperty("block-persistent", "false"));
+      boolean useSendAcks = Boolean.valueOf(props.getProperty("use-send-acks", "false"));
+
+      PerfBase.log.info("num-messages: " + noOfMessages);
+      PerfBase.log.info("num-warmup-messages: " + noOfWarmupMessages);
+      PerfBase.log.info("message-size: " + messageSize);
+      PerfBase.log.info("durable: " + durable);
+      PerfBase.log.info("transacted: " + transacted);
+      PerfBase.log.info("batch-size: " + batchSize);
+      PerfBase.log.info("drain-queue: " + drainQueue);
+      PerfBase.log.info("address: " + address);
+      PerfBase.log.info("queue name: " + queueName);
+      PerfBase.log.info("throttle-rate: " + throttleRate);
+      PerfBase.log.info("host:" + host);
+      PerfBase.log.info("port: " + port);
+      PerfBase.log.info("tcp buffer: " + tcpBufferSize);
+      PerfBase.log.info("tcp no delay: " + tcpNoDelay);
+      PerfBase.log.info("pre-ack: " + preAck);
+      PerfBase.log.info("confirmation-window: " + confirmationWindowSize);
+      PerfBase.log.info("producer-window: " + producerWindowSize);
+      PerfBase.log.info("consumer-window: " + consumerWindowSize);
+      PerfBase.log.info("block-ack:" + blockOnACK);
+      PerfBase.log.info("block-persistent:" + blockOnPersistent);
+      PerfBase.log.info("use-send-acks:" + useSendAcks);
+
+      if (useSendAcks && confirmationWindowSize < 1)
+      {
+         throw new IllegalArgumentException("If you use send acks, then need to set confirmation-window-size to a positive integer");
+      }
+
+      PerfParams perfParams = new PerfParams();
+      perfParams.setNoOfMessagesToSend(noOfMessages);
+      perfParams.setNoOfWarmupMessages(noOfWarmupMessages);
+      perfParams.setMessageSize(messageSize);
+      perfParams.setDurable(durable);
+      perfParams.setSessionTransacted(transacted);
+      perfParams.setBatchSize(batchSize);
+      perfParams.setDrainQueue(drainQueue);
+      perfParams.setQueueName(queueName);
+      perfParams.setAddress(address);
+      perfParams.setThrottleRate(throttleRate);
+      perfParams.setHost(host);
+      perfParams.setPort(port);
+      perfParams.setTcpBufferSize(tcpBufferSize);
+      perfParams.setTcpNoDelay(tcpNoDelay);
+      perfParams.setPreAck(preAck);
+      perfParams.setConfirmationWindow(confirmationWindowSize);
+      perfParams.setProducerWindow(producerWindowSize);
+      perfParams.setConsumerWindow(consumerWindowSize);
+      perfParams.setBlockOnACK(blockOnACK);
+      perfParams.setBlockOnPersistent(blockOnPersistent);
+      perfParams.setUseSendAcks(useSendAcks);
+
+      return perfParams;
+   }
+
+   private final PerfParams perfParams;
+
+   protected PerfBase(final PerfParams perfParams)
+   {
+      this.perfParams = perfParams;
+   }
+
+   private ClientSessionFactory factory;
+
+   private long start;
+
+   private void init(final boolean transacted, final String queueName) throws Exception
+   {
+      Map<String, Object> params = new HashMap<String, Object>();
+
+      params.put(TransportConstants.TCP_NODELAY_PROPNAME, perfParams.isTcpNoDelay());
+      params.put(TransportConstants.TCP_SENDBUFFER_SIZE_PROPNAME, perfParams.getTcpBufferSize());
+      params.put(TransportConstants.TCP_RECEIVEBUFFER_SIZE_PROPNAME, perfParams.getTcpBufferSize());
+
+      params.put(TransportConstants.HOST_PROP_NAME, perfParams.getHost());
+      params.put(TransportConstants.PORT_PROP_NAME, perfParams.getPort());
+
+      ServerLocator serverLocator = HornetQClient.createServerLocatorWithoutHA(new TransportConfiguration(NettyConnectorFactory.class.getName(), params));
+      serverLocator.setPreAcknowledge(perfParams.isPreAck());
+      serverLocator.setConfirmationWindowSize(perfParams.getConfirmationWindow());
+      serverLocator.setProducerWindowSize(perfParams.getProducerWindow());
+      serverLocator.setConsumerWindowSize(perfParams.getConsumerWindow());
+      serverLocator.setAckBatchSize(perfParams.getBatchSize());
+
+      serverLocator.setBlockOnAcknowledge(perfParams.isBlockOnACK());
+      serverLocator.setBlockOnDurableSend(perfParams.isBlockOnPersistent());
+      factory = serverLocator.createSessionFactory();
+
+   }
+
+   private void displayAverage(final long numberOfMessages, final long start, final long end)
+   {
+      double duration = (1.0 * end - start) / 1000; // in seconds
+      double average = 1.0 * numberOfMessages / duration;
+      PerfBase.log.info(String.format("average: %.2f msg/s (%d messages in %2.2fs)",
+                                      average,
+                                      numberOfMessages,
+                                      duration));
+   }
+
+   protected void runSender()
+   {
+      try
+      {
+         PerfBase.log.info("params = " + perfParams);
+
+         init(perfParams.isSessionTransacted(), perfParams.getQueueName());
+
+         if (perfParams.isDrainQueue())
+         {
+            drainQueue();
+         }
+
+         start = System.currentTimeMillis();
+         PerfBase.log.info("warming up by sending " + perfParams.getNoOfWarmupMessages() + " messages");
+         sendMessages(perfParams.getNoOfWarmupMessages(),
+                      perfParams.getBatchSize(),
+                      perfParams.isDurable(),
+                      perfParams.isSessionTransacted(),
+                      false,
+                      perfParams.getThrottleRate(),
+                      perfParams.getMessageSize(),
+                      perfParams.isUseSendAcks());
+         PerfBase.log.info("warmed up");
+         start = System.currentTimeMillis();
+         sendMessages(perfParams.getNoOfMessagesToSend(),
+                      perfParams.getBatchSize(),
+                      perfParams.isDurable(),
+                      perfParams.isSessionTransacted(),
+                      true,
+                      perfParams.getThrottleRate(),
+                      perfParams.getMessageSize(),
+                      perfParams.isUseSendAcks());
+         long end = System.currentTimeMillis();
+         displayAverage(perfParams.getNoOfMessagesToSend(), start, end);
+      }
+      catch (Exception e)
+      {
+         e.printStackTrace();
+      }
+   }
+
+   protected void runListener()
+   {
+      ClientSession session = null;
+
+      try
+      {
+         init(perfParams.isSessionTransacted(), perfParams.getQueueName());
+
+         session = factory.createSession(!perfParams.isSessionTransacted(), !perfParams.isSessionTransacted());
+
+         if (perfParams.isDrainQueue())
+         {
+            drainQueue();
+         }
+
+         ClientConsumer consumer = session.createConsumer(perfParams.getQueueName());
+
+         session.start();
+
+         PerfBase.log.info("READY!!!");
+
+         CountDownLatch countDownLatch = new CountDownLatch(1);
+         consumer.setMessageHandler(new PerfListener(session, countDownLatch, perfParams));
+         countDownLatch.await();
+         long end = System.currentTimeMillis();
+         // start was set on the first received message
+         displayAverage(perfParams.getNoOfMessagesToSend(), start, end);
+      }
+      catch (Exception e)
+      {
+         e.printStackTrace();
+      }
+      finally
+      {
+         if (factory != null)
+         {
+            try
+            {
+               factory.close();
+            }
+            catch (Exception e)
+            {
+               e.printStackTrace();
+            }
+         }
+      }
+   }
+
+   private void drainQueue() throws Exception
+   {
+      PerfBase.log.info("Draining queue");
+
+      ClientSession session = null;
+
+      try
+      {
+         session = factory.createSession();
+
+         ClientConsumer consumer = session.createConsumer(perfParams.getQueueName());
+
+         session.start();
+
+         ClientMessage message = null;
+
+         int count = 0;
+         do
+         {
+            message = consumer.receive(3000);
+
+            if (message != null)
+            {
+               message.acknowledge();
+
+               count++;
+            }
+         }
+         while (message != null);
+
+         PerfBase.log.info("Drained " + count + " messages");
+      }
+      finally
+      {
+         if (session != null)
+         {
+            session.close();
+         }
+      }
+   }
+
+   private void sendMessages(final int numberOfMessages,
+                             final int txBatchSize,
+                             final boolean durable,
+                             final boolean transacted,
+                             final boolean display,
+                             final int throttleRate,
+                             final int messageSize,
+                             final boolean useSendAcks) throws Exception
+   {
+      ClientSession session = null;
+
+      try
+      {
+         session = factory.createSession(!transacted, !transacted);
+
+         CountDownLatch theLatch = null;
+
+         if (useSendAcks)
+         {
+            final CountDownLatch latch = new CountDownLatch(numberOfMessages);
+
+            class MySendAckHandler implements SendAcknowledgementHandler
+            {
+               public void sendAcknowledged(Message message)
+               {
+                  latch.countDown();
+               }
+            }
+
+            session.setSendAcknowledgementHandler(new MySendAckHandler());
+
+            theLatch = latch;
+         }
+
+         ClientProducer producer = session.createProducer(perfParams.getAddress());
+
+         ClientMessage message = session.createMessage(durable);
+
+         byte[] payload = PerfBase.randomByteArray(messageSize);
+
+         message.getBodyBuffer().writeBytes(payload);
+
+         final int modulo = 2000;
+
+         TokenBucketLimiter tbl = throttleRate != -1 ? new TokenBucketLimiterImpl(throttleRate, false) : null;
+
+         boolean committed = false;
+
+         for (int i = 1; i <= numberOfMessages; i++)
+         {
+            producer.send(message);
+
+            if (transacted)
+            {
+               if (i % txBatchSize == 0)
+               {
+                  session.commit();
+                  committed = true;
+               }
+               else
+               {
+                  committed = false;
+               }
+            }
+            if (display && i % modulo == 0)
+            {
+               double duration = (1.0 * System.currentTimeMillis() - start) / 1000;
+               PerfBase.log.info(String.format("sent %6d messages in %2.2fs", i, duration));
+            }
+
+            // log.info("sent message " + i);
+
+            if (tbl != null)
+            {
+               tbl.limit();
+            }
+         }
+
+         if (transacted && !committed)
+         {
+            session.commit();
+         }
+
+         session.close();
+
+         if (useSendAcks)
+         {
+            theLatch.await();
+         }
+      }
+      finally
+      {
+         if (session != null)
+         {
+            session.close();
+         }
+      }
+   }
+
+   private class PerfListener implements MessageHandler
+   {
+      private final CountDownLatch countDownLatch;
+
+      private final PerfParams perfParams;
+
+      private boolean warmingUp = true;
+
+      private boolean started = false;
+
+      private final int modulo;
+
+      private final AtomicLong count = new AtomicLong(0);
+
+      private final ClientSession session;
+
+      public PerfListener(final ClientSession session, final CountDownLatch countDownLatch, final PerfParams perfParams)
+      {
+         this.session = session;
+         this.countDownLatch = countDownLatch;
+         this.perfParams = perfParams;
+         warmingUp = perfParams.getNoOfWarmupMessages() > 0;
+         modulo = 2000;
+      }
+
+      public void onMessage(final ClientMessage message)
+      {
+         try
+         {
+            if (warmingUp)
+            {
+               boolean committed = checkCommit(session);
+               if (count.incrementAndGet() == perfParams.getNoOfWarmupMessages())
+               {
+                  PerfBase.log.info("warmed up after receiving " + count.longValue() + " msgs");
+                  if (!committed)
+                  {
+                     checkCommit(session);
+                  }
+                  warmingUp = false;
+               }
+               return;
+            }
+
+            if (!started)
+            {
+               started = true;
+               // reset count to take stats
+               count.set(0);
+               start = System.currentTimeMillis();
+            }
+
+            message.acknowledge();
+
+            long currentCount = count.incrementAndGet();
+            boolean committed = checkCommit(session);
+            if (currentCount == perfParams.getNoOfMessagesToSend())
+            {
+               if (!committed)
+               {
+                  checkCommit(session);
+               }
+               countDownLatch.countDown();
+            }
+            if (currentCount % modulo == 0)
+            {
+               double duration = (1.0 * System.currentTimeMillis() - start) / 1000;
+               PerfBase.log.info(String.format("received %6d messages in %2.2fs", currentCount, duration));
+            }
+         }
+         catch (Exception e)
+         {
+            e.printStackTrace();
+         }
+      }
+
+      private boolean checkCommit(final ClientSession session) throws Exception
+      {
+         if (perfParams.isSessionTransacted())
+         {
+            if (count.longValue() % perfParams.getBatchSize() == 0)
+            {
+               session.commit();
+
+               return true;
+            }
+         }
+         return false;
+      }
+   }
+
+}

http://git-wip-us.apache.org/repos/asf/activemq-6/blob/8ecd255f/examples/core/perf/src/main/java/org/hornetq/core/example/PerfListener.java
----------------------------------------------------------------------
diff --git a/examples/core/perf/src/main/java/org/hornetq/core/example/PerfListener.java b/examples/core/perf/src/main/java/org/hornetq/core/example/PerfListener.java
new file mode 100644
index 0000000..355aa0c
--- /dev/null
+++ b/examples/core/perf/src/main/java/org/hornetq/core/example/PerfListener.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2005-2014 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.
+ */
+package org.hornetq.core.example;
+
+import java.util.logging.Logger;
+
+/**
+ *
+ * A PerfListener
+ *
+ * @author <a href="mailto:tim.fox@jboss.com">Tim Fox</a>
+ *
+ *
+ */
+public class PerfListener extends PerfBase
+{
+   private static final Logger log = Logger.getLogger(PerfListener.class.getName());
+
+   public static void main(final String[] args)
+   {
+      try
+      {
+         String fileName = PerfBase.getPerfFileName(args);
+
+         PerfParams params = PerfBase.getParams(fileName);
+
+         new PerfListener(params).run();
+      }
+      catch (Exception e)
+      {
+         e.printStackTrace();
+      }
+   }
+
+   private PerfListener(final PerfParams perfParams)
+   {
+      super(perfParams);
+   }
+
+   public void run() throws Exception
+   {
+      runListener();
+   }
+
+}


Mime
View raw message