HookGet English להתחיל בחינם

תור הכשלים והחזרה לפעולה

מה קורה כשלוח הניסיונות נגמר, ואיך מחזירים את האירועים.

בקצרה

  • מסירה שהלוח שלה נגמר נשמרת, לא נזרקת.
  • יעד שנכשל 50 פעמים ברצף מושבת, והעובדה הזו מתפרסמת כאירוע.
  • החזרה לפעולה מפעילה מחדש את היעד ושולחת שוב את מה שנכשל בזמן שהיה מושבת, בקריאה אחת.
  • אם אירועים פורסמו ולא היה להם אף ניסיון מסירה, השלמת פערים מחזירה אותם לתור.
תור הכשלים, והדרך לצאת ממנו ניסיונות המסירה הולכים לפי לוח הניסיונות החוזרים. כשהלוח נגמר, המסירה עוברת לתור הכשלים, שם היא נשמרת ומופיעה ברשימה. שליחה חוזרת יוצרת ניסיון חדש עם מזהה האירוע המקורי, כך שצרכן שמסנן כפילויות מטפל בה בבטחה. ניסיונות מסירה לוח הניסיונות החוזרים הלוח נגמר 8 ניסיונות לאורך כ-21 שעות תור הכשלים נשמר · ברשימה · שלכם שליחה חוזרת · ניסיון חדש, מזהה האירוע המקורי
תור הכשלים הוא מדף, לא קבר. מסירה שנשלחת שוב נושאת את מזהה האירוע המקורי, כך שצרכן שמסנן כפילויות, כמו שמדריך מניעת הכפילויות ממליץ, מטפל בה פעם אחת בדיוק.

יש שתי דרכים לטפל במסירה שכל הניסיונות החוזרים שלה נגמרו. אפשר לזרוק אותה, ואז בעיה זמנית ביעד הופכת לנתונים חסרים שאף אחד לא יכול לשחזר. ואפשר לשמור אותה במקום גלוי, עד שמישהו מחליט מה לעשות איתה. HookGet בוחר בדרך השנייה, והמדריך הזה מסביר מה נשמר, מתי יעד יוצא מסבב המסירה, ואיך מחזירים הכול.

מה מגיע לתור הכשלים (DLQ)

כל מה שהניסיונות שלו נגמרו. מזהה האירוע המקורי נשמר, ולכן צרכן שמונע כפילויות לפי webhook-id לא יטפל פעמיים בשום דבר שתשלחו שוב. בזכות זה שליחה חוזרת היא פעולה בטוחה: אפשר לשלוח שוב גם אירועים שאולי כבר הגיעו, בלי לחשוש מכפילות.

curl https://api.hookget.com/v1/dlq -H "authorization: Bearer $HOOKGET_KEY"

כשיעד מושבת

חמישים כשלים ברצף, או 410 Gone אחד, מוציאים יעד מסבב המסירה. אז HookGet מפרסם את hookget.endpoint.disabled כאירוע רגיל, כך שאפשר להירשם לתקלות של עצמכם ולחבר אותן למערכת ההתראות שלכם כמו כל אירוע אחר. יעד מושבת לא ממשיך לצבור ניסיונות שנכשלים, ולא מעמיס על שירות שכבר מתקשה.

האירוע התפעולי הזה מגיע רק למי שנרשם אליו במפורש. יעד שמקבל את כל האירועים ונכשל כרגע לא אמור לקבל הודעה על הכשל של עצמו: זה היה מגבר, לא התראה.

להחזיר את האירועים

מצבקריאהמה היא עושה
היעד תוקןPOST /v1/endpoints/{id}/recoverמאפסת את מונה הכשלים ושולחת שוב את המסירות של אותו יעד מתור הכשלים
כשלים נבחריםPOST /v1/dlq/replayמחזירה לתור מסירות מתור הכשלים, את כולן או של יעד אחד
אירוע אחדPOST /v1/events/{id}/replayשולחת אירוע בודד שוב
חשד לפערPOST /v1/events/replay-missingמוצאת אירועים בלי אף ניסיון ומחזירה אותם לתור. בטוח להריץ פעמיים

ברוב המקרים הקריאה הראשונה היא כל מה שצריך: היעד חזר לעבוד, ובקריאה אחת הוא יוצא מהשבתה ומקבל את מה שפספס. שאר הקריאות מיועדות למצבים ממוקדים יותר, כמו אירוע בודד שלקוח מבקש שוב או ניקוי של כשלים מיעד מסוים.

השלמת פערים קיימת כי התור נגזר מהאחסון, ולא להפך. אם התור אבד, האירועים עדיין שמורים ואפשר לגזור אותו מחדש. ובגלל זה חשוב בפועל מי מהשניים הוא מקור האמת: כשהאחסון הוא המקור, תקלה בתור היא עיכוב, לא אובדן.

שאלות

האם מסירה שכל הניסיונות שלה נכשלו נמחקת?

לא. היא עוברת לתור הכשלים (DLQ) ונשמרת שם, עם מזהה האירוע המקורי. משם אפשר לשלוח אותה שוב ברגע שהיעד תוקן, לבד או יחד עם שאר המסירות של אותו יעד.

מתי יעד מושבת אוטומטית?

אחרי 50 כשלים ברצף, או אחרי תשובה אחת של 410 Gone. ההשבתה מגינה על היעד מהצפה ועל המערכת מבזבוז, ו-HookGet מפרסם עליה אירוע hookget.endpoint.disabled שאפשר להירשם אליו.

שליחה חוזרת מתור הכשלים תגרום לטיפול כפול?

לא אצל צרכן שמונע כפילויות לפי webhook-id. מזהה האירוע המקורי נשמר, ולכן אירוע שכבר טופל מזוהה כזה גם אם הוא מגיע שוב. מדריך מניעת הכפילויות מראה את הקוד.

מה עושה replay-missing ומתי מריצים אותו?

הוא מחפש אירועים שפורסמו ואף פעם לא קיבלו ניסיון מסירה, ומחזיר אותם לתור. מריצים אותו כשיש חשד לפער, למשל אחרי תקלה בתשתית. בטוח להריץ אותו פעמיים, כי הוא מטפל רק באירועים שאין להם אף ניסיון.

להתחיל למסור וובהוקים היום

מפנים את הוובהוקים ל-HookGet ורואים את המסירה הראשונה מגיעה, חתומה, תוך פחות מדקה.

פתיחת חשבון חינם לנסות את בודק הוובהוקים החינמי

10,000 מסירות בחודש בחינם, בלי כרטיס אשראי. המסלול החינמי חוסם ולא מחייב, כך שניסיון לא יכול להסתיים בחשבונית.