Interface IWaitStrategy

All Known Implementing Classes:
WaitStrategyPark, WaitStrategyProgressive

public interface IWaitStrategy
  • Method Details

    • createBackPressureWaitStrategy

      static IWaitStrategy createBackPressureWaitStrategy(Map<String,Object> topologyConf)
    • prepare

      void prepare(Map<String,Object> conf, IWaitStrategy.WaitSituation waitSituation)
    • idle

      int idle(int idleCounter) throws InterruptedException
      Implementations of this method should be thread-safe (preferably no side-effects and lock-free).

      Supports static or dynamic backoff. Dynamic backoff relies on idleCounter to estimate how long caller has been idling.

       
        int idleCounter = 0;
        int consumeCount = consumeFromQ();
        while (consumeCount==0) {
           idleCounter = strategy.idle(idleCounter);
           consumeCount = consumeFromQ();
        }
       
       
      Parameters:
      idleCounter - managed by the idle method until reset
      Returns:
      new counter value to be used on subsequent idle cycle
      Throws:
      InterruptedException