Show HN: PgHook – Docker image that streams PostgreSQL row changes to webhooks
9 months ago
- #Webhook
- #Replication
- #PostgreSQL
- PgHook通过逻辑复制(PgOutput2Json)将PostgreSQL变更事件流式传输到Webhook
- 以小巧的23.17MB容器镜像分发(AOT编译的.NET 9 Alpine版本)
- 在postgresql.conf中设置`wal_level = logical`并重启PostgreSQL以启用逻辑复制
- 为需要监听的表创建发布:`CREATE PUBLICATION mypub FOR TABLE table1, table2;`
- 运行PgHook时需配置环境变量:`PGH_POSTGRES_CONN`、`PGH_PUBLICATION_NAMES`和`PGH_WEBHOOK_URL`
- 可选:通过`PGH_USE_PERMANENT_SLOT=true`和`PGH_REPLICATION_SLOT=myslot`使用永久复制槽
- 每个变更事件以紧凑JSON格式批量发送(可通过`PGH_BATCH_SIZE`配置批量大小)
- 可使用`PGH_WEBHOOK_SECRET`对Webhook请求进行签名验证真实性和时效性
- 通过环境变量配置超时、保活和连接池等参数
- 失败请求会重试三次(间隔2秒/4秒/8秒),10秒后重启复制流程
- 示例Docker Compose配置包含PostgreSQL、PgHook和演示用测试API