LogDB.Client.Config (logdb_client v0.3.0)

Copy Markdown View Source

Конфиг клиента: опции разбираются и проверяются один раз, при старте (LogDB.Client.Supervisor), и дальше процессы и транспорты получают эту структуру, а не сырой keyword.

Ошибка — отказ запуститься (ArgumentError с причиной), а не цикл падений в connect. Неизвестный ключ — тоже ошибка: опечатка (consumer_ld:) иначе молча давала клиент, который ничего не получает. Свои данные для init/1 консьюмера — в init_arg:.

Опции

  • :name — имя клиента (атом), обязательно;
  • :connection — строка подключения (LogDB.Client.ConnectionString) или :host / :port / :secure;
  • :token — токен сервиса, если его нет в строке;
  • :transport — модуль транспорта (по умолчанию Transport.HTTP);
  • :parser — модуль парсера payload;
  • :consumer — "стрим/имя", или прежняя пара :stream + :consumer_id;
  • :node (:node_name) — имя ноды шины для erlangd;
  • :client_name — имя экземпляра (по умолчанию — имя ноды или хоста);
  • :req_options — опции Req для HTTP;
  • :init_arg — что угодно для init/1 консьюмера;
  • :consumer_module — модуль консьюмера (ставит use LogDB.Client.Consumer).

Заданное и в строке, и опцией — должно совпадать, иначе ошибка.

Summary

Functions

Известные ключи опций.

Конфиг из опций: {:ok, config} или {:error, причина}.

Конфиг из опций или ArgumentError с причиной.

Types

consumer()

@type consumer() :: {:ref, String.t()} | {:pair, String.t(), String.t()} | nil

t()

@type t() :: %LogDB.Client.Config{
  client_name: String.t() | nil,
  consumer: consumer(),
  consumer_module: module() | nil,
  host: String.t(),
  init_arg: term(),
  name: atom(),
  node: atom() | nil,
  opts: keyword(),
  parser: module() | nil,
  port: pos_integer(),
  req_options: keyword(),
  secure: boolean(),
  token: String.t(),
  transport: module()
}

Functions

keys()

Известные ключи опций.

new(opts)

@spec new(keyword()) :: {:ok, t()} | {:error, String.t()}

Конфиг из опций: {:ok, config} или {:error, причина}.

new!(config)

@spec new!(keyword() | t()) :: t()

Конфиг из опций или ArgumentError с причиной.