Sobre el proyecto
PGMB (Postgres Message Broker) es un broker de mensajes y registro de eventos construido sobre PostgreSQL. Realiza la mayor parte del trabajo computacional dentro de Postgres y deja la E/S al tiempo de ejecución de JavaScript, proporcionando entrega al menos una vez con mensajes mayormente ordenados.
Las capacidades principales incluyen comportamiento estilo cola/intercambio similar a los sistemas AMQP con reintentos y entrega confiable, publicación por lotes, eventos automáticos de inserción/actualización/eliminación para cualquier tabla, eventos enviados por el servidor HTTP (SSE) para consultas arbitrarias de Postgres con reanudación mediante Last-Event-ID, y webhooks con lógica de reintento. El paquete se distribuye como un módulo npm ESM con un cliente TypeScript con seguridad de tipos.
Los eventos se almacenan en una tabla pgmb.events de solo inserción, mientras que las suscripciones definen condiciones SQL y parámetros JSONB que determinan los eventos coincidentes. Las suscripciones se agrupan por group_id, y el SQL de condición idéntico se comparte automáticamente para reducir el trabajo duplicado. Los manejadores confiables admiten programas de reintento, intervalos de expiración y particionamiento para escalar consumidores. Los manejadores de disparar y olvidar proporcionan una API de iterador asíncrono más simple.
Los eventos de tabla automáticos se habilitan mediante pgmb.push_table_mutations(), que crea disparadores que publican eventos de inserción, actualización y eliminación de forma transaccional. Una función personalizada serialise_record_for_event puede filtrar o transformar las cargas emitidas.
El soporte SSE es independiente del framework e incluye límites de reproducción e identificadores de eventos ficticios para una reconexión segura. El soporte de webhooks incluye reintentos configurables, tiempos de espera, compresión gzip, claves de idempotencia y firma opcional HMAC-SHA256 de Standard Webhooks.
Operativamente, PGMB puede usar pg_cron para trabajos periódicos de poll_for_events() y maintain_events_table(), o ejecutarlos dentro del proceso. Los bloqueos consultivos evitan la entrega duplicada cuando varias instancias comparten un group_id. El README incluye puntos de referencia que comparan PGMB con PGMQ y RabbitMQ, y señala la compatibilidad con PGLite y entornos limitados sin acceso de superusuario.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.