2012-02-07 22 views
0

我的SaaS產品將事件通知作爲webhooks發佈。這個問題是關於處理我發佈到webhook url時的失敗案例。處理調用webhook url失敗的數據

如果沒有收到來自URL的200 OK響應代碼,我發佈了事件數據,我將該事件通知標記爲失敗並啓動重試過程。目前,我存儲了作爲事件數據一部分發送的數據的ID,並且每次重試都從數據庫中獲取。

我只是想看看別人如何處理這個?我能想到的另一件事是將實際有效負載(採用JSON或XML格式)存儲在數據庫中,並在每次重試時發送該數據。但是,您如何期望事件接收器處理因此而可能出現的數據同步問題?

回答

1

這聽起來像你需要給webhook接收器選擇當他們向你的服務註冊他們的端點時是否重新POST數據的選項。我還強烈建議您提供清晰的文檔說明您的服務如何處理不同的響應代碼

可能值得通過電子郵件通知端點管理員同步問題。這樣更好,因爲他們也可以定期ping他們自己的服務或POST測試數據。

另外,考慮一下:當服務失敗時會發生什麼情況。如果同步很重要,您的服務和端點如何解決該問題?

您沒有提供太多的背景知道您正在發佈什麼樣的數據以及您害怕什麼精確的同步問題。你能分享更多嗎?

編輯:這裏是how MailChimp handles this issue。他們顯然和你在同一條船上。

當事件發生時,您已經開啓,我們將發送一個HTTP POST請求到您指定的URL。如果該網址不可用或需要很長時間才能響應(超過15秒),我們會取消該請求並稍後再試。在1小時15分鐘的過程中,每隔一段時間重試一次。隨着我們開始接收用戶反饋,這些時間框架可能會調整。

對於每個事件,我們將根據事件返回各種數據。以下是每個事件的示例數據 - 您還可以使用上述的PostBin工具輕鬆查看。一般來說,您會看到每個事件都有一個類型和一個fired_at字段,以幫助您跟蹤事件的類型並獲取事件的時間戳(格林威治標準時間!)。