3.3 ארכיטקטורה מונעת אירועים תרגול
עיצוב אירועים¶
תרגיל 1 - הגדרת אירועים¶
עבור כל פעולה ב-TaskFlow, הגדירו את האירוע המתאים עם כל השדות הנדרשים:
- משתמש נרשם למערכת
- משימה הוקצתה למשתמש
- תגובה נוספה למשימה
- פרויקט אורכב
לכל אירוע: שם האירוע (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.