You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2010/06/07 06:25:50 UTC

svn commit: r952085 - /camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsBatchResequencerJMSPriorityTest.java

Author: davsclaus
Date: Mon Jun  7 04:25:50 2010
New Revision: 952085

URL: http://svn.apache.org/viewvc?rev=952085&view=rev
Log:
CAMEL-2537: Added JMS example of using resequencer to reorder messages based on JMSPriority

Added:
    camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsBatchResequencerJMSPriorityTest.java
      - copied, changed from r952077, camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsFilterTest.java

Copied: camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsBatchResequencerJMSPriorityTest.java (from r952077, camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsFilterTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsBatchResequencerJMSPriorityTest.java?p2=camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsBatchResequencerJMSPriorityTest.java&p1=camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsFilterTest.java&r1=952077&r2=952085&rev=952085&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsFilterTest.java (original)
+++ camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsBatchResequencerJMSPriorityTest.java Mon Jun  7 04:25:50 2010
@@ -14,70 +14,66 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.component.jms; 
+package org.apache.camel.component.jms;
 
 import javax.jms.ConnectionFactory;
 
 import org.apache.activemq.ActiveMQConnectionFactory;
 import org.apache.camel.CamelContext;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.Produce;
-import org.apache.camel.ProducerTemplate;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.CamelTestSupport;
 
+import static org.apache.camel.component.jms.JmsComponent.jmsComponentClientAcknowledge;
+
 /**
- * Tests filtering using Camel Test
+ * JMSPriority being ordered using the resequencer in batch mode.
+ * 
  * @version $Revision: 724291 $
  */
-// START SNIPPET: example
-public class JmsFilterTest extends CamelTestSupport {
-
-    @EndpointInject(uri = "mock:result")
-    protected MockEndpoint resultEndpoint;
-
-    @Produce(uri = "direct:start")
-    protected ProducerTemplate template;
-
-    public void testSendMatchingMessage() throws Exception {
-        String expectedBody = "<matched/>";
-
-        resultEndpoint.expectedBodiesReceived(expectedBody);
-
-        template.sendBodyAndHeader(expectedBody, "foo", "bar");
-
-        resultEndpoint.assertIsSatisfied();
-    }
-
-    public void testSendNotMatchingMessage() throws Exception {
-        resultEndpoint.expectedMessageCount(0);
-
-        template.sendBodyAndHeader("<notMatched/>", "foo", "notMatchedHeaderValue");
+public class JmsBatchResequencerJMSPriorityTest extends CamelTestSupport {
+    
+    public void testBatchResequencerJMSPriority() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:result");
+        mock.expectedBodiesReceived("G", "A", "B", "E", "H", "C", "D", "F");
+
+        // must use preserveMessageQos=true to be able to specify the JMSPriority to be used
+        template.sendBodyAndHeader("jms:queue:foo?preserveMessageQos=true", "A", "JMSPriority", 6);
+        template.sendBodyAndHeader("jms:queue:foo?preserveMessageQos=true", "B", "JMSPriority", 6);
+        template.sendBodyAndHeader("jms:queue:foo?preserveMessageQos=true", "C", "JMSPriority", 4);
+        template.sendBodyAndHeader("jms:queue:foo?preserveMessageQos=true", "D", "JMSPriority", 4);
+        template.sendBodyAndHeader("jms:queue:foo?preserveMessageQos=true", "E", "JMSPriority", 6);
+        template.sendBodyAndHeader("jms:queue:foo?preserveMessageQos=true", "F", "JMSPriority", 4);
+        template.sendBodyAndHeader("jms:queue:foo?preserveMessageQos=true", "G", "JMSPriority", 8);
+        template.sendBodyAndHeader("jms:queue:foo?preserveMessageQos=true", "H", "JMSPriority", 6);
 
-        resultEndpoint.assertIsSatisfied();
+        assertMockEndpointsSatisfied();
     }
     
     protected CamelContext createCamelContext() throws Exception {
         CamelContext camelContext = super.createCamelContext();
-        
-        // connect to embedded ActiveMQ JMS broker
-        ConnectionFactory connectionFactory = 
-            new ActiveMQConnectionFactory("vm://localhost");
-        camelContext.addComponent("jms",
-            JmsComponent.jmsComponentAutoAcknowledge(connectionFactory));
+
+        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("vm://localhost?broker.persistent=false");
+        camelContext.addComponent("jms", jmsComponentClientAcknowledge(connectionFactory));
 
         return camelContext;
     }
-    
+
     @Override
-    protected RouteBuilder createRouteBuilder() {
+    protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
-            public void configure() {
-                from("direct:start").to("jms:myQueue");
-                from("jms:myQueue").filter(header("foo").isEqualTo("bar")).to("mock:result");
+            @Override
+            public void configure() throws Exception {
+                // START SNIPPET: e1
+                from("jms:queue:foo")
+                    // sort by JMSPriority by allowing duplicates (message can have same JMSPriority)
+                    // and use reverse ordering so 9 is first output (most important), and 0 is last
+                    // use batch mode and fire every 3th second
+                    .resequence(header("JMSPriority")).batch().timeout(3000).allowDuplicates().reverse()
+                    .to("mock:result");
+                // END SNIPPET: e1
             }
         };
     }
-}
-// END SNIPPET: example
+
+}
\ No newline at end of file