העברת תורי שליפה ל-Pub/Sub‏ (Java)

בדף הזה מוסבר איך להעביר קוד של תור משימות מסוג שליפת הודעות מתור המשימות ל-Pub/Sub. כיום, Pub/Sub היא הדרך המומלצת לביצוע עבודה בתור משימות מסוג שליפת הודעות ב-App Engine.

אם האפליקציה שלכם משתמשת גם בתורי שליפה וגם בתורי דחיפה, כדאי להשתמש במדריך הזה כדי להעביר את תורי השליפה ל-Pub/Sub לפני שמעבירים את תורי הדחיפה לשירות החדש של תורי דחיפה Cloud Tasks. לא מומלץ להעביר את תורי השליפה אחרי שמעבירים את תורי הדחיפה ל-Cloud Tasks, כי סביר להניח שהשימוש הנדרש בקובץ queue.yaml יגרום להתנהגות לא צפויה ב-Cloud Tasks.

תכונות שלא זמינות כרגע ב-Pub/Sub

התכונות הבאות של תורי משימות לא זמינות כרגע ב-Pub/Sub:

  • הוספה לקבוצה לפי תג
  • ביטול כפילויות אוטומטי

תמחור ומכסות

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

תמחור

ל-Pub/Sub יש תמחור משלו. בדומה לתורי משימות, שליחת בקשות לאפליקציית App Engine באמצעות Pub/Sub עלולה לגרום לאפליקציה שלכם לחייב אתכם בעלויות.

מכסות

המכסות של Pub/Sub שונות מהמכסות של תורי משימות. בדומה לתורי משימות, שליחת בקשות לאפליקציית App Engine מ-Pub/Sub עשויה להשפיע על מכסות הבקשות של App Engine.

לפני ההעברה

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

הפעלת Pub/Sub API

כדי להפעיל את Pub/Sub API, לוחצים על Enable ב-Pub/Sub API בספריית ה-API. אם במקום הלחצן Enable מופיע הלחצן Manage, סימן שהפעלתם בעבר את Pub/Sub API בפרויקט, ואין צורך להפעיל אותו שוב.

אימות האפליקציה ב-Pub/Sub API

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

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

כדי לפרוס את האפליקציה ב-App Engine, לא צריך לספק אימות חדש. פרטי האימות של אפליקציות App Engine מוסקים מ-Application Default Credentials‏ (ADC).

הורדת Google Cloud CLI

אם לא התקנתם בעבר את Google Cloud CLI, הורידו והתקינו אותו כדי להשתמש ב-ה-CLI של gcloud עם Pub/Sub API. אם כבר התקנתם את Google Cloud CLI, מריצים את הפקודה הבאה מהטרמינל.

gcloud components update

ייבוא ספריות לקוח של Cloud

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

תורים של Pub/Sub ושליפה

השוואה בין תכונות

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

התכונה Task Queues תכונת Pub/Sub
הבאים בתור נושא
משימה הודעה
קובץ שירות מנויים

מידע נוסף על ארכיטקטורת Pub/Sub זמין במאמר Cloud Pub/Sub: שירות העברת הודעות עם מלוא היכולות של Google.

השוואה בין תהליכי עבודה

בהמשך מוצגת השוואה בין תהליך עבודה אופייני לתור משימות מסוג pull ב-Task Queues לבין מינוי מסוג pull ב-Pub/Sub.

תהליך העבודה עם תורי משימות זרימת עבודה של Pub/Sub
אתם יוצרים את תור ההמתנה למשיכת נתונים יוצרים את הנושא ומצרפים אליו את המנוי (כלומר, את העובד)
יוצרים את המשימה ומכניסים אותה לתור יוצרים את ההודעה ומפרסמים אותה בנושא
העובד שוכר את המשימה המשתמש שנרשם לנושא מושך את ההודעה מהנושא
העובד מעבד את המשימה המנוי מעבד את ההודעה
העובד מוחק את המשימה מהתור המנוי מאשר את ההודעה
החוזה יפוג הנושא מוחק את ההודעה כשכל המנויים שלו אישרו את קבלת ההודעה

יצירת מינויים לשליפה ב-Pub/Sub

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

מחיקת תורים להעברת הודעות

אחרי שמעבירים את תורי המשימות שלכם לתורי משימות מסוג pull למינויי pull ב-Pub/Sub, צריך למחוק אותם מתורי המשימות באמצעות קובץ ה-queue.yaml. מומלץ למחוק כל תור משימות מסוג pull לפני שמעבירים את התור הבא. כך האפליקציה לא תשכפל את העבודה שהיא מקבלת ממינוי ה-pull החדש ב-Pub/Sub בזמן שאתם מעבירים את תורי המשימות האחרים מסוג pull. שימו לב: מחיקה של תורי משימות מסוג pull ב-Task Queues בנפרד ולא בפריסה אחת עשויה להשפיע יותר על מכסת הפריסה שלכם ב-App Engine.

אחרי שמוחקים את כל תורי שליפת המשימות מ-Task Queues, אפשר להשמיט את קובץ queue.yaml מהפריסות העתידיות של האפליקציה.

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

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