عن المشروع

PGMB (وسيط رسائل Postgres) هو وسيط رسائل وسجل أحداث مبني على PostgreSQL. ينفذ معظم العمل الحسابي داخل Postgres ويترك الإدخال/الإخراج لوقت تشغيل JavaScript، مما يوفر تسليمًا على الأقل مرة واحدة مع رسائل مرتبة في الغالب. تشمل القدرات الأساسية سلوكًا مشابهًا للطوابير/التبادلات كما في أنظمة AMQP مع إعادة المحاولة والتسليم الموثوق، والنشر الدفعي، وأحداث الإدراج/التحديث/الحذف التلقائية لأي جدول، وأحداث الخادم المرسلة عبر HTTP (SSE) لاستعلامات Postgres التعسفية مع الاستئناف عبر Last-Event-ID، والخطافات الويب مع منطق إعادة المحاولة. تُنشر الحزمة كوحدة npm بصيغة ESM مع عميل TypeScript آمن الأنواع. تُخزن الأحداث في جدول pgmb.events الذي يسمح بالإدراج فقط، بينما تحدد الاشتراكات شروط SQL ومعاملات JSONB التي تحدد الأحداث المطابقة. تُجمع الاشتراكات حسب group_id، وتُشارك شروط SQL المتطابقة تلقائيًا لتقليل العمل المكرر. تدعم المعالجات الموثوقة جداول إعادة المحاولة وفترات الانتهاء والتقسيم لتوسيع نطاق المستهلكين. توفر معالجات أطلق-وانسَ واجهة برمجية أبسط عبر مكرر غير متزامن. تُفعّل أحداث الجداول التلقائية عبر pgmb.push_table_mutations()، التي تنشئ مشغلات تنشر أحداث الإدراج والتحديث والحذف بشكل معاملاتي. يمكن لدالة serialise_record_for_event مخصصة تصفية أو تحويل الحمولات المرسلة. دعم SSE مستقل عن إطار العمل ويتضمن حدود إعادة التشغيل ومعرفات أحداث وهمية لإعادة الاتصال الآمن. يشمل دعم الخطافات الويب إعادة محاولة قابلة للتكوين ومهلات وضغط gzip ومفاتيح عدم التكرار وتوقيع HMAC-SHA256 اختياري وفق معيار Standard Webhooks. تشغيليًا، يمكن لـ PGMB استخدام pg_cron لمهام poll_for_events() وmaintain_events_table() الدورية، أو تشغيلها داخل العملية. تمنع الأقفال الاستشارية التسليم المكرر عندما تتشارك عدة نسخ نفس group_id. يتضمن README معايير أداء تقارن PGMB مع PGMQ وRabbitMQ، ويشير إلى التوافق مع PGLite والبيئات المحدودة دون وصول مستخدم فائق.