Перехід на 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 є на сторінці Підписи.
Відповідність понять
Section titled “Відповідність понять”| 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 можуть працювати паралельно.
- Відтворіть структуру. Створіть проєкти, ендпоінти й підписки через API. Див. Ендпоінти та підписки.
- Дайте кожному приймачу новий секрет у форматі
whsec_. Відтепер він приймає підписи обох платформ. - Надсилайте кожну подію на обидві платформи, доки не переконаєтеся, що все працює. Приймач, який відкидає дублікати за
webhook-id, обробить кожну доставку Railhook один раз. - Порівняйте
delivery_oldest_pending_age_secondsі недоставлені повідомлення в Railhook із показниками старої платформи. Див. Спостережуваність. - Припиніть надсилати на стару платформу. Окремого моменту перемикання немає.
Перш ніж ухвалити рішення
Section titled “Перш ніж ухвалити рішення”Порівняння Railhook з альтернативами перелічує, чого в Railhook немає, наприклад SSO і призначень не через HTTP.