Как payload превращается в байты при публикации и обратно при доставке.
Тип payload объявляет тот, кто кодирует (_content_type в meta). Через
erlangd байты кодирует клиент — парсер (encode_bytes/1); через HTTP/WS
payload уходит JSON-значением, и тип ставит шина.
Summary
Callbacks
Раскодирует с учётом meta события и того, в каком виде его отдал транспорт:
:bytes — как лежит в шине (erlangd), :json — уже значением JSON-ответа
шины (WS, HTTP): JSON разобран, бинарь — base64 с _content_encoding.
Как decode/1, но не раскодированный payload — ошибка, а не сырой бинарь.
Worker берёт её, если парсер её реализует: тогда в handle_event/4 не
попадает то, что консьюмер не ждёт.
Терм → байты и их тип — для публикации через erlangd. Бинарь сюда не
попадает: его клиент уже закодировал сам (тип — _content_type в meta).
Callbacks
@callback decode_event(payload :: term(), meta :: map(), wire :: :bytes | :json) :: {:ok, term()} | {:error, term()}
Раскодирует с учётом meta события и того, в каком виде его отдал транспорт:
:bytes — как лежит в шине (erlangd), :json — уже значением JSON-ответа
шины (WS, HTTP): JSON разобран, бинарь — base64 с _content_encoding.
Как decode/1, но не раскодированный payload — ошибка, а не сырой бинарь.
Worker берёт её, если парсер её реализует: тогда в handle_event/4 не
попадает то, что консьюмер не ждёт.
Терм → байты и их тип — для публикации через erlangd. Бинарь сюда не
попадает: его клиент уже закодировал сам (тип — _content_type в meta).