Event, Topic ו-Key: שלושת המושגים שלא כדאי לערבב
Event, Topic ו-Key: שלושת המושגים שלא כדאי לערבב
כשמדברים על מערכות Event-driven, שלושה מושגים חוזרים שוב ושוב:
Event Topic Key
הם נשמעים קרובים, לפעמים אפילו נרדפים - אבל הם מייצגים שלושה דברים שונים לגמרי.
בלי ההבחנה הזו, קשה להבין איך מערכות עובדות בפועל.
Event: מה קרה
Event הוא הצהרה על עובדה שקרתה במערכת.
לא בקשה. לא פקודה. לא “תעשה”.
אלא: משהו כבר קרה.
לדוגמה:
- נוצרה הזמנה
- תשלום הושלם
- משתמש עודכן
Event מתאר שינוי במציאות של המערכת. הוא לא אומר מה צריך לעשות עכשיו - הוא רק מודיע שקרה משהו.
Topic: על מה זה מדבר
Topic הוא קטגוריה שאליה משויכים Events מאותו סוג.
אפשר לחשוב עליו כעל: “באיזה נושא האירוע הזה?”
לדוגמה:
- order.created
- payment.completed
- user.updated
Topic אינו אירוע אחד - אלא שם שמאגד כל האירועים מהסוג הזה.
אם Event הוא משפט, Topic הוא הנושא של המשפט.
Key: למי או למה זה שייך
Key הוא מזהה שמקשר Event לישות מסוימת.
לדוגמה:
- מזהה הזמנה
- מזהה משתמש
- מזהה חשבון
אם נחזור לדוגמה:
- Event: נוצרה הזמנה
- Topic: order.created
- Key: order_id = 123
ה-Key אומר: האירוע הזה שייך להזמנה מסוימת, לא סתם “לאיזו הזמנה”.
לחבר את שלושתם יחד
אותו Event תמיד ייראה כך, רעיונית:
- מה קרה? → Event
- על מה זה מדבר? → Topic
- לאיזה ישות זה קשור? → Key
השורה התחתונה
Event, Topic ו-Key אינם פרטים טכניים. הם דרך לחשוב על מידע במערכת.
Event אומר מה קרה. Topic אומר על מה זה. Key אומר למי או למה זה שייך.
ברגע שהשלישייה הזו יושבת ברור בראש, אפשר סוף-סוף לשאול את השאלה הבאה:
איך המערכת משתמשת בזה כדי להחליט לאן האירוע הולך?
וזו כבר בדיוק הנקודה שבה מתחיל ה-Routing.