Конфиг клиента: опции разбираются и проверяются один раз, при старте
(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
@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() }