משך: 2 שעות אקדמיות (90 דקות).

מטרת השיעור: הסטודנטים יראו בפועל ש-Kafka לא תלוי בשפה, כהכנה לפרויקטים הצוותיים הרב-שפתיים בהמשך הקורס.

בסוף השיעור הסטודנטים צריכים: לכתוב Consumer בסיסי בPython שמאזין לTopic שProducer ב-C# יצר, ולהסביר את מושג ה-Message Contract.

דגש קריטי: זהו שיעור-גשר ליחידת ה-Python/Pandas הבאה — אין ציפייה לידע Python מוקדם, רק תחביר מינימלי לצורך Consumer בסיסי.


מהלך השיעור

חלק בשיעורמשךהערות ודגשים
פתיחה וחיבור5 דקותהזכירו JSON כLanguage-Agnostic מהיחידה הראשונה
הרעיון: Kafka לא תלוי-שפה15 דקותProducer C#, שאלה: איך Python “מדבר” איתו?
הדגמה חיה: Python Consumer30 דקותכתיבה משותפת, תחביר בסיסי מוסבר תוך כדי
Message Contract15 דקותהדגישו את החשיבות של תיאום שדות JSON
Consumer Group שונה = גם מקבל15 דקותקישרו לשיעור הקודם
תרגול מודרך10 דקותתרגיל 1

דגשים להעברת השיעור

  • הסטודנטים כנראה לא מכירים Python syntax עדיין — כתבו את הConsumer בPython יחד על הלוח/מסך, שורה-שורה, עם הסבר קצר לכל שורה (import, dict access עם [], f-strings) — לא להניח היכרות מוקדמת.
  • הדגישו שהמטרה כאן היא לא ללמד Python לעומק (זה מגיע ביחידה הבאה) — רק להראות שKafka עובד זהה מכל שפה.
  • Message Contract שווה דיון קצר על תיעוד — איך צוות אמיתי היה מתעד/משתף מבנה JSON בין שירותים בשפות שונות (README משותף, JSON Schema, וכו’).

מושגים

Language-Agnostic Protocol — לא תלוי בשפת מימוש. Message Contract — ההסכם על מבנה ההודעה.


תרגיל חשיבה

שאלת פתיחה: “בפרויקט הצוותי שמגיע בהמשך הקורס, חבר בצוות שלכם יכתוב שירות בPython וחבר אחר בC#. אם תשנו שדה בהודעת JSON בלי לתאם, מה קורה לצד השני?”

מהלך: הובילו לתובנה: השירות השני (בשפה אחרת) לא יקבל שגיאת קומפילציה שמתריעה — הוא פשוט “לא ימצא” את השדה שציפה לו (KeyError בPython, או ערך null/default ב-C#), לרוב בזמן ריצה. זו בדיוק הסיבה שMessage Contract חייב להיות מתועד ומוסכם מראש בין הצוות, לא “מוסכם בעל פה”.

מה המרצה מראה בסוף: שנו שדה בProducer C# (למשל שינוי שם Total→TotalAmount) בלי לעדכן את הConsumer בPython, והריצו — הראו את השגיאה/ההתנהגות המפתיעה שנוצרת. תקנו את שני הצדדים יחד ותנו לזרימה לעבוד תקין מחדש.