Перейти до вмісту
На сайт

Перехід на Railhook

Ваші приймачі зазвичай працюють і далі

Section titled “Ваші приймачі зазвичай працюють і далі”

Railhook підписує вихідні доставки заголовками Standard Webhooks:

webhook-id: <the delivery id, unchanged across retries>
webhook-timestamp: <unix seconds>
webhook-signature: v1,<base64>

Підпис є base64 HMAC-SHA256 від {id}.{timestamp}.{body}. Приймач із бібліотекою Svix або Standard Webhooks працює й далі, щойно отримає новий секрет.

Нові ендпоінти також типово отримують власний заголовок Railhook:

X-Signature: t=<unix milliseconds>,v1=<hex HMAC-SHA256 of "{t}.{body}">

Приймач перевіряє знайомий заголовок і ігнорує інший, тож приймачі можна переводити по одному або не переводити взагалі.

Ваш приймач перевіряє підпис Що змінити
Бібліотекою Svix або Standard Webhooks Секрет і URL. Більше нічого.
За власним заголовком підпису іншої платформи Перейдіть на бібліотеку Standard Webhooks або перевіряйте X-Signature. Надсилаються обидва.
Власноруч написаним розбором t=…,v1=… Перевірте одиниці: t в X-Signature у мілісекундах, а не в секундах.

Приймачі мають відкидати дублікати за webhook-id: доставка відбувається щонайменше один раз, а ідентифікатор не змінюється між повторними спробами. Код перевірки для кожної мови SDK є на сторінці Підписи.

Railhook Svix Hookdeck Convoy
Організація — — Organisation
Проєкт Application — Project
Ендпоінт Endpoint Destination (Outpost) Endpoint
Підписка (ендпоінт і тип події) Типи подій на ендпоінті — Subscription
Подія Message Event Event
Доставка (одна подія на один ендпоінт) — — Event delivery
Спроба (один HTTP-запит) Attempt Attempt —
Джерело (провайдер, від якого ви приймаєте вебхуки) Source (Ingest) Source (Event Gateway) Source
Призначення (куди йде отриманий вебхук) Destination (Ingest) Destination (Event Gateway) —
«Машина часу» (відтворення) Replay — —

Прочерк означає, що прямого відповідника в документації постачальника не знайдено, а не що можливості немає.

Важливі дві відмінності:

  • Доставка і спроба різні. Доставка є завданням донести одну подію до одного ендпоінта; спроба є одним HTTP-запитом у її межах, тож кількість повторів точна.
  • Відтворення не є повторною спробою. Повторна спроба є наступною спробою тієї самої доставки. Відтворення створює зі збереженої події нову доставку, а оригінальну не змінює. Див. Відтворення і «Машина часу».

Перехід без вікна обслуговування

Section titled “Перехід без вікна обслуговування”

Приймачі перевіряють обидві схеми підпису, тож стара платформа й Railhook можуть працювати паралельно.

  1. Відтворіть структуру. Створіть проєкти, ендпоінти й підписки через API. Див. Ендпоінти та підписки.
  2. Дайте кожному приймачу новий секрет у форматі whsec_. Відтепер він приймає підписи обох платформ.
  3. Надсилайте кожну подію на обидві платформи, доки не переконаєтеся, що все працює. Приймач, який відкидає дублікати за webhook-id, обробить кожну доставку Railhook один раз.
  4. Порівняйте delivery_oldest_pending_age_seconds і недоставлені повідомлення в Railhook із показниками старої платформи. Див. Спостережуваність.
  5. Припиніть надсилати на стару платформу. Окремого моменту перемикання немає.

Перш ніж ухвалити рішення

Section titled “Перш ніж ухвалити рішення”

Порівняння Railhook з альтернативами перелічує, чого в Railhook немає, наприклад SSO і призначень не через HTTP.