Interface ConsulFailoverStrategy

All Known Implementing Classes:
BlacklistingConsulFailoverStrategy

public interface ConsulFailoverStrategy
  • Method Summary

    Modifier and Type
    Method
    Description
    @NonNull Optional<okhttp3.Request>
    computeNextStage(@NonNull okhttp3.Request previousRequest, @Nullable okhttp3.Response previousResponse)
    Computes the next failover stage for the consul failover strategy.
    boolean
    isRequestViable(@NonNull okhttp3.Request current)
    Determines if there is a viable candidate for the next request.
    void
    markRequestFailed(@NonNull okhttp3.Request current)
    Marks the specified request as a failed URL (in case of exceptions and other events that could cause us to never get a response).
  • Method Details

    • computeNextStage

      @NonNull Optional<okhttp3.Request> computeNextStage(@NonNull okhttp3.Request previousRequest, @Nullable okhttp3.Response previousResponse)
      Computes the next failover stage for the consul failover strategy. This allows the end user to customize the way and methods by which additional failover targets may be selected.
      Parameters:
      previousRequest - The last request to go out the door.
      previousResponse - The response that was returned when the previousRequest was completed.
      Returns:
      An optional failover request. This may return an empty optional, signaling that the request should be aborted
    • isRequestViable

      boolean isRequestViable(@NonNull okhttp3.Request current)
      Determines if there is a viable candidate for the next request. This lets us short circuit the first attempted request (such as when we know with certainty that a host should not be available) without interfering with the consul client too much.
      Parameters:
      current - The current inflight request.
      Returns:
      A boolean representing if there is another possible request candidate available.
    • markRequestFailed

      void markRequestFailed(@NonNull okhttp3.Request current)
      Marks the specified request as a failed URL (in case of exceptions and other events that could cause us to never get a response). This avoids infinite loops where the strategy can never be made aware that the request has failed.
      Parameters:
      current - The current request object representing a request that failed