Sha256: 2456f41609a3436e4b8e6e29ab876f67ac741facc14dbdb413687a9749c76f1b
Contents?: true
Size: 1.14 KB
Versions: 3
Compression:
Stored size: 1.14 KB
Contents
require 'avro_turf' require 'avro_turf/confluent_schema_registry' module Avromatic module CacheableSchemaRegistration # Override register to first check if a schema is registered by fingerprint def register(subject, schema) return super unless Avromatic.use_cacheable_schema_registration begin lookup_subject_schema(subject, schema) rescue Excon::Errors::NotFound data = post("/subjects/#{subject}/versions", body: { schema: schema.to_s }.to_json) id = data.fetch('id') @logger.info("Registered schema for subject `#{subject}`; id = #{id}") id end end def lookup_subject_schema(subject, schema) schema_object = if schema.is_a?(String) Avro::Schema.parse(schema) else schema end data = get("/subjects/#{subject}/fingerprints/#{schema_object.sha256_fingerprint.to_s(16)}") id = data.fetch('id') @logger.info("Found schema for subject `#{subject}`; id = #{id}") id end end end AvroTurf::ConfluentSchemaRegistry.prepend(Avromatic::CacheableSchemaRegistration)
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
avromatic-0.18.1 | lib/avromatic/schema_registry_patch.rb |
avromatic-0.18.0 | lib/avromatic/schema_registry_patch.rb |
avromatic-0.18.0.rc0 | lib/avromatic/schema_registry_patch.rb |