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, place subject_name.json
files inside priv/confluent_schema/
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
# runtime.exs
config :naboo, :confluent_schema,
base_url: System.fetch_env!("CONFLUENT_SCHEMA_REGISTRY_URL"),
username: System.fetch_env!("CONFLUENT_SCHEMA_REGISTRY_API_KEY"),
password: System.fetch_env!("CONFLUENT_SCHEMA_REGISTRY_API_SECRET")
Now, when ConfluentSchema
starts, it will load the schemas from your app's priv/confluent_schema/
directory, on dev
and test
environment.