Class RoundRobinTrafficLoadBalancer<A extends ServiceInstance,B>

java.lang.Object
io.inverno.mod.discovery.RoundRobinTrafficLoadBalancer<A,B>
Type Parameters:
A - the type of service instance
B - the type of service request
All Implemented Interfaces:
TrafficLoadBalancer<A,B>
Direct Known Subclasses:
WeightedRoundRobinTrafficLoadBalancer

public class RoundRobinTrafficLoadBalancer<A extends ServiceInstance,B> extends Object implements TrafficLoadBalancer<A,B>

A traffic load balancer that selects instances in a deterministic order by iterating on a list of instances.

This implementation uses a CommandExecutor in order to return service instances in sequence.

Since:
1.12
Author:
Jeremy Kuhn
  • Constructor Details

    • RoundRobinTrafficLoadBalancer

      public RoundRobinTrafficLoadBalancer(Collection<A> instances)

      Creates a round-robin traffic load balancer.

      Parameters:
      instances - a collection of service instances
  • Method Details

    • next

      public Mono<A> next(B serviceRequest)
      Description copied from interface: TrafficLoadBalancer

      Returns the next service instance to use to process the specified service request.

      Specified by:
      next in interface TrafficLoadBalancer<A extends ServiceInstance,B>
      Parameters:
      serviceRequest - a service request
      Returns:
      a Mono emitting the next service instance