Sha256: 619de81c23ee4ed30881a27a0cc012a07c0f01e9e9dcdce2502b5bd7779633eb
Contents?: true
Size: 1.81 KB
Versions: 1
Compression:
Stored size: 1.81 KB
Contents
require 'avro_turf/confluent_schema_registry' require 'avro_turf/in_memory_cache' require 'avro_turf/disk_cache' # Caches registrations and lookups to the schema registry in memory. class AvroTurf::CachedConfluentSchemaRegistry # 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. def initialize(upstream, cache: nil) @upstream = upstream @cache = cache || AvroTurf::InMemoryCache.new end # Delegate the following methods to the upstream %i(subjects subject_versions schema_subject_versions compatible? global_config update_global_config subject_config update_subject_config).each do |name| define_method(name) do |*args| instance_variable_get(:@upstream).send(name, *args) end end def check(subject, schema) @cache.lookup_data_by_schema(subject, schema) || @cache.store_data_by_schema(subject, schema, @upstream.check(subject, schema)) end def fetch(id) @cache.lookup_by_id(id) || @cache.store_by_id(id, @upstream.fetch(id)) end def register(subject, schema) @cache.lookup_by_schema(subject, schema) || @cache.store_by_schema(subject, schema, @upstream.register(subject, schema)) end 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 end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
avro_turf-1.17.0 | lib/avro_turf/cached_confluent_schema_registry.rb |