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


Reply via email to