class InfluxDB2::WriteOptions

Creates write api configuration.

Attributes

batch_abort_on_exception[R]
batch_size[R]
exponential_base[R]
flush_interval[R]
jitter_interval[R]
max_retries[R]
max_retry_delay[R]
max_retry_time[R]
retry_interval[R]
write_type[R]

Public Class Methods

new(write_type: WriteType::SYNCHRONOUS, batch_size: 1_000, flush_interval: 1_000, retry_interval: 5_000, jitter_interval: 0, max_retries: 5, max_retry_delay: 125_000, max_retry_time: 180_000, exponential_base: 2, batch_abort_on_exception: false) click to toggle source

@param [WriteType] write_type: methods of write (batching, synchronous) @param [Integer] batch_size: the number of data point to collect in batch @param [Integer] flush_interval: flush data at least in this interval @param [Integer] retry_interval: number of milliseconds to retry unsuccessful write.

The retry interval is used when the InfluxDB server does not specify "Retry-After" header.

@param [Integer] jitter_interval: the number of milliseconds to increase the batch flush interval @param [Integer] max_retries: max number of retries when write fails @param [Integer] max_retry_delay: maximum delay when retrying write in milliseconds @param [Integer] max_retry_time: maximum total retry timeout in milliseconds @param [Integer] exponential_base: the next delay is computed using random exponential backoff as a random value

within the interval retry_interval*exponential_base^(attempts-1) and retry_interval*exponential_base^(attempts).
Example for retry_interval=5000, exponential_base=2, max_retry_delay=125000, total=5
Retry delays are random distributed values within the ranges of
[5000-10000, 10000-20000, 20000-40000, 40000-80000, 80000-125000]

@param [Boolean] batch_abort_on_exception: batching worker will be aborted after failed retry strategy

# File lib/influxdb2/client/write_api.rb, line 46
def initialize(write_type: WriteType::SYNCHRONOUS, batch_size: 1_000, flush_interval: 1_000, retry_interval: 5_000,
               jitter_interval: 0, max_retries: 5, max_retry_delay: 125_000, max_retry_time: 180_000,
               exponential_base: 2, batch_abort_on_exception: false)
  _check_not_negative('batch_size', batch_size)
  _check_not_negative('flush_interval', flush_interval)
  _check_not_negative('retry_interval', retry_interval)
  _check_positive('jitter_interval', jitter_interval)
  _check_positive('max_retries', max_retries)
  _check_positive('max_retry_delay', max_retry_delay)
  _check_positive('max_retry_time', max_retry_time)
  _check_positive('exponential_base', exponential_base)
  @write_type = write_type
  @batch_size = batch_size
  @flush_interval = flush_interval
  @retry_interval = retry_interval
  @jitter_interval = jitter_interval
  @max_retries = max_retries
  @max_retry_delay = max_retry_delay
  @max_retry_time = max_retry_time
  @exponential_base = exponential_base
  @batch_abort_on_exception = batch_abort_on_exception
end

Public Instance Methods

_check_not_negative(key, value) click to toggle source
# File lib/influxdb2/client/write_api.rb, line 72
def _check_not_negative(key, value)
  raise ArgumentError, "The '#{key}' should be positive or zero, but is: #{value}" if value <= 0
end
_check_positive(key, value) click to toggle source
# File lib/influxdb2/client/write_api.rb, line 76
def _check_positive(key, value)
  raise ArgumentError, "The '#{key}' should be positive number, but is: #{value}" if value < 0
end