לדלג לתוכן

3.3 ארכיטקטורה מונעת אירועים תרגול

עיצוב אירועים

תרגיל 1 - הגדרת אירועים

עבור כל פעולה ב-TaskFlow, הגדירו את האירוע המתאים עם כל השדות הנדרשים:

  1. משתמש נרשם למערכת
  2. משימה הוקצתה למשתמש
  3. תגובה נוספה למשימה
  4. פרויקט אורכב

לכל אירוע: שם האירוע (past tense), רשימת שדות ולמה כל שדה נחוץ.

תרגיל 2 - Event Bus פשוט

מימשו event bus פשוט בזיכרון (בלי Kafka) שתומך ב:
- publish(event_type, event_data)
- subscribe(event_type, handler_function)
- subscribe_all(handler_function) - מקשיב לכל האירועים

לאחר מכן:
- כתבו handler שמתעד לlog כל אירוע עם timestamp
- כתבו handler שסופר כמה אירועים מכל סוג התקבלו

תרגיל 3 - Saga

תכננו Saga לתרחיש הבא:

תרחיש: משתמש מנסה לרכוש subscription premium ל-TaskFlow.

השלבים:
1. חייב את כרטיס האשראי
2. שדרג את המשתמש ל-premium
3. שלח מייל אישור

מה קורה אם שלב 2 נכשל? מה אם שלב 3 נכשל?
כתבו את ה-Saga עם compensating transactions.