Class RoundRobinLoadBalancer

java.lang.Object
org.springframework.cloud.loadbalancer.core.RoundRobinLoadBalancer
All Implemented Interfaces:
org.springframework.cloud.client.loadbalancer.reactive.ReactiveLoadBalancer<org.springframework.cloud.client.ServiceInstance>, ReactorLoadBalancer<org.springframework.cloud.client.ServiceInstance>, ReactorServiceInstanceLoadBalancer

public class RoundRobinLoadBalancer extends Object implements ReactorServiceInstanceLoadBalancer
A Round-Robin-based implementation of ReactorServiceInstanceLoadBalancer.
Author:
Spencer Gibb, Olga Maciaszek-Sharma, Zhuozhi JI, Nan Chiu
  • Nested Class Summary

    Nested classes/interfaces inherited from interface org.springframework.cloud.client.loadbalancer.reactive.ReactiveLoadBalancer

    org.springframework.cloud.client.loadbalancer.reactive.ReactiveLoadBalancer.Factory<T>
  • Field Summary

    Fields inherited from interface org.springframework.cloud.client.loadbalancer.reactive.ReactiveLoadBalancer

    REQUEST
  • Constructor Summary

    Constructors
    Constructor
    Description
    RoundRobinLoadBalancer(org.springframework.beans.factory.ObjectProvider<ServiceInstanceListSupplier> serviceInstanceListSupplierProvider, String serviceId)
     
    RoundRobinLoadBalancer(org.springframework.beans.factory.ObjectProvider<ServiceInstanceListSupplier> serviceInstanceListSupplierProvider, String serviceId, int seedPosition)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    reactor.core.publisher.Mono<org.springframework.cloud.client.loadbalancer.Response<org.springframework.cloud.client.ServiceInstance>>
    choose(org.springframework.cloud.client.loadbalancer.Request request)
    Choose the next server based on the load balancing algorithm.

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface ReactorLoadBalancer

    choose
  • Constructor Details

    • RoundRobinLoadBalancer

      public RoundRobinLoadBalancer(org.springframework.beans.factory.ObjectProvider<ServiceInstanceListSupplier> serviceInstanceListSupplierProvider, String serviceId)
      Parameters:
      serviceInstanceListSupplierProvider - a provider of ServiceInstanceListSupplier that will be used to get available instances
      serviceId - id of the service for which to choose an instance
    • RoundRobinLoadBalancer

      public RoundRobinLoadBalancer(org.springframework.beans.factory.ObjectProvider<ServiceInstanceListSupplier> serviceInstanceListSupplierProvider, String serviceId, int seedPosition)
      Parameters:
      serviceInstanceListSupplierProvider - a provider of ServiceInstanceListSupplier that will be used to get available instances
      serviceId - id of the service for which to choose an instance
      seedPosition - Round Robin element position marker
  • Method Details

    • choose

      public reactor.core.publisher.Mono<org.springframework.cloud.client.loadbalancer.Response<org.springframework.cloud.client.ServiceInstance>> choose(org.springframework.cloud.client.loadbalancer.Request request)
      Description copied from interface: ReactorLoadBalancer
      Choose the next server based on the load balancing algorithm.
      Specified by:
      choose in interface org.springframework.cloud.client.loadbalancer.reactive.ReactiveLoadBalancer<org.springframework.cloud.client.ServiceInstance>
      Specified by:
      choose in interface ReactorLoadBalancer<org.springframework.cloud.client.ServiceInstance>
      Parameters:
      request - - an input request
      Returns:
      - mono of response