Event notifications
เนื้อหาในบทความนี้ต่อจาก
Message queues, Commands, Events, และ Queries
Event notifications
event notification คือ message ที่เกี่ยวกับการเปลี่ยนแปลงของ business domain มีเป้าหมายคือ แจ้งให้ consumer ได้รับรู้หาก application มีสถานะที่เปลี่ยนแปลงไปจากเดิม ดังนั่น mesaage ของการแจ้งเตือนจึงมีข้อมูลที่ minimum อาจจะมีแค่ identifier (ID), query url หรือ timesamp ของ event ถ้า consumer ต้องการข้อมูลเพิ่มเติมจะเป็นการ request มาที่ producer ผ่าน protocol ที่ตกลงกันไว้
ตัวอย่าง Message ของ Event notifications
{
"type": "payment-received",
"timestamp": 1670827461,
"payload": {
"id": "20221212001",
"link": "/getPaymentInfo"
}
}
สมมุติว่าเรามี payment service เมื่อลูกค้าชำระเงินสำเร็จ เกิด event ที่ชื่อว่า payment-received ฝั่ง consumer ที่สนใจได้รับ message ที่ประกอบไปด้วย type ของ event, timesamp, id และ link จะสังเกตเห็นว่าไม่มีข้อมูลที่เกี่ยวกับรายละเอียดของการการชำระเงิน เช่น จำนวนเงินเท่าไร ชำระผ่านธนาคารอะไร หาก consumer ต้องการข้อมูลเหล่านี้จะต้อง request ไปที่ link ใน message เพื่อขอข้อมูลเพิ่มเติม จุดขายของ event notifications คือ
- Security การที่ consumer ต้อง request เพื่อขอละเอียดเพิ่มเติมของ event ช่วยให้เราสามารถป้องกัน sharing sensitive data และเรายังสามารถทำ authorization เพื่อตรวจสอบสิทธิ์ในการเข้าถึงข้อมูล
- Data consistency หนึ่งในปัญหาที่แสนจะปวดหัวของการทำ EDA คือเรื่อง Data consistency รูปแบบของ event notification ที่บังคับให้ consumer ต้องขอข้อมูลเพิ่มเติมจากฝั่ง producer ทำให้สามารถมั่นใจว่าข้อมูลที่ได้กลับไปจะเป็น up-to-date เสมอ