לפני שמשדרגים לגרסה האחרונה של SDK של שירותי App Engine, כדאי לעיין בסקירה הכללית של המעבר.
אתם יכולים לעבור ל-Cloud Tasks באופן אוטומטי על ידי עדכון ה-SDK של שירותי App Engine לגרסה האחרונה. אחרי השדרוג, ערכת ה-SDK מפנה אוטומטית קריאות ל-PushQueue אל ממשקי ה-API של חזית Cloud Tasks. מערכת Cloud Tasks שומרת את תורי המשימות והמשימות הקיימים, כך שלא נדרשת העברה נוספת.
מתחת לפני השטח, ערכת ה-SDK המעודכנת משתמשת בממשקי Cloud Tasks API כדי לשמור על שוויון תכונות עם התכונות של Task Queues. ערכת ה-SDK תומכת בפעולות הבאות:
- יצירת משימות בקבוצות: ה-SDK משתמש בממשקי API לפעולות מקובצות כדי לתמוך בהוספה של עד 100 משימות בקריאה אחת.
- ניסיונות חוזרים ברמת המשימה: ה-SDK תומך בהגדרות של ניסיונות חוזרים ספציפיים למשימה.
- משימות טרנזקציונליות: ערכת ה-SDK מוסיפה משימות לתור בתוך טרנזקציות של Datastore. כדי לשמור על מהימנות, צריך ליצור או לשנות את הקובץ
cron.yaml.
תמחור ומכסות
העברת תורי הדחיפה ל-Cloud Tasks עשויה להשפיע על התמחור והמכסות של האפליקציה.
תמחור
לפני המעבר, כדאי לעיין בתמחור של Cloud Tasks כדי להעריך את העלות החודשית.
בדומה לתורי משימות, שליחת בקשות לאפליקציית App Engine עם יעד דחיפה של Cloud Tasks היא בחינם. עם זאת, בניגוד ל-Task Queues, ב-Cloud Tasks יש חיוב על פעולות שמתבצעות, כמו יצירה, מחיקה או ניהול של משימות. יכול להיות שהעלות החודשית הכוללת תהיה גבוהה יותר בהשוואה לתור המשימות של App Engine שניתן בחינם.
מכסות
בקשות Cloud Tasks נספרות גם במכסות הבקשות של App Engine.
בדומה לתורי משימות, ל-Cloud Tasks יש מכסות ספציפיות לשירות. המיגרציה ל-Cloud Tasks כנראה תשנה את המכסות שלכם.
לפני שמתחילים
בקטעים הבאים נסביר על שיקולי העלות והמכסה לפני העברת תורי הודעות מסוג Push ל-Cloud Tasks.
מוודאים שיש לכם גישה לקוד המקור של App Engine.
מפעילים את Cloud Tasks API ואת Cloud Scheduler API:
כדי לוודא שלחשבון השירות של App Engine יש את ההרשאות הנדרשות כדי לאפשר ל-SDK לשלוח משימות ל-Cloud Tasks API, צריך לבקש מהאדמין להקצות את תפקיד ה-IAM Cloud Tasks Enqueuer (
roles/cloudtasks.enqueuer) בפרויקט.
עדכון ה-SDK של שירותי App Engine
מוודאים שהאפליקציה משתמשת בגרסה העדכנית ביותר של App Engine services SDK.
ב-
pom.xml, מעדכנים את ה-SDK של שירותי App Engine לגרסהv5.2.0-betaומעלה.com.google.appengine appengine-api-1.0-sdk v5.2.0-beta הפעלת ניתוב של Cloud Tasks
runtime: java25 service: my-service-b env_variables: APPENGINE_USE_CLOUDTASK_PUSH_QUEUE: "true"מעדכנים את התלות ב-App Engine SDK בקובץ
pom.xmlלגרסהv5.2.0-betaואילך.אם האפליקציה משתמשת בהגדרות אישיות ב-XML (
appengine-web.xml):<appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <service>my-java-service-b</service> <runtime>java25</runtime> <env-variables> <env-var name="APPENGINE_USE_CLOUDTASK_PUSH_QUEUE" value="true" /> </env-variables> </appengine-web-app>פריסת האפליקציה:
gcloud app deployאימות של תורי הודעות בדחיפה ב-Cloud Tasks כדי לוודא שהאפליקציה משתמשת ב-Cloud Tasks.
הגדרת משימות שקשורות לעסקאות (אופציונלי)
אם האפליקציה שלכם מוסיפה משימות לתור בתוך טרנזקציות של Datastore, ה-SDK מסתמך על משימת cron פנימית כדי לוודא שכל המשימות שלא נוספו לתור במהלך ביצוע הטרנזקציה ב-Datastore יעברו עיבוד בסופו של דבר.
כדי לטפל במשימות טרנזקציונליות בתור דחיפה (push queue), צריך ליצור או לעדכן את הקובץ cron.yaml כדי להפעיל את המעבד הפנימי באופן תקופתי. לדוגמה:
cron:
- description: "Process push queue transactional tasks"
url: /_ah/cloudtask/sweep
schedule: every 30 minutes # Change this based on the usage pattern
מוסיפים מיפוי של כתובות URL בקובץ web.xml עבור utils.servlet.SweeperServlet, או בקובץ utils.servlet.jakarta.SweeperServlet עבור סביבות זמן ריצה של Java 17/21 Jakarta EE.
<servlet>
<servlet-name>cloudtask_sweep</servlet-name>
<servlet-class>com.google.apphosting.utils.servlet.SweeperServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>cloudtask_sweep</servlet-name>
<url-pattern>/_ah/cloudtask/sweep</url-pattern>
</servlet-mapping>
המאמרים הבאים
- מאמרי העזרה של Cloud Tasks
- ספריית הלקוח של Cloud Tasks
- סקירה כללית על Cloud Tasks REST reference
- סקירה כללית של חומר עזר של Cloud Tasks RPC