def pause(topic, partition, timeout: nil, max_timeout: nil, exponential_backoff: false)
      if max_timeout && !exponential_backoff
        raise ArgumentError, "`max_timeout` only makes sense when `exponential_backoff` is enabled"
      end

      pause_for(topic, partition).pause!(
        timeout: timeout,
        max_timeout: max_timeout,
        exponential_backoff: exponential_backoff,
      )
    end
def pause(topic, partition, timeout: nil, max_timeout: nil, exponential_backoff: false)
      if max_timeout && !exponential_backoff
        raise ArgumentError, "`max_timeout` only makes sense when `exponential_backoff` is enabled"
      end

      pause_for(topic, partition).pause!(
        timeout: timeout,
        max_timeout: max_timeout,
        exponential_backoff: exponential_backoff,
      )
    end
Pause processing of a specific topic partition.

 When a specific message causes the processor code to fail, it can be a good
 idea to simply pause the partition until the error can be resolved, allowing
 the rest of the partitions to continue being processed.

 If the `timeout` argument is passed, the partition will automatically be
 resumed when the timeout expires. If `exponential_backoff` is enabled, each
 subsequent pause will cause the timeout to double until a message from the
 partition has been successfully processed.

 @param topic [String]
 @param partition [Integer]
 @param timeout [nil, Integer] the number of seconds to pause the partition for,
   or `nil` if the partition should not be automatically resumed.
 @param max_timeout [nil, Integer] the maximum number of seconds to pause for,
   or `nil` if no maximum should be enforced.
 @param exponential_backoff [Boolean] whether to enable exponential backoff.
 @return [nil]