منصوبے کے بارے میں

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 کلائنٹ کے ساتھ دستیاب ہے۔ ایونٹس صرف داخل کرنے والی pgmb.events ٹیبل میں محفوظ کیے جاتے ہیں، جبکہ سبسکرپشنز SQL شرائط اور JSONB پیرامیٹرز کی وضاحت کرتی ہیں جو مماثل ایونٹس کا تعین کرتے ہیں۔ سبسکرپشنز کو group_id کے ذریعے گروپ کیا جاتا ہے، اور یکساں شرط والے SQL کو خودکار طور پر شیئر کیا جاتا ہے تاکہ ڈپلیکیٹ کام کم ہو۔ قابل اعتماد ہینڈلرز دوبارہ کوشش کے شیڈولز، میعاد ختم ہونے کے وقفے، اور صارفین کو اسکیل کرنے کے لیے پارٹیشننگ سپورٹ کرتے ہیں۔ فائر اینڈ فارگیٹ ہینڈلرز ایک آسان async iterator API فراہم کرتے ہیں۔ خودکار ٹیبل ایونٹس pgmb.push_table_mutations() کے ذریعے فعال کیے جاتے ہیں، جو ٹرگرز بناتا ہے جو insert، update، اور delete ایونٹس کو ٹرانزیکشنل طور پر پبلش کرتے ہیں۔ ایک حسب ضرورت serialise_record_for_event فنکشن خارج کیے جانے والے پے لوڈز کو فلٹر یا تبدیل کر سکتا ہے۔ SSE سپورٹ فریم ورک سے آزاد ہے اور اس میں ری پلے کی حدود اور محفوظ دوبارہ کنکشن کے لیے ڈمی ایونٹ IDs شامل ہیں۔ ویب ہک سپورٹ میں قابل ترتیب دوبارہ کوششیں، ٹائم آؤٹ، gzip کمپریشن، آئیڈیمپوٹینسی کیز، اور اختیاری Standard Webhooks HMAC-SHA256 سائننگ شامل ہے۔ آپریشنل طور پر، PGMB وقفہ وقفہ سے poll_for_events() اور maintain_events_table() جابز کے لیے pg_cron استعمال کر سکتا ہے، یا انہیں ان پروسیس چلا سکتا ہے۔ ایڈوائزری لاکس ڈپلیکیٹ ڈیلیوری کو روکتے ہیں جب متعدد انسٹینسز ایک ہی group_id شیئر کرتے ہیں۔ README میں بینچ مارکس شامل ہیں جو PGMB کا PGMQ اور RabbitMQ سے موازنہ کرتے ہیں، اور PGLite اور سپر یوزر رسائی کے بغیر محدود ماحول کے ساتھ مطابقت کو نوٹ کرتے ہیں۔