class CachedSchemaRegistry

Caches registrations and lookups to the schema registry in memory.

Public Class Methods

new(upstream, cache: nil) click to toggle source

Instantiate a new CachedConfluentSchemaRegistry instance with the given configuration. By default, uses a provided InMemoryCache to prevent repeated calls to the upstream registry.

upstream - The upstream schema registry object that fully responds to all methods in the

AvroTurf::ConfluentSchemaRegistry interface.

cache - Optional user provided Cache object that responds to all methods in the AvroTurf::InMemoryCache interface.

# File lib/avro_turf/cached_confluent_schema_registry.rb, line 14
def initialize(upstream, cache: nil)
  @upstream = upstream
  @cache = cache || AvroTurf::InMemoryCache.new
end

Public Instance Methods

check(subject, schema) click to toggle source
# File lib/avro_turf/cached_confluent_schema_registry.rb, line 27
def check(subject, schema)
  @cache.lookup_data_by_schema(subject, schema) || @cache.store_data_by_schema(subject, schema, @upstream.check(subject, schema))
end
fetch(id) click to toggle source
# File lib/avro_turf/cached_confluent_schema_registry.rb, line 31
def fetch(id)
  @cache.lookup_by_id(id) || @cache.store_by_id(id, @upstream.fetch(id))
end
register(subject, schema) click to toggle source
# File lib/avro_turf/cached_confluent_schema_registry.rb, line 35
def register(subject, schema)
  @cache.lookup_by_schema(subject, schema) || @cache.store_by_schema(subject, schema, @upstream.register(subject, schema))
end
subject_version(subject, version = 'latest') click to toggle source
# File lib/avro_turf/cached_confluent_schema_registry.rb, line 39
def subject_version(subject, version = 'latest')
  return @upstream.subject_version(subject, version) if version == 'latest'

  @cache.lookup_by_version(subject, version) ||
    @cache.store_by_version(subject, version, @upstream.subject_version(subject, version))
end