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 2012/11/21 10:08:52 UTC
svn commit: r1412023 - in /camel/branches/camel-2.10.x: ./
components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/
components/camel-jms/src/test/java/org/apache/camel/component/jms/
Author: davsclaus
Date: Wed Nov 21 09:08:52 2012
New Revision: 1412023
URL: http://svn.apache.org/viewvc?rev=1412023&view=rev
Log:
CAMEL-5809: camel-jms request/reply over JMS allow to use concurrentConsumers/maxConcurrentConsumers options.
Added:
camel/branches/camel-2.10.x/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRequestReplyExclusiveReplyToConcurrentTest.java
- copied unchanged from r1411664, camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsRequestReplyExclusiveReplyToConcurrentTest.java
Modified:
camel/branches/camel-2.10.x/ (props changed)
camel/branches/camel-2.10.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/MessageSelectorCreator.java
camel/branches/camel-2.10.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/PersistentQueueReplyManager.java
camel/branches/camel-2.10.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyManager.java
Propchange: camel/branches/camel-2.10.x/
------------------------------------------------------------------------------
Merged /camel/trunk:r1411664
Propchange: camel/branches/camel-2.10.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: camel/branches/camel-2.10.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/MessageSelectorCreator.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/MessageSelectorCreator.java?rev=1412023&r1=1412022&r2=1412023&view=diff
==============================================================================
--- camel/branches/camel-2.10.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/MessageSelectorCreator.java (original)
+++ camel/branches/camel-2.10.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/MessageSelectorCreator.java Wed Nov 21 09:08:52 2012
@@ -29,7 +29,7 @@ public class MessageSelectorCreator impl
protected static final Logger LOG = LoggerFactory.getLogger(MessageSelectorCreator.class);
protected final CorrelationTimeoutMap timeoutMap;
protected final ConcurrentSkipListSet<String> correlationIds;
- protected boolean dirty = true;
+ protected volatile boolean dirty = true;
protected StringBuilder expression;
public MessageSelectorCreator(CorrelationTimeoutMap timeoutMap) {
Modified: camel/branches/camel-2.10.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/PersistentQueueReplyManager.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/PersistentQueueReplyManager.java?rev=1412023&r1=1412022&r2=1412023&view=diff
==============================================================================
--- camel/branches/camel-2.10.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/PersistentQueueReplyManager.java (original)
+++ camel/branches/camel-2.10.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/PersistentQueueReplyManager.java Wed Nov 21 09:08:52 2012
@@ -174,8 +174,10 @@ public class PersistentQueueReplyManager
answer.setMessageListener(this);
answer.setPubSubDomain(false);
answer.setSubscriptionDurable(false);
- answer.setConcurrentConsumers(1);
- answer.setMaxConcurrentConsumers(1);
+ answer.setConcurrentConsumers(endpoint.getConcurrentConsumers());
+ if (endpoint.getMaxConcurrentConsumers() > 0) {
+ answer.setMaxConcurrentConsumers(endpoint.getMaxConcurrentConsumers());
+ }
answer.setConnectionFactory(endpoint.getConnectionFactory());
String clientId = endpoint.getClientId();
if (clientId != null) {
@@ -205,8 +207,20 @@ public class PersistentQueueReplyManager
// setup a bean name which is used ny Spring JMS as the thread name
String name = "PersistentQueueReplyManager[" + answer.getDestinationName() + "]";
- name = endpoint.getCamelContext().getExecutorServiceManager().resolveThreadName(name);
- answer.setBeanName(name);
+ String beanName = endpoint.getCamelContext().getExecutorServiceManager().resolveThreadName(name);
+ answer.setBeanName(beanName);
+
+ if (answer.getConcurrentConsumers() > 1) {
+ if (ReplyToType.Shared == type) {
+ // warn if using concurrent consumer with shared reply queue as that may not work properly
+ log.warn("Using {}-{} concurrent consumer on {} with shared queue {} may not work properly with all message brokers.",
+ new Object[]{answer.getConcurrentConsumers(), answer.getMaxConcurrentConsumers(), name, endpoint.getReplyTo()});
+ } else {
+ // log that we are using concurrent consumers
+ log.info("Using {}-{} concurrent consumers on {}",
+ new Object[]{answer.getConcurrentConsumers(), answer.getMaxConcurrentConsumers(), name});
+ }
+ }
return answer;
}
Modified: camel/branches/camel-2.10.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyManager.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyManager.java?rev=1412023&r1=1412022&r2=1412023&view=diff
==============================================================================
--- camel/branches/camel-2.10.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyManager.java (original)
+++ camel/branches/camel-2.10.x/components/camel-jms/src/main/java/org/apache/camel/component/jms/reply/TemporaryQueueReplyManager.java Wed Nov 21 09:08:52 2012
@@ -102,8 +102,10 @@ public class TemporaryQueueReplyManager
answer.setMessageListener(this);
answer.setPubSubDomain(false);
answer.setSubscriptionDurable(false);
- answer.setConcurrentConsumers(1);
- answer.setMaxConcurrentConsumers(1);
+ answer.setConcurrentConsumers(endpoint.getConcurrentConsumers());
+ if (endpoint.getMaxConcurrentConsumers() > 0) {
+ answer.setMaxConcurrentConsumers(endpoint.getMaxConcurrentConsumers());
+ }
answer.setConnectionFactory(endpoint.getConnectionFactory());
String clientId = endpoint.getClientId();
if (clientId != null) {
@@ -133,9 +135,14 @@ public class TemporaryQueueReplyManager
// setup a bean name which is used ny Spring JMS as the thread name
String name = "TemporaryQueueReplyManager[" + answer.getDestinationName() + "]";
- name = endpoint.getCamelContext().getExecutorServiceManager().resolveThreadName(name);
- answer.setBeanName(name);
+ String beanName = endpoint.getCamelContext().getExecutorServiceManager().resolveThreadName(name);
+ answer.setBeanName(beanName);
+ if (answer.getConcurrentConsumers() > 1) {
+ // log that we are using concurrent consumers
+ log.info("Using {}-{} concurrent consumers on {}",
+ new Object[]{answer.getConcurrentConsumers(), answer.getMaxConcurrentConsumers(), name});
+ }
return answer;
}