প্রকল্প সম্পর্কে
PGMB (Postgres Message Broker) হল PostgreSQL-এর উপর নির্মিত একটি মেসেজ ব্রোকার ও ইভেন্ট লগ। এটি বেশিরভাগ গণনামূলক কাজ Postgres-এর ভেতরে সম্পন্ন করে এবং I/O-এর দায়িত্ব JavaScript রানটাইমকে দেয়, যার ফলে অন্তত-একবার ডেলিভারি এবং মোটামুটি ক্রমবদ্ধ মেসেজ নিশ্চিত হয়।
মূল ক্ষমতার মধ্যে রয়েছে AMQP সিস্টেমের মতো কিউ/এক্সচেঞ্জ-ধাঁচের আচরণ, যাতে রিট্রাই ও নির্ভরযোগ্য ডেলিভারি, ব্যাচ পাবলিশিং, যেকোনো টেবিলের জন্য স্বয়ংক্রিয় insert/update/delete ইভেন্ট, নির্বিচার Postgres কোয়েরির জন্য HTTP Server-Sent Events (SSE) এবং Last-Event-ID-এর মাধ্যমে পুনরারম্ভ, এবং রিট্রাই লজিকসহ ওয়েবহুক। প্যাকেজটি একটি ESM npm মডিউল হিসেবে টাইপ-সেফ TypeScript ক্লায়েন্টসহ প্রকাশিত হয়।
ইভেন্টগুলো একটি insert-only pgmb.events টেবিলে সংরক্ষিত হয়, আর সাবস্ক্রিপশনগুলো SQL শর্ত ও JSONB প্যারামিটার নির্ধারণ করে যা মিলে যাওয়া ইভেন্ট নির্ধারণ করে। সাবস্ক্রিপশনগুলো group_id অনুযায়ী গ্রুপ করা হয় এবং অভিন্ন শর্তযুক্ত SQL স্বয়ংক্রিয়ভাবে শেয়ার করা হয় যাতে ডুপ্লিকেট কাজ কমানো যায়। নির্ভরযোগ্য হ্যান্ডলারগুলো রিট্রাই সময়সূচি, মেয়াদোত্তীর্ণ ব্যবধান এবং কনজিউমার স্কেল করার জন্য পার্টিশনিং সমর্থন করে। ফায়ার-অ্যান্ড-ফরগেট হ্যান্ডলারগুলো একটি সহজ async ইটারেটর API প্রদান করে।
স্বয়ংক্রিয় টেবিল ইভেন্ট pgmb.push_table_mutations() এর মাধ্যমে চালু করা হয়, যা ট্রিগার তৈরি করে যা insert, update এবং delete ইভেন্ট ট্রানজেকশনালভাবে পাবলিশ করে। একটি কাস্টম serialise_record_for_event ফাংশন নির্গত পেলোড ফিল্টার বা রূপান্তর করতে পারে।
SSE সমর্থন ফ্রেমওয়ার্ক-নিরপেক্ষ এবং এতে রিপ্লে সীমা ও নিরাপদ পুনঃসংযোগের জন্য ডামি ইভেন্ট আইডি অন্তর্ভুক্ত। ওয়েবহুক সমর্থনে কনফিগারযোগ্য রিট্রাই, টাইমআউট, gzip কম্প্রেশন, আইডেম্পোটেন্সি কী এবং ঐচ্ছিক Standard Webhooks HMAC-SHA256 সাইনিং রয়েছে।
পরিচালনাগতভাবে, PGMB পর্যায়ক্রমিক poll_for_events() এবং maintain_events_table() কাজের জন্য pg_cron ব্যবহার করতে পারে, অথবা সেগুলো ইন-প্রসেস চালাতে পারে। অ্যাডভাইজরি লক একাধিক ইনস্ট্যান্স একই group_id শেয়ার করলে ডুপ্লিকেট ডেলিভারি প্রতিরোধ করে। README-তে PGMB-কে PGMQ এবং RabbitMQ-এর সাথে তুলনা করা বেঞ্চমার্ক রয়েছে এবং PGLite ও সুপারইউজার অ্যাক্সেসবিহীন সীমিত পরিবেশের সাথে সামঞ্জস্যের কথা উল্লেখ করা হয়েছে।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.