API Reference logdb_client v#0.3.0

Copy Markdown View Source

Modules

Работа с шиной из приложения. name — имя клиента (name: в его опциях).

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

Соединение одного клиента с шиной: подключает транспорт, переподключает его и передаёт входящие события Worker'у.

Строка подключения к LogDB — всё о подключении в одной строке (одна переменная окружения, как DATABASE_URL)

Какой консьюмер читать (LogDB.Client.Config, поле consumer)

Payload события не раскодировался парсером. Приходит в handle_error/2 консьюмера вместо вызова handle_event/4; событие отклоняется окончательно (term): повтор раскодировался бы так же, а бесконечная переотправка занимала слоты консьюмера. Видно в консоли LogDB среди отброшенных.

Знакомство с шиной: клиент называет себя и API, на котором говорит, шина отвечает версией, согласованным API и возможностями.

Как payload превращается в байты при публикации и обратно при доставке.

Раскодирует payload по типу, который объявил издатель (_content_type в meta), — один консьюмер читает и JSON, и термы, и текст, что бы ни публиковали и через какой транспорт.

Клиент шины: Connection и, если задан модуль консьюмера, Worker.

Как клиент говорит с шиной. Реализации: Erlangd (дистрибуция Erlang), WebSocket (доставка и подтверждения), HTTP (публикация и подтверждения), Hybrid (WS для доставки, HTTP для остального).

Доставка по WebSocket; публикация и подтверждения — по тому же сокету, если шина говорит на клиентском API 1 (договорились в hello), иначе — по HTTP, как раньше.

WebSocket: доставка событий и все команды шины по одному соединению — публикация, подписка, подтверждения, ping.

Ошибка клиента — одна форма для всех транспортов: {:error, %LogDB.Error{}}.