הפעלה מחדש של הודעה ב-Pub/Sub על ידי מעבר לתמונת מצב או לחותמת זמן
מערכת Pub/Sub לא יכולה לאחזר את ההודעות אחרי שאישרתם את קבלתן. עם זאת, לפעמים יכול להיות שתצטרכו להפעיל מחדש את ההודעות שאושרו, למשל אם אישרתם בטעות. אחר כך תוכלו להשתמש בתכונה Seek כדי לסמן הודעות שאושר שהן התקבלו כהודעות שלא אושר שהן התקבלו, וכך לאלץ את Pub/Sub לשלוח מחדש את ההודעות האלה. אפשר גם להשתמש בחיפוש כדי למחוק את ההודעות שלא אושרו, על ידי שינוי הסטטוס שלהן ל'אושר'.
אפשר להשתמש בתמונת מצב או בחותמת זמן כדי להפעיל מחדש את ההודעות במינוי. במדריך הזה מוסבר איך להפעיל מחדש הודעות Pub/Sub שאושרו בעבר באמצעות חיפוש.
לחצו על תראו לי איך כדי לקרוא הסבר מפורט על המשימה ישירות במסוף Google Cloud :
לפני שמתחילים
לפני שמריצים את צינור הנתונים, צריך לבצע את השלבים הבאים.
הגדרת הפרויקט
- נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
Set up a Google Cloud console project.
Click to:
- Create or select a project.
- Enable the Pub/Sub API for that project, if it is not already enabled.
You can view and manage these resources at any time in the Google Cloud console.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init Set up a Google Cloud console project.
Click to:
- Create or select a project.
- Enable the Pub/Sub API for that project, if it is not already enabled.
You can view and manage these resources at any time in the Google Cloud console.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
התפקידים הנדרשים
כדי להשלים את המדריך למתחילים הזה, אתם צריכים את התפקידים הבאים בניהול הזהויות והרשאות הגישה (IAM).
כדי לקבל את ההרשאות שדרושות להשלמת המדריך למתחילים, בקשו מהאדמין להקצות לכם את התפקידים הבאים ב-IAM בפרויקט:
- אדמין בשימוש בשירותים (
roles/serviceusage.serviceUsageAdmin) - עורך Pub/Sub (
roles/pubsub.editor)
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
שימוש בממשק שורת הפקודה (CLI) של gcloud
הדרך הקלה ביותר להשתמש ב-gcloud היא ב-Cloud Shell . אפשר גם להשתמש בכלי של שורת הפקודה שמגיע עם Google Cloud CLI. הדרישות המוקדמות להגדרה מתקיימות באופן אוטומטי ב-CLI של gcloud אם יוצרים מכונה חדשה של Compute Engine עם היקפי גישה שכוללים את כל Cloud APIs ואת תמונת ברירת המחדל של Debian. הדרך הכי פשוטה ליצור אותו היא דרך ממשק המשתמש של Compute Engine. בהמשך המאמר הזה נניח שאתם משתמשים באחד מהכלים האלה של שורת הפקודה.
למידע נוסף על השימוש ב-gcloud, ראו את המדריך למתחילים של gcloud.
רשימה מלאה של פקודות Pub/Sub gcloud זמינה גם בקטע gcloud pubsub במאמר gcloud reference.
יצירה של תמונות מצב וחיפוש שלהן
יוצרים נושא ומינוי. כדי לשפר את האינטראקטיביות, כדאי להשתמש במועד קצר יותר לאישור:
gcloud pubsub topics create seek-demo-topic gcloud pubsub subscriptions create seek-demo-sub --topic=seek-demo-topic --ack-deadline=10
עד עכשיו, לא התקבל אישור על אף אחת מההודעות במינוי. כדי לתעד את המצב הזה, יוצרים snapshot:
gcloud pubsub snapshots create my-snapshot --subscription=seek-demo-sub gcloud pubsub snapshots list
עכשיו מפרסמים, מושכים ומאשרים הודעה:
gcloud pubsub topics publish seek-demo-topic --message 'hello, world' gcloud pubsub subscriptions pull --auto-ack seek-demo-sub
שימו לב ששליפות עוקבות לא מניבות הודעות חדשות (יכול להיות שיהיו כמה כפילויות זמניות):
gcloud pubsub subscriptions pull --auto-ack seek-demo-sub
כדי לשחזר את ההודעה, אפשר לחפש את המינוי לתמונת המצב. שימו לב: יכול להיות שההודעה לא תישלח באופן מיידי. ב-Pub/Sub אין הבטחה לגבי זמן האחזור של מסירת ההודעה. עם זאת, מה שמובטח הוא שההודעות שנשמרו בתמונת המצב יימסרו לפחות פעם אחת:
gcloud pubsub subscriptions seek seek-demo-sub --snapshot=my-snapshot gcloud pubsub subscriptions pull seek-demo-sub --auto-ack
שימו לב שאפשר לחפש מינויים אחרים לאותו קובץ snapshot, כל עוד נושא המינוי זהה לנושא של קובץ ה-snapshot:
gcloud pubsub subscriptions create seek-demo-sub2 --topic=seek-demo-topic --ack-deadline=10 gcloud pubsub subscriptions seek seek-demo-sub2 --snapshot=my-snapshot
עכשיו, שליפת הודעות מ-seek-demo-sub2 תניב הודעות שפורסמו לפני ש-seek-demo-sub2 נוצר:
gcloud pubsub subscriptions pull seek-demo-sub2 --auto-ack
כשמסיימים לעבוד עם קובץ ה-snapshot, מנקים את המשאבים:
gcloud pubsub snapshots delete my-snapshot
דילוג לחותמת זמן
דרך נוספת להפעיל מחדש הודעות שאושר שהן התקבלו היא לעבור לחותמת זמן. כדי לדלג לנקודת זמן, קודם צריך להגדיר את המינוי כך שישמור הודעות שאושרו באמצעות retain-acked-messages. אם הערך של retain-acked-messages מוגדר, מערכת Pub/Sub שומרת הודעות שאושרו למשך 7 ימים.
צריך לבצע את השלב הזה רק אם רוצים לעבור לנקודת זמן ולא לצילום מסך.
gcloud pubsub subscriptions update seek-demo-sub --retain-acked-messages
עכשיו מפרסמים, שולפים ומאשרים קבלה של הודעה:
gcloud pubsub topics publish seek-demo-topic --message 'hello, world' gcloud pubsub subscriptions pull --auto-ack seek-demo-sub
השליפה הבאה לא אמורה להחזיר הודעות:
gcloud pubsub subscriptions pull seek-demo-sub
עכשיו מחפשים את המינוי אחורה בזמן כדי לשחזר את ההודעה. שימו לב שיש הבדלים בין הדגלים של פעולות אריתמטיות על תאריכים בגרסאות GNU ו-BSD (MacOS) של פקודת התאריך:
export TS_FORMAT=%Y-%m-%dT%H:%M:%SZ gcloud pubsub subscriptions seek seek-demo-sub --time=$(date -u -d '-10 min' +$TS_FORMAT)
מידע נוסף על פורמטים נתמכים של שעות זמין במאמר gcloud topic datetimes.
במשיכה הבאה אמורה להתקבל שוב ההודעה:
gcloud pubsub subscriptions pull --auto-ack seek-demo-sub
אפשר גם להשתמש בחיפוש כדי לדלג על מסירת כל ההודעות שפורסמו לפני נקודת זמן מסוימת, כמו השעה הנוכחית. כדי לעשות את זה, צריך להעביר את המינוי לזמן הנוכחי כדי לסמן את כל ההודעות הקודמות כמאושרות:
gcloud pubsub topics publish seek-demo-topic --message 'hello, world' gcloud pubsub subscriptions seek seek-demo-sub --time=$(date -u +$TS_FORMAT)
אחרי עיכוב בהפצה (כ-60 שניות), ההודעה לא תימסר יותר. כדי לבדוק את זה, מריצים שוב ושוב את פקודת המשיכה בלי לאשר את ההודעה:
gcloud pubsub subscriptions pull seek-demo-sub
שימוש במסוף Cloud
בדף פרטי המינוי במסוף Cloud אפשר ליצור תמונות מצב או לחפש תמונות מצב קיימות. כללי מתן השמות לתמונות מצוינים במאמר שמות משאבים.
יצירת תמונת מצב
נכנסים לדף Pub/Sub subscriptions במסוף Google Cloud .
בוחרים מינוי מהרשימה.
לוחצים על יצירת תמונת מצב.
מזינים מזהה לתמונת המצב ולוחצים על יצירה כדי לשמור.
אפשר לראות את התמונות בדף snapshots במסוף Google Cloud . אפשר גם לנהל את התמונות המקדימות בדף הפרטים של נושא ספציפי.
צפייה חוזרת במינוי
בתיבת הדו-שיח הפעלה מחדש של הודעות אפשר לחפש נקודת זמן קודמת או תמונת מצב שמורה. כדי לפתוח את תיבת הדו-שיח:
נכנסים לדף Pub/Sub subscriptions במסוף Google Cloud .
בוחרים מינוי מהרשימה.
לוחצים על הפעלת ההודעות מחדש.
בקטע Seek, בוחרים באפשרות To a previous time point או To a snapshot, ואז בוחרים את נקודת הזמן או את קובץ ה-snapshot שאליו רוצים לדלג.
לוחצים על דילוג כדי להפעיל מחדש את ההודעות.
איך היה?
בדף התמיכה של Pub/Sub יש מקורות מידע וקישורים נוספים.
המאמרים הבאים
מידע נוסף זמין במאמר הפעלה מחדש של הודעות וביטול שלהן.