Custom topics การกรอง และการ retry

พัฒนา Solution แบบ Event-based และ Message-based บน Azure

Fiodar Sazanavets

Senior Software Engineer and Microsoft MVP

สิ่งที่จะได้เรียนรู้

  • Event Grid Domains
  • การกรองขั้นสูง
  • Dead-lettering
    • ปรับแต่งพฤติกรรมการ retry

Event Grid Domain

พัฒนา Solution แบบ Event-based และ Message-based บน Azure

Event Grid Domains

Event Grid Domain

พัฒนา Solution แบบ Event-based และ Message-based บน Azure

Domain vs Custom Topic

Domain

  • จัดการ topic แบบแยกส่วนจำนวนมาก
  • ครอบคลุมหลายส่วน:
    • แอปพลิเคชัน
    • ทีม
    • Tenants
  • แยก customer ออกจากกันอย่างชัดเจน

Custom Topic

  • Topic แบบ stand-alone
  • สำหรับ publisher เดียว
  • เหมาะกับ consumer กลุ่มเล็ก

Event Grid Domain

Event Grid Topic

พัฒนา Solution แบบ Event-based และ Message-based บน Azure

การกรองขั้นสูง

  • Filter ส่งเฉพาะ event ที่ subscriber ต้องการ

  • Subject prefix และ suffix filter เหมาะกับ subject ที่มีโครงสร้างคล้าย path

    • ตัวอย่างเช่น /sales/ หรือ .jpg
  • กรอง event ตาม ประเภท event ได้เช่นกัน

  • Advanced filter รองรับการเปรียบเทียบ เช่น มากกว่า น้อยกว่า และ contains

  • Filter หลายตัวรวมกันด้วย logical AND เพื่อควบคุมอย่างแม่นยำ

การกรองขั้นสูง

พัฒนา Solution แบบ Event-based และ Message-based บน Azure

Dead-lettering ใน Event Grid

  • Event Grid รองรับ dead-lettering เป็นกลไกป้องกันการสูญหาย

  • หากส่งไม่สำเร็จหลัง retry ครบทุกรอบ event จะไม่หายไป

  • Event ที่ส่งไม่ได้จะถูกเขียนไปยัง dead-letter storage container

  • บริบทของความล้มเหลวถูกบันทึกไว้เพื่อ ตรวจสอบและ audit

  • สามารถ replay event ในภายหลัง ผ่าน recovery workflow

Event Grid dead lettering

พัฒนา Solution แบบ Event-based และ Message-based บน Azure

การ retry และ back-off

  • Event Grid ใช้ exponential back-off ในการ retry การส่ง

  • ช่วงเวลาระหว่างการ retry จะเพิ่มขึ้น หลังแต่ละครั้งที่ล้มเหลว

  • แต่ละ event subscription มี retry policy ที่ปรับแต่งได้

  • กำหนด จำนวนครั้งสูงสุดในการส่ง และ time to live (TTL) ได้

  • เลือกการตั้งค่า retry ตาม ผลกระทบของ event ที่ล่าช้าหรือสูญหาย

Exponential back-offs

พัฒนา Solution แบบ Event-based และ Message-based บน Azure

การรับประกันการส่ง

การรับประกันการส่ง

  • Event Grid รับประกัน at-least-once delivery

  • อาจเกิด duplicate และ ไม่รับประกันลำดับแบบ global

  • การรับประกันนี้ใช้กับ ทั้ง system event และ custom event

  • ความแตกต่างอยู่ที่ ผู้ที่เป็นเจ้าของ publisher

  • System event — Azure เป็นผู้เผยแพร่ข้อมูล

  • Custom event — คุณเป็นผู้เผยแพร่และต้องจัดการ deduplication เอง

พัฒนา Solution แบบ Event-based และ Message-based บน Azure

มาฝึกกันเถอะ!

พัฒนา Solution แบบ Event-based และ Message-based บน Azure

Preparing Video For Download...