À propos du projet
PGMB (Postgres Message Broker) est un courtier de messages et un journal d'événements construit sur PostgreSQL. Il effectue l'essentiel du travail de calcul dans Postgres et laisse les entrées/sorties au runtime JavaScript, offrant une livraison au moins une fois avec des messages majoritairement ordonnés.
Les capacités principales incluent un comportement de type file d'attente/échange similaire aux systèmes AMQP avec nouvelles tentatives et livraison fiable, publication par lots, événements automatiques d'insertion/mise à jour/suppression pour n'importe quelle table, événements envoyés par le serveur HTTP (SSE) pour des requêtes Postgres arbitraires avec reprise via Last-Event-ID, et webhooks avec logique de nouvelle tentative. Le paquet est distribué sous forme de module npm ESM avec un client TypeScript type-safe.
Les événements sont stockés dans une table pgmb.events en insertion seule, tandis que les abonnements définissent des conditions SQL et des paramètres JSONB qui déterminent les événements correspondants. Les abonnements sont regroupés par group_id, et le SQL de condition identique est automatiquement partagé pour réduire le travail en double. Les gestionnaires fiables prennent en charge des calendriers de nouvelles tentatives, des intervalles d'expiration et le partitionnement pour la mise à l'échelle des consommateurs. Les gestionnaires fire-and-forget fournissent une API d'itérateur asynchrone plus simple.
Les événements de table automatiques sont activés via pgmb.push_table_mutations(), qui crée des déclencheurs publiant les événements d'insertion, de mise à jour et de suppression de manière transactionnelle. Une fonction personnalisée serialise_record_for_event peut filtrer ou transformer les charges utiles émises.
La prise en charge SSE est indépendante du framework et inclut des limites de relecture et des identifiants d'événements factices pour une reconnexion sûre. La prise en charge des webhooks inclut des nouvelles tentatives configurables, des délais d'attente, une compression gzip, des clés d'idempotence et une signature HMAC-SHA256 Standard Webhooks optionnelle.
Sur le plan opérationnel, PGMB peut utiliser pg_cron pour des tâches périodiques poll_for_events() et maintain_events_table(), ou les exécuter dans le processus. Les verrous consultatifs empêchent la livraison en double lorsque plusieurs instances partagent un group_id. Le README inclut des benchmarks comparant PGMB avec PGMQ et RabbitMQ, et note la compatibilité avec PGLite et les environnements limités sans accès superutilisateur.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.