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 confluent.cloud.
installation
Installation
def deps do
[
{:confluent_schema, "~> 0.1.2"}
]
end
usage
Usage
On application.ex
:
def start(_type, _args) do
opts = [
period: :timer.seconds(10),
debug: true,
base_url: "https://foobar.region.aws.confluent.cloud",
username: "key",
password: "api secret",
]
children = [
{ConfluentSchema, opts}
]
supervisor_opts = [strategy: :one_for_one, name: MyApp.Supervisor]
Supervisor.start_link(children, supervisor_opts)
end
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.
test
Test
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 confluent_schema.download
mix task defined in Mix.Tasks.ConfluentSchema.Download
:
$ mix confluent_schema.download \
--app-name my_app \
--username API_KEY \
--password API_SECRET
--base-url https://foobar.region.aws.confluent.cloud \
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.