Sha256: 8266b66a68ddf5ed43dac664d288c4b5dda7dba573a61bfcc28bed3df95bf4a5

Contents?: true

Size: 1001 Bytes

Versions: 9

Compression:

Stored size: 1001 Bytes

Contents

# frozen_string_literal: true

module Karafka
  module Contracts
    # Consumer group topic validation rules.
    class ConsumerGroupTopic < Base
      params do
        required(:consumer).filled
        required(:deserializer).filled
        required(:id).filled(:str?, format?: Karafka::Contracts::TOPIC_REGEXP)
        required(:kafka).filled
        required(:max_messages) { int? & gteq?(1) }
        required(:initial_offset).filled(included_in?: %w[earliest latest])
        required(:max_wait_time).filled { int? & gteq?(10) }
        required(:manual_offset_management).filled(:bool?)
        required(:name).filled(:str?, format?: Karafka::Contracts::TOPIC_REGEXP)
      end

      rule(:kafka) do
        # This will trigger rdkafka validations that we catch and re-map the info and use dry
        # compatible format
        Rdkafka::Config.new(value).send(:native_config)
      rescue Rdkafka::Config::ConfigError => e
        key(:kafka).failure(e.message)
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
karafka-2.0.0.rc1 lib/karafka/contracts/consumer_group_topic.rb
karafka-2.0.0.beta5 lib/karafka/contracts/consumer_group_topic.rb
karafka-2.0.0.beta4 lib/karafka/contracts/consumer_group_topic.rb
karafka-2.0.0.beta3 lib/karafka/contracts/consumer_group_topic.rb
karafka-2.0.0.beta2 lib/karafka/contracts/consumer_group_topic.rb
karafka-2.0.0.beta1 lib/karafka/contracts/consumer_group_topic.rb
karafka-2.0.0.alpha6 lib/karafka/contracts/consumer_group_topic.rb
karafka-2.0.0.alpha5 lib/karafka/contracts/consumer_group_topic.rb
karafka-2.0.0.alpha4 lib/karafka/contracts/consumer_group_topic.rb