Hasty Briefsbeta

双语

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