如何为测试与发布场景分别使用Google Pub/Sub服务
谷歌IAP场景下Pub/Sub测试与生产消息分离方案
方案1:创建独立Topic彻底隔离(推荐)
- 分别创建测试、生产两个独立的Pub/Sub Topic,比如
iap-test-topic和iap-prod-topic - 在Google Play Console的**实时开发者通知(RTDN)**设置中,将测试环境的IAP消息推送到
iap-test-topic,生产环境消息推送到iap-prod-topic - 测试服务器仅订阅
iap-test-topic,生产服务器仅订阅iap-prod-topic - 这种方式从源头隔离消息,完全避免串流问题,没有额外资源消耗
方案2:利用Pub/Sub订阅过滤功能
如果不想新增Topic,可以通过订阅的过滤规则区分消息:
- 先确认RTDN消息中区分测试/生产的标识:比如测试消息的
orderId会以TEST-GPA开头,或者消息属性里的testNotification字段为true - 给测试服务器的订阅添加过滤条件:
或者针对attributes.orderId startsWith "TEST-"testNotification属性:attributes.testNotification = "true" - 给生产服务器的订阅添加过滤条件:
或者:attributes.orderId NOT startsWith "TEST-"attributes.testNotification = "false" - 注意:如果区分字段在消息体而非attributes中,需要先通过Cloud Functions或Dataflow将消息体中的测试标识提取到Pub/Sub消息的attributes里,因为Pub/Sub过滤仅支持attributes和元数据。
方案3:服务器端本地过滤(临时快速方案)
- 保留现有两个订阅,在服务器收到消息后自行判断:
- 测试服务器收到消息时,检查是否为测试消息(比如orderId前缀、test字段),是则处理,否则直接丢弃
- 生产服务器仅处理非测试消息
- 优点是无需修改Pub/Sub配置,缺点是消息仍会推送到目标服务器,存在一定资源浪费,适合临时测试场景
内容的提问来源于stack exchange,提问作者user10874312
相关产品推荐
相关产品推荐

