无需轮询将GitHub新提交实时入队到Google Pub/Sub的实现咨询
无轮询监听公开GitHub仓库提交事件的实现方案
以下是两种无需持续轮询、可直接对接GCP Pub/Sub的实现思路:
方案1:基于GitHub公共事件流的过滤监听
- 调用GitHub官方公开的全量仓库事件接口,通过长连接方式被动接收事件,仅过滤匹配目标仓库的
push提交事件 - 无需主动发起轮询请求,仅当收到目标仓库的有效提交事件时,才执行逻辑将事件格式化后推送到GCP Pub/Sub供后续消费
- 单仓库监听场景下完全符合GitHub公共事件流的调用限额,无额外成本
方案2:公开GitHub事件中继服务对接
- 选择公开托管的GitHub事件中继服务,仅需配置目标仓库地址和你的GCP Pub/Sub接收端点,中继服务会负责监听目标仓库变更,有新提交时主动推送事件到你指定的端点
- 你侧无需维护任何定时或常驻任务,仅需在收到推送时做一次事件合法性校验,确认是目标仓库的有效提交后直接入队即可
原有轮询方案的降本优化(备选)
如果上述两种方案不符合你的使用场景,也可以对现有轮询方案做优化,几乎可以消除无变更时段的成本开销:
- 将轮询任务部署为GCP Cloud Function,搭配定时触发器执行,每次调用的执行时长通常低于1秒,按调用次数计费的模式下,每月免费额度即可覆盖每5分钟一次的轮询需求,长期无变更时的成本可忽略
- 拉取RSS时携带
ETag、Last-Modified请求头,仓库无变更时GitHub会返回304状态码,无需解析返回内容,进一步缩短函数执行时长、降低资源消耗
内容的提问来源于stack exchange,提问作者user3583259
相关产品推荐
相关产品推荐

