このプロジェクトについて

PGMB(Postgres Message Broker)はPostgreSQL上に構築されたメッセージブローカー兼イベントログです。計算処理の大部分をPostgres内部で行い、I/OはJavaScriptランタイムに任せることで、ほぼ順序付けられたメッセージの少なくとも1回の配信を提供します。 主な機能には、AMQPシステムに似たキュー/エクスチェンジ形式の動作(リトライと信頼性の高い配信付き)、バッチパブリッシング、任意のテーブルに対する自動の挿入/更新/削除イベント、Last-Event-IDによる再開を備えた任意のPostgresクエリ向けHTTP Server-Sent Events(SSE)、リトライロジック付きWebhookが含まれます。パッケージはESM npmモジュールとして提供され、型安全なTypeScriptクライアントが付属します。 イベントは追記専用のpgmb.eventsテーブルに保存され、サブスクリプションは一致するイベントを決定するSQL条件とJSONBパラメータを定義します。サブスクリプションはgroup_idでグループ化され、同一の条件SQLは自動的に共有されて重複作業を削減します。信頼性の高いハンドラは、リトライスケジュール、有効期限間隔、コンシューマをスケールするためのパーティショニングをサポートします。fire-and-forgetハンドラは、よりシンプルな非同期イテレータAPIを提供します。 自動テーブルイベントはpgmb.push_table_mutations()によって有効化され、挿入、更新、削除イベントをトランザクション的にパブリッシュするトリガーを作成します。カスタムのserialise_record_for_event関数により、出力ペイロードのフィルタリングや変換が可能です。 SSEサポートはフレームワークに依存せず、リプレイ制限と安全な再接続のためのダミーイベントIDを含みます。Webhookサポートには、設定可能なリトライ、タイムアウト、gzip圧縮、冪等性キー、オプションのStandard Webhooks HMAC-SHA256署名が含まれます。 運用面では、PGMBはpg_cronを使用して定期的なpoll_for_events()およびmaintain_events_table()ジョブを実行するか、プロセス内で実行できます。アドバイザリロックにより、複数のインスタンスが同じgroup_idを共有する場合の重複配信を防ぎます。READMEにはPGMBをPGMQおよびRabbitMQと比較したベンチマークが含まれており、PGLiteやスーパーユーザーアクセスのない制限された環境との互換性についても言及されています。