Blog top image

Event delivery


ইভেন্ট ড্রিভেন এ তিনটা পার্টি জড়িত থাকে 

১। প্রডিউসার 

২। মেসেজ ব্রোকার 

৩। কনজুমার 


যদি একটা ইভেন্ট প্রডিউস করা হয়, তাহলে কী কী ইস্যু  হতে পারে 


ইস্যু ১

প্রডিউসার মেসেজ প্রডিউস করেছে কিছু ব্রোকারের কাছে যাওয়ার আগেই নেটওয়ার্কের মেসেজ হারায়া গেছে 


ইস্যু ২

প্রডিউসার মেসেজ প্রডিউস করেছে এবং ব্রোকার ঠিক মতো মেসেজ রিসিভ করছে কিন্তু ব্রোকারের কাছ থেকে একনলজমেন্ট প্রডিউসার এর কাছে আসে নাই, একনোলজমেন্ট নেটওয়ার্কে হারায়া গেছে 


ইস্যু ৩

মেসেজ ব্রোকার কনজুমারের কাছে মেসেজ পাঠাইছে কিন্তু কনজুমার মেসেজ পায় নাই, নেটওয়ার্কের মেসেজ হারায়া গেছে 


ইস্যু ৪

কনজুমার মেসেজ রিসিভ করছে এবং ব্রোকারকে একনলজমেন্ট পাঠানোর আগেই ক্রাশ খাইছে সো ব্রোকার কোন একনলজমেন্ট পায় নাই 


ইস্যু ৫ 

কনজুমার মেসেজ রিসিভ করছে এবং ব্রোকারকে একনলজমেন্ট পাঠাইছে কিন্তু একনলজমেন্ট নেটওয়ার্কে হারায়া গেছে 


মেসেজ ডেলিভারি সেমান্টিক 


মেসেজ ডেলিভারি সেমান্টিক হলো একটা ইউনিভার্সাল টার্ম যা দিয়ে একটা ইভেন্ট ড্রিভেন সিস্টেম ইভেন্ট এর অবস্থা পরিষ্কার করা হয়ে থাকে 


At-Most-One

- ইভেন্ট সর্বোচ্চ একবার সফল হবে, ব্যর্থ হলেও সমস্যা নাই কিন্তু একবারের বেশি কোন ভাবেই হবে না

- একনলেজমেন্ট না হলেও আবার ইভেন্ট পাঠানো হবে না

- কনজুমার মেসেজ রিসিভ করেই একনলেজমেন্ট পাঠাবে, পুরা প্রসেস শেষ করার জন্য  বা ডাটা সেভ করার জন্য অপেক্ষা করবে না 

- তাই কনজুমার ক্রাশ করলে মেসেজ আবার পাঠানো হবে না 

- কমন উদাহরণ হচ্ছে, লোকেশনের ডাটা আপডেট করা - একটা আপডেট মিস হলে তেমন কোন সমস্যা নাই 

- এখানে ডাটা লস হলেও সমস্যা নাই কিন্তু ডুপলিকেট হবে না 


At-Least-One 

- ইভেন্ট অন্তত একবার সফল হতেই হবে, একের বেশি হলেও সমস্যা নাই

- একনলেজমেন্ট না হলে আবার ইভেন্ট পাঠানো হবে 

- কনজুমার মেসেজ রিসিভ করেই একনলেজমেন্ট পাঠাবে না, পুরা প্রসেস শেষ করে  বা ডাটা সেভ করার পর একনলেজমেন্ট পাঠাবে 

- তাই কনজুমার ক্রাশ করলে মেসেজ আবার পাঠানো হবে

- কমন উদাহরণ হচ্ছে যেকোন নোটিফিকেশন পাঠানো, একাদিকবার পাঠালেও সমস্যা নাই কিন্তু না পাঠালে সমস্যা

- এটা ডাটা লস এর কোন সুযোগ নাই কিন্তু ডুপলিকেট হতে পরে 


Exactly-Once 

- শুধুমাত্র একবার সফল হবে, এর কমও না, বেশিও না 

- এটা করতে At-Least-One এর সাথে এক্সট্রা কাজ করতে হয় 

- এটা করতে হলে মেসেজ ব্রোকারে আইডেমপোটেন আইডি থাকা লাগে, সো প্রোডিউসার থেকে মাল্টিপল ইভেন্ট পেলে চেক করা যায় সে এটা ছিলো কী ছিলো না  

এটা করতে হলে কনজুমারের ডাটাবেসে  আইডেমপোটেন আইডি থাকা লাগে, সো মেসেজ ব্রোকার  থেকে মাল্টিপল ইভেন্ট পেলে চেক করা যায় সে এটা আগে প্রসেস করেছে কী করে নাই