You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2010/03/08 14:32:56 UTC
svn commit: r920319 - in /camel/trunk/components/camel-jms/src:
main/java/org/apache/camel/component/jms/JmsPollingConsumer.java
test/java/org/apache/camel/component/jms/JmsSelectorOptionTest.java
Author: ningjiang
Date: Mon Mar 8 13:32:56 2010
New Revision: 920319
URL: http://svn.apache.org/viewvc?rev=920319&view=rev
Log:
CAMEL-2529 Fix the issue of ConsumerTemplate don't support the jms uri with selector
Modified:
camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsPollingConsumer.java
camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSelectorOptionTest.java
Modified: camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsPollingConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsPollingConsumer.java?rev=920319&r1=920318&r2=920319&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsPollingConsumer.java (original)
+++ camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/JmsPollingConsumer.java Mon Mar 8 13:32:56 2010
@@ -28,10 +28,12 @@
*/
public class JmsPollingConsumer extends PollingConsumerSupport {
private JmsOperations template;
+ private JmsEndpoint jmsEndpoint;
private final boolean spring20x;
public JmsPollingConsumer(JmsEndpoint endpoint, JmsOperations template) {
super(endpoint);
+ this.jmsEndpoint = endpoint;
this.template = template;
this.spring20x = JmsHelper.isSpring20x();
}
@@ -68,7 +70,13 @@
public Exchange receive(long timeout) {
setReceiveTimeout(timeout);
- Message message = template.receive();
+ Message message = null;
+ // using the selector
+ if (jmsEndpoint.getSelector() != null && jmsEndpoint.getSelector().length() > 0) {
+ message = template.receiveSelected(jmsEndpoint.getSelector());
+ } else {
+ message = template.receive();
+ }
if (message != null) {
return getEndpoint().createExchange(message);
}
Modified: camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSelectorOptionTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSelectorOptionTest.java?rev=920319&r1=920318&r2=920319&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSelectorOptionTest.java (original)
+++ camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsSelectorOptionTest.java Mon Mar 8 13:32:56 2010
@@ -20,6 +20,8 @@
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.camel.CamelContext;
+import org.apache.camel.Exchange;
+import org.apache.camel.Message;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.test.junit4.CamelTestSupport;
@@ -53,6 +55,28 @@
template.sendBodyAndHeader("activemq:queue:hello", "Message2", "SIZE_NUMBER", 1600);
assertMockEndpointsSatisfied();
}
+
+ @Test
+ public void testConsumerTemplate() throws Exception {
+ template.sendBodyAndHeader("activemq:queue:consumer", "Message1", "SIZE_NUMBER", 1505);
+ template.sendBodyAndHeader("activemq:queue:consumer", "Message3", "SIZE_NUMBER", 1300);
+ template.sendBodyAndHeader("activemq:queue:consumer", "Message2", "SIZE_NUMBER", 1600);
+
+ // process every exchange which is ready. If no exchange is left break
+ // the loop
+ while (true) {
+ Exchange ex = consumer.receiveNoWait("activemq:queue:consumer?selector=SIZE_NUMBER<1500");
+ if (ex != null) {
+ Message message = ex.getIn();
+ int size = message.getHeader("SIZE_NUMBER", int.class);
+ assertTrue("The message header SIZE_NUMBER should be less than 1500", size < 1500);
+ assertEquals("The message body is wrong", "Message3", message.getBody());
+ } else {
+ break;
+ }
+ }
+
+ }
protected CamelContext createCamelContext() throws Exception {
CamelContext camelContext = super.createCamelContext();