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