View Source ConfluentSchema

Provides cache and validation for confluent schemas that are pulled from a registry.

It mixes

To provide fast validation for schemas registered remotely on a registry server, for example



def deps do
    {:confluent_schema, "~> 0.1.2"}



On application.ex:

  def start(_type, _args) do
    opts = [
      period: :timer.seconds(10),
      debug: true,
      base_url: "",
      username: "key",
      password: "api secret",

    children = [
      {ConfluentSchema, opts}

    supervisor_opts = [strategy: :one_for_one, name: MyApp.Supervisor]
    Supervisor.start_link(children, supervisor_opts)

Then you can use confluent schema registry to validate payloads for a subject:

payload = %{foo: "bar"}
ConfluentSchema.validate(payload, "my-subject")

Check out ConfluentSchema.child_spec/1 for documentation about all options.



On test or dev environment, it is common to not have internet access. In this case, we want to load the schemas from local files.

To achieve this, put a subject_name.json file inside priv/confluent_schema/, or run the mix mix task defined in Mix.Tasks.ConfluentSchema.Download:

$ mix \
  --app-name my_app \
  --username API_KEY \
  --password API_SECRET
  --base-url \

And configure your application like this:

  # application.ex

  children = [
    {ConfluentSchema, Application.fetch_env!(:my_app, :confluent_schema)}

  # config.exs
  config :my_app, :confluent_schema, local: true, app_name: :my_app

Now, when ConfluentSchema starts, it will load the schemas from your app's priv/confluent_schema/ directory.