בחירת שיטה ליצירת משימה

אפשר ליצור משימות HTTP באמצעות השיטה BufferTask או השיטה CreateTask. בדף הזה מוסבר איך לבחור בין שתי השיטות ליצירת משימות HTTP.

ה-method ‏BufferTask מאפשרת ליצור משימה על ידי שליחת בקשת HTTP לתור. השיטה CreateTask מאפשרת ליצור משימה על ידי בניית אובייקט המשימה. ברוב התרחישים לדוגמה, אין צורך ליצור במפורש את אובייקט המשימה. השיטה הכי טובה ליצירת משימות תלויה בשאלה אם התור שלכם כולל ניתוב ברמת התור.

לפני שמתחילים

כדאי לעיין ברשימת תרחישי השימוש הבאה כדי לבדוק אם אחד מהם רלוונטי לכם:

  • אתם רוצים ליצור משימות באמצעות RPC API או ספריות לקוח (ולא באמצעות API בארכיטקטורת REST)
  • אתם רוצים ליצור משימות כאובייקטים של App Engine task (ולא כאובייקטים של משימות יותר טיפוסיות ליעדי HTTP כלליים, שיכולים להיות יעדי App Engine או לא)

אם אחד מהמקרים האלה רלוונטי לכם, אתם לא צריכים לבחור שיטה ליצירת משימות כי נתמכת רק שיטה אחת (שיטת CreateTask). אפשר לעבור ישירות אל CreateTaskהתיעוד של סוג המשימה:

בדיקה אם התור כולל ניתוב ברמת התור

  1. מריצים את הפקודה gcloud tasks queues describe בטרמינל:

    gcloud tasks queues describe QUEUE_NAME \
        --location=LOCATION

    מחליפים את מה שכתוב בשדות הבאים:

    • QUEUE_NAME: השם של התור.
    • LOCATION: האזור שבו התור נמצא. אם לא מציינים מיקום, ואם יש אפליקציה משויכת, המערכת משתמשת במיקום של אפליקציית App Engine של הפרויקט.
  2. בפלט, מחפשים את השדה httpTarget ובודקים אם הערך uriOverride הוגדר.

תורים עם ניתוב ברמת התור

בתורים עם ניתוב ברמת התור, שיטת יצירת המשימה תלויה בדרישות הניתוב של המשימה:

  • למשימה יש את אותן דרישות ניתוב שצוינו ברמת התור: משתמשים ב-BufferTask. איך יוצרים משימות באמצעות השיטה BufferTask
  • למשימה יש דרישות ניתוב שונות מאלה שצוינו ברמת התור: צריך להגדיר את UriOverrideEnforceMode של התור לערך IF_NOT_EXISTS כדי לוודא שהניתוב ברמת התור חל על משימות שלא קיים עבורן ניתוב (לדוגמה, משימות BufferTask), אבל הוא מכבד את הניתוב של משימות שכוללות מפרטי ניתוב משלהן. במקום זאת, אתם צריכים להשתמש ב-CreateTask. השיטה הזו מאפשרת לכם לציין ניתוב פרטני למשימה. איך יוצרים משימות באמצעות השיטה CreateTask

תורים ללא ניתוב ברמת התור

לתורים ללא ניתוב ברמת התור, יוצרים משימות באמצעות השיטה CreateTask (או מגדירים ניתוב ברמת התור). השיטה CreateTask כוללת הגדרת ניתוב למשימה, שנדרשת לתורים שאין להם כבר פרטי ניתוב ברמת התור. איך יוצרים משימות באמצעות השיטה CreateTask

הסבר על ניתוב ברמת התור

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

בוחרים ניתוב ברמת התור אם רוצים:

  • יצירת משימות באמצעות בקשות HTTP רגילות (במקום באמצעות בניית אובייקט המשימה)
  • שימוש בתור כמאגר זמני לפני שירות יעד

הגישה לכל יעד

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

  • ניהול משימות על סמך היעד שלהן (לדוגמה, הפניה מחדש של קבוצת משימות אם שירות היעד מושבת)
  • שליחת כל המשימות בתור לאותו יעד
  • יצירת משימות בלי ליצור באופן מפורש את אובייקט המשימה באמצעות השיטה BufferTask

הפעלה והשבתה של התנהגות ברירת המחדל של התור

אחרי שמגדירים ניתוב ברמת התור, אפשר להחליט מתי הוא יופעל על ידי הגדרת UriOverrideEnforceMode של התור.

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