Строка подключения LogDB

Copy Markdown View Source

Формат, общий для всех клиентов LogDB (Elixir logdb_client, CLI, PHP, веб-консоль): всё о подключении к шине в одной строке и одной переменной окружения, как DATABASE_URL у Postgres или nats://token@host у NATS.

Место этого документа — справочник для потребителей (сайт logdb-docs); здесь он лежит, пока туда не перенесён. Реализация в Elixir — LogDB.Client.ConnectionString.

Формат

logdb[s]://[токен@]хост[:порт][/стрим/консьюмер][?параметры]
ЧастьЗначение
logdb / logdbsбез TLS / с TLS (ws/http → wss/https)
токен@токен сервиса; необязателен — клиент может принять его отдельно
хост[:порт]шина; порт по умолчанию — 4000 у logdb, 443 у logdbs (TLS снимает прокси перед шиной)
/стрим/консьюмеркакой консьюмер читать; имя без префикса сервиса — сервис шина знает по токену. Нет пути — клиент только публикует

Параметры:

ПараметрЗначенияЗначение
transportws, http, hybrid, erlangdчем подключаться; по умолчанию решает клиент (Elixir — http)
nodelogdb или logdb@hostнода шины для erlangd; короткое имя дополняется хостом строки
node_nameкак nodeпрежнее имя node; если заданы оба — должны совпадать
clientстрокаимя экземпляра клиента, видно в консоли LogDB (по умолчанию — имя ноды или хоста)

Правила

  • Неизвестный параметр — ошибка, а не молчание: опечатка не должна давать клиент, который подключился «не туда».
  • Значения не приводятся к типам (yes — это строка yes).
  • Токен с зарезервированными символами (/, +, =, @, :) кодируется процентами (a%2Fb).
  • Если клиент принимает те же части и отдельными опциями (токен, транспорт, консьюмер…), заданное и там, и там должно совпадать — иначе ошибка, а не тихий приоритет одного из источников.
  • Строка содержит секрет: печатая её (логи, inspect, консоль), клиент скрывает токен — logdb://***@bus/....

Примеры

logdbs://s3cr3t@bus.hayot.uz/default/rkp_core?transport=ws        консьюмер по WS, TLS
logdb://s3cr3t@10.60.10.249:4000?transport=erlangd&node=logdb       erlangd, только публикация
logdb://s3cr3t@bus:4000/default/jobs?transport=http                pull-консьюмер, long-poll
logdb://bus:4000?node_name=logdb                                    прежняя форма; токен — отдельно