Работа с шиной из приложения. name — имя клиента (name: в его опциях).
Ответы одной формы для любого транспорта:
- команды —
{:ok, результат}или{:error, %LogDB.Error{}}; subscribe/2,3иping/1—:okили{:error, %LogDB.Error{}}.
Клиент не запущен или соединение потеряно — {:error, %LogDB.Error{code: :disconnected}}: вызывающий процесс не падает.
Summary
Functions
Подтвердить обработку: шина больше не доставит эти события.
Дождаться, пока клиент подключится: :ok или {:error, %LogDB.Error{code: :timeout}}. Клиент подключается сам и асинхронно — приложение не ждёт шину
при старте; это для тех, кому нужно (тесты, скрипты, миграции).
Отказ от событий — шина доставит их снова. delay_ms: — не раньше чем через
столько миллисекунд (нужна шина с поддержкой задержки; иначе — сразу).
Шина отвечает и принимает токен клиента.
«Ещё обрабатываю»: шина заново отсчитает ack_wait, чтобы не доставить
событие повторно, пока долгая обработка не закончилась. Вызывать из
handle_event/4 периодически.
Опубликовать событие. stream: — стрим (по умолчанию "default"),
meta: — метаданные, id: — id события для дедупликации.
Опубликовать пачку событий: %{"type", "payload", "stream", "meta"?}.
Каким транспортом подключён клиент.
Подписаться на консьюмер по адресу "stream/имя" — имя без префикса
сервиса, сервис шина знает по токену. Нужен LogDB с клиентским API /v1.
Подписаться прежней парой стрим + id консьюмера.
Окончательный отказ: шина больше никогда не доставит эти события — для «ядовитых», которые не обработать сколько ни пытайся.
Types
@type ids() :: [String.t()]
@type name() :: atom()
@type result() :: {:ok, term()} | {:error, LogDB.Error.t()}
@type status() :: :ok | {:error, LogDB.Error.t()}
Functions
Подтвердить обработку: шина больше не доставит эти события.
Дождаться, пока клиент подключится: :ok или {:error, %LogDB.Error{code: :timeout}}. Клиент подключается сам и асинхронно — приложение не ждёт шину
при старте; это для тех, кому нужно (тесты, скрипты, миграции).
Отказ от событий — шина доставит их снова. delay_ms: — не раньше чем через
столько миллисекунд (нужна шина с поддержкой задержки; иначе — сразу).
Шина отвечает и принимает токен клиента.
«Ещё обрабатываю»: шина заново отсчитает ack_wait, чтобы не доставить
событие повторно, пока долгая обработка не закончилась. Вызывать из
handle_event/4 периодически.
Опубликовать событие. stream: — стрим (по умолчанию "default"),
meta: — метаданные, id: — id события для дедупликации.
Опубликовать пачку событий: %{"type", "payload", "stream", "meta"?}.
@spec server_info(name()) :: {:ok, map()} | {:error, LogDB.Error.t()}
Каким транспортом подключён клиент.
Подписаться на консьюмер по адресу "stream/имя" — имя без префикса
сервиса, сервис шина знает по токену. Нужен LogDB с клиентским API /v1.
Подписаться прежней парой стрим + id консьюмера.
Окончательный отказ: шина больше никогда не доставит эти события — для «ядовитых», которые не обработать сколько ни пытайся.