As Mark Harwood explained in last comment of
CAMEL-3197 the WeightedRandomLoadBalancer is not doing a good load balancing job if some weight are a lot bigger than some other weight.
See in the attached example (current-impl-result.txt), the first and third routes are always called at the very beginning of every 50 iterations loadbalancing round.
I propose a modified algorithm that do a more balanced loadbalancing (new-impl-result.txt)
Attached the test program with the proposed implementation.