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/08/26 12:04:06 UTC
svn commit: r1377408 - in /camel/branches/camel-2.10.x: ./
camel-core/src/main/java/org/apache/camel/processor/loadbalancer/RandomLoadBalancer.java
Author: davsclaus
Date: Sun Aug 26 10:04:06 2012
New Revision: 1377408
URL: http://svn.apache.org/viewvc?rev=1377408&view=rev
Log:
CAMEL-5525: Fixe random load balancer logic to be more even.
Modified:
camel/branches/camel-2.10.x/ (props changed)
camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/RandomLoadBalancer.java
Propchange: camel/branches/camel-2.10.x/
------------------------------------------------------------------------------
Merged /camel/trunk:r1377407
Propchange: camel/branches/camel-2.10.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/RandomLoadBalancer.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/RandomLoadBalancer.java?rev=1377408&r1=1377407&r2=1377408&view=diff
==============================================================================
--- camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/RandomLoadBalancer.java (original)
+++ camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/processor/loadbalancer/RandomLoadBalancer.java Sun Aug 26 10:04:06 2012
@@ -17,6 +17,7 @@
package org.apache.camel.processor.loadbalancer;
import java.util.List;
+import java.util.Random;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
@@ -28,14 +29,20 @@ import org.apache.camel.Processor;
*/
public class RandomLoadBalancer extends QueueLoadBalancer {
+ private static final Random random = new Random();
+
protected synchronized Processor chooseProcessor(List<Processor> processors, Exchange exchange) {
int size = processors.size();
- while (true) {
- int index = (int) Math.round(Math.random() * size);
- if (index < size) {
- return processors.get(index);
- }
+ if (size == 0) {
+ return null;
+ } else if (size == 1) {
+ // there is only 1
+ return processors.get(0);
}
+
+ // pick a random
+ int index = random.nextInt(size);
+ return processors.get(index);
}
public String toString() {