פתרון בעיות בפתיחת מטען ייעודי (payload)

בדף הזה מוסבר איך לפתור בעיות שקשורות לפריסת מטען ייעודי (payload).

שגיאות בקוד סטטוס של HTTP

במהלך השימוש בפריקת מטען ייעודי, יכולות להתרחש שגיאות נפוצות של קודי מצב HTTP. אפשר לעקוב אחרי השגיאות באמצעות המדד push_request_count.

שגיאה 400: בקשה שגויה

השגיאה הבאה מתרחשת כש-Pub/Sub לא מצליח לעבד את הבקשה בגלל הגדרה שגויה או נתונים חסרים.

400 Bad Request

השגיאה הזו מתרחשת בגלל כמה סיבות. פירטנו כאן כמה מהסיבות הנפוצות ביותר לשגיאה הזו:

  • המטען הייעודי (נתוני ההודעה) לא תואם לפורמט הבקשה הצפוי שצוין על ידי נקודת הקצה של ה-HTTP.
  • חסרות הכותרות הנדרשות לעיבוד הבקשה.
  • נקודת קצה (endpoint) שגויה של HTTP מוגדרת למינוי.

כדי לפתור את הבעיה, אפשר לנסות את הפתרונות הבאים:

  • בודקים את הפורמט של מטען הייעודי (נתוני ההודעה). חשוב לוודא שהפורמט תואם לפורמט הבקשה הצפוי שצוין על ידי נקודת הקצה של HTTP.
  • בודקים שהבקשה מכילה את הכותרות הנדרשות. אם הכותרות חסרות, יכול להיות שתצטרכו להוסיף אותן במאפייני ההודעה. לדוגמה, יכול להיות שתצטרכו לכלול את Content-Type, אבל יכול להיות שיהיה צורך גם בפרטים אחרים.
  • מוודאים שנקודת הקצה של ה-HTTP שהוגדרה למינוי תקפה.
  • מפעילים תור הודעות שלא ניתן להעביר (DLQ) במינוי דחיפה שלכם. ההגדרה הזו מפנה מחדש הודעות פרטיות שלא ניתן למסור. מומלץ להפעיל DLQ אם מופיע מספר קטן של שגיאות 400 שרוצים לבדוק.

401 unauthorized / 403 forbidden

השגיאה הבאה מתרחשת כש-Pub/Sub לא יכול לעבד את הבקשה בגלל פרטי כניסה שגויים או לא תקינים.

401 unauthorized / 403 forbidden

השגיאה הזו מתרחשת כי המינוי לדחיפה לא מאומת.

כדי לפתור את הבעיה, אפשר לנסות את הפתרונות הבאים:

  • מפעילים אימות באמצעות התראות Push. חשוב להשתמש באימות Push אם אתם משלבים עם Cloud Run או App Engine.

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

‫415 Unsupported Media Type

השגיאה הבאה מתרחשת כש-Pub/Sub לא יכול לעבד את הבקשה כי פורמט המטען הייעודי (payload) לא נתמך.

415 Unsupported Media Type

השגיאה הזו מתרחשת בגלל כמה סיבות. פירטנו כאן כמה מהסיבות הנפוצות ביותר לשגיאה הזו:

  • בנקודת הקצה חסרה כותרת חובה של סוג מדיה.

כדי לפתור את הבעיה, נסו את הפתרון הבא:

  • סביר להניח שנקודת הקצה שלך דורשת כותרת Content-Type. כברירת מחדל, כשמבטלים את העטיפה של מטען ייעודי (payload), לא מוגדרת כותרת של סוג מדיה. אפשר להגדיר Content-Typeheader על ידי צירוף שלו כמאפיין של הודעת פרסום.

‫431 request header fields too large / 413 content too large

השגיאה הבאה מתרחשת כש-Pub/Sub לא יכול לעבד את הבקשה כי התוכן שנשלח בבקשה גדול מדי.

431 request header fields too Large / 413 content too large

השגיאה הזו מתרחשת אם המאפיינים בהודעת Pub/Sub חורגים מגודל המגבלה של הכותרת בשרת.

כדי לפתור את הבעיות האלה, אפשר לנסות את הפתרונות הבאים:

  • משביתים את האפשרות כתיבת מטא-נתונים.
  • מפעילים תור הודעות שלא ניתן להעביר (DLQ) במינוי דחיפה שלכם. ההגדרה הזו מפנה מחדש הודעות פרטיות שלא ניתן למסור. אחרי כן, המינוי ימשיך לפעול, אבל ההודעות עם השגיאות יופנו לנושא נפרד לצורך ניתוח נוסף.

איך בודקים אם בוטלה העטיפה של מטען הייעודי (payload)

  1. נכנסים לדף Subscriptions במסוף Google Cloud .

    הרשמות פתוחות ל-Pub/Sub

  2. לוחצים על שם השירות.

    ייפתח דף הפרטים של השירות.

  3. בטבלת ההגדרות, מחפשים את הערכים הבאים: Message data unwrapping ו-Write message metadata.

    הסטטוס של עטיפת מטען הייעודי (מופעל או מושבת) מוצג בשורה המתאימה בטבלה.

המאמרים הבאים

  • אם אתם עדיין נתקלים בבעיות בפתיחת המטען הייעודי (payload), אפשר לעיין במאמר בנושא קבלת תמיכה.