Author: ningjiang
Date: Tue Dec 9 05:32:33 2008
New Revision: 724684
URL: http://svn.apache.org/viewvc?rev=724684&view=rev
Log:
Merged revisions 724681 via svnmerge from
https://svn.apache.org/repos/asf/activemq/camel/trunk
........
r724681 | ningjiang | 2008-12-09 21:04:14 +0800 (Tue, 09 Dec 2008) | 1 line
CAMEL-1161, CAMEL-1162 did refactoring work loadbalance
........
Modified:
activemq/camel/branches/camel-1.x/ (props changed)
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/model/loadbalancer/LoadBalancerType.java
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/model/loadbalancer/StickyLoadBalanceStrategy.java
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/model/loadbalancer/TopicLoadBalanceStrategy.java
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/LoadBalancer.java
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/QueueLoadBalancer.java
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/TopicLoadBalancer.java
activemq/camel/branches/camel-1.x/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaInOutRouteTextLineDelimiterTest.java
(props changed)
activemq/camel/branches/camel-1.x/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaNoResponseFromServerTest.java
(props changed)
activemq/camel/branches/camel-1.x/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTcpLineDelimiterUsingPlainSocketTest.java
(props changed)
activemq/camel/branches/camel-1.x/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTcpTextlineDelimiterTest.java
(props changed)
Propchange: activemq/camel/branches/camel-1.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Dec 9 05:32:33 2008
@@ -1 +1 @@
-/activemq/camel/trunk:709850,711200,711206,711219-711220,711523,711531,711756,711784,711859,711874,711962,711971,712064,712119,712148,712662,712692,712925,713013,713107,713136,713273,713290,713292,713295,713314,713475,713625,713932,713944,714032,717965,717989,718242,718273,718312-718515,719163-719184,719334,719339,719524,719662,719848,719851,719855,719864,719978-719979,720207,720435-720437,720806,721272,721331,721333-721334,721360,721669,721764,721813,721985,722005,722070,722110,722415,722438,722726,722845,722878,723264,723314,723325-723327,723409,723835,723966,724122,724619
+/activemq/camel/trunk:709850,711200,711206,711219-711220,711523,711531,711756,711784,711859,711874,711962,711971,712064,712119,712148,712662,712692,712925,713013,713107,713136,713273,713290,713292,713295,713314,713475,713625,713932,713944,714032,717965,717989,718242,718273,718312-718515,719163-719184,719334,719339,719524,719662,719848,719851,719855,719864,719978-719979,720207,720435-720437,720806,721272,721331,721333-721334,721360,721669,721764,721813,721985,722005,722070,722110,722415,722438,722726,722845,722878,723264,723314,723325-723327,723409,723835,723966,724122,724619,724681
Propchange: activemq/camel/branches/camel-1.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified:
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/model/loadbalancer/LoadBalancerType.java
URL:
http://svn.apache.org/viewvc/activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/model/loadbalancer/LoadBalancerType.java?rev=724684&r1=724683&r2=724684&view=diff
==============================================================================
---
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/model/loadbalancer/LoadBalancerType.java
(original)
+++
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/model/loadbalancer/LoadBalancerType.java
Tue Dec 9 05:32:33 2008
@@ -23,6 +23,7 @@
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;
+import org.apache.camel.AsyncCallback;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.model.IdentifiedType;
@@ -131,4 +132,20 @@
loadBalancer.process(exchange);
}
+ public boolean process(Exchange exchange, final AsyncCallback callback) {
+ ObjectHelper.notNull(loadBalancer, "loadBalancer");
+
+ return loadBalancer.process(exchange, new AsyncCallback() {
+ public void done(boolean doneSynchronously) {
+ // Only handle the async case...
+ if (doneSynchronously) {
+ return;
+ } else {
+ callback.done(doneSynchronously);
+ }
+ }
+ });
+
+ }
+
}
Modified:
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/model/loadbalancer/StickyLoadBalanceStrategy.java
URL:
http://svn.apache.org/viewvc/activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/model/loadbalancer/StickyLoadBalanceStrategy.java?rev=724684&r1=724683&r2=724684&view=diff
==============================================================================
---
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/model/loadbalancer/StickyLoadBalanceStrategy.java
(original)
+++
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/model/loadbalancer/StickyLoadBalanceStrategy.java
Tue Dec 9 05:32:33 2008
@@ -32,7 +32,7 @@
public class StickyLoadBalanceStrategy extends LoadBalancerType {
@XmlElement(required = true, name = "expression", type =
ExpressionType.class)
private ExpressionType expressionType;
- @XmlElement(required = false, name = "loadBalancer", type =
ExpressionType.class)
+ @XmlElement(required = false, name = "loadBalancer", type =
LoadBalancerType.class)
private LoadBalancerType loadBalancerType;
public StickyLoadBalanceStrategy() {
Modified:
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/model/loadbalancer/TopicLoadBalanceStrategy.java
URL:
http://svn.apache.org/viewvc/activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/model/loadbalancer/TopicLoadBalanceStrategy.java?rev=724684&r1=724683&r2=724684&view=diff
==============================================================================
---
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/model/loadbalancer/TopicLoadBalanceStrategy.java
(original)
+++
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/model/loadbalancer/TopicLoadBalanceStrategy.java
Tue Dec 9 05:32:33 2008
@@ -23,6 +23,7 @@
/**
* Represents an XML <topic/> element
+ * @deprecated
*/
@XmlRootElement(name = "topic")
public class TopicLoadBalanceStrategy extends LoadBalancerType {
Modified:
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/LoadBalancer.java
URL:
http://svn.apache.org/viewvc/activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/LoadBalancer.java?rev=724684&r1=724683&r2=724684&view=diff
==============================================================================
---
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/LoadBalancer.java
(original)
+++
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/LoadBalancer.java
Tue Dec 9 05:32:33 2008
@@ -18,6 +18,7 @@
import java.util.List;
+import org.apache.camel.AsyncProcessor;
import org.apache.camel.Processor;
/**
@@ -25,7 +26,7 @@
*
* @version $Revision$
*/
-public interface LoadBalancer extends Processor {
+public interface LoadBalancer extends AsyncProcessor {
/**
* Adds a new processor to the load balancer
*
Modified:
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/QueueLoadBalancer.java
URL:
http://svn.apache.org/viewvc/activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/QueueLoadBalancer.java?rev=724684&r1=724683&r2=724684&view=diff
==============================================================================
---
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/QueueLoadBalancer.java
(original)
+++
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/QueueLoadBalancer.java
Tue Dec 9 05:32:33 2008
@@ -18,6 +18,8 @@
import java.util.List;
+import org.apache.camel.AsyncCallback;
+import org.apache.camel.AsyncProcessor;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
@@ -41,6 +43,41 @@
processor.process(exchange);
}
}
+
+ public boolean process(final Exchange exchange, final AsyncCallback
callback) {
+ boolean sync = false;
+ List<Processor> list = getProcessors();
+ if (list.isEmpty()) {
+ throw new IllegalStateException("No processors available to
process " + exchange);
+ }
+ Processor processor = chooseProcessor(list, exchange);
+ if (processor == null) {
+ throw new IllegalStateException("No processors could be chosen to
process " + exchange);
+ } else {
+ if (processor instanceof AsyncProcessor) {
+ AsyncProcessor asyncProcessor = (AsyncProcessor)processor;
+ sync = asyncProcessor.process(exchange, new AsyncCallback() {
+ public void done(boolean sync) {
+ // Only handle the async case...
+ if (sync) {
+ return;
+ } else {
+ callback.done(sync);
+ }
+ }
+ });
+ } else {
+ try {
+ processor.process(exchange);
+ } catch (Exception ex) {
+ exchange.setException(ex);
+ }
+ callback.done(false);
+ }
+ }
+ return sync;
+
+ }
protected abstract Processor chooseProcessor(List<Processor> processors,
Exchange exchange);
}
Modified:
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/TopicLoadBalancer.java
URL:
http://svn.apache.org/viewvc/activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/TopicLoadBalancer.java?rev=724684&r1=724683&r2=724684&view=diff
==============================================================================
---
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/TopicLoadBalancer.java
(original)
+++
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/TopicLoadBalancer.java
Tue Dec 9 05:32:33 2008
@@ -18,14 +18,18 @@
import java.util.List;
+import org.apache.camel.AsyncCallback;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
/**
* A [EMAIL PROTECTED] LoadBalancer} implementations which sends to all
destinations
- * (rather like JMS Topics)
+ * (rather like JMS Topics).
+ * It is deprecated in Camel 2.0, you need to move to use multicast,
+ * if you want to send the message to all destinations.
*
* @version $Revision$
+ * @deprecated
*/
public class TopicLoadBalancer extends LoadBalancerSupport {
@@ -50,4 +54,18 @@
protected Exchange copyExchangeStrategy(Processor processor, Exchange
exchange) {
return exchange.copy();
}
+
+ public boolean process(Exchange exchange, AsyncCallback callback) {
+ List<Processor> list = getProcessors();
+ for (Processor processor : list) {
+ Exchange copy = copyExchangeStrategy(processor, exchange);
+ try {
+ processor.process(copy);
+ } catch (Exception ex) {
+ // We don't handle the exception here
+ }
+ }
+ callback.done(false);
+ return false;
+ }
}
Propchange:
activemq/camel/branches/camel-1.x/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaInOutRouteTextLineDelimiterTest.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Dec 9 05:32:33 2008
@@ -1 +1 @@
-/activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaInOutRouteTextLineDelimiterTest.java:722878,723264,723314,723325-723327,723409
+/activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaInOutRouteTextLineDelimiterTest.java:722878,723264,723314,723325-723327,723409,724681
Propchange:
activemq/camel/branches/camel-1.x/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaNoResponseFromServerTest.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Dec 9 05:32:33 2008
@@ -1 +1 @@
-/activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaNoResponseFromServerTest.java:723264,723314,723325-723327,723409
+/activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaNoResponseFromServerTest.java:723264,723314,723325-723327,723409,724681
Propchange:
activemq/camel/branches/camel-1.x/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTcpLineDelimiterUsingPlainSocketTest.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Dec 9 05:32:33 2008
@@ -1 +1 @@
-/activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTcpLineDelimiterUsingPlainSocketTest.java:722878,723264,723314,723325-723327,723409
+/activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTcpLineDelimiterUsingPlainSocketTest.java:722878,723264,723314,723325-723327,723409,724681
Propchange:
activemq/camel/branches/camel-1.x/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTcpTextlineDelimiterTest.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Dec 9 05:32:33 2008
@@ -1 +1 @@
-/activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTcpTextlineDelimiterTest.java:722878,723264,723314,723325-723327,723409
+/activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTcpTextlineDelimiterTest.java:722878,723264,723314,723325-723327,723409,724681