如何验证GCP Pub/Sub发布端batchSetting配置是否按预期生效?
GCP Pub/Sub批量配置验证方法
你配置的BatchingSettings代码如下:
private BatchingSettings getBatchingSettings() { long requestBytesThreshold = 10000L; long messageCountBatchSize = 100L; Duration publishDelayThreshold = Duration.ofMillis(2000); BatchingSettings batchingSettings = BatchingSettings.newBuilder() .setElementCountThreshold(messageCountBatchSize) .setRequestByteThreshold(requestBytesThreshold) .setDelayThreshold(publishDelayThreshold) .build(); return batchingSettings; }
该配置对应的批量发送规则为三个条件满足任意一个即触发发送:
- 消息数量达到100条
- 单批消息总字节达到10KB
- 等待发送的最长延迟达到2秒
你可以通过以下几种方法验证实际每批发布的消息数量:
方法1:客户端侧日志/埋点统计
你使用的是Java版Pub/Sub客户端,可以直接通过日志查看批量详情:
- 在项目的日志配置文件中,将
com.google.cloud.pubsub.v1.Publisher类的日志级别调整为DEBUG,日志中会直接输出每批发送的消息条数、字节大小、延迟等实际参数。 - 也可以自行添加埋点验证:给每条消息添加自定义属性
batch_trace_id,同一个批次的消息使用相同ID,后续统计同一ID对应的消息总数即可得到实际每批大小。
方法2:GCP控制台监控指标计算
- 进入GCP控制台的「Pub/Sub」页面,打开对应主题的「监控」标签页
- 取相同时间窗口的
发布消息总数和发布请求总数两个指标,用消息总数 / 请求总数即可得到该时段的平均每批消息大小,流量稳定的情况下该数值会接近你配置的100条。 - 也可以在Cloud Monitoring的指标浏览器中查看更细粒度的单请求消息数分布。
方法3:订阅端拉取验证
给目标主题创建一个临时测试订阅,拉取消息时统计单次pull响应返回的消息数量:在拉取参数设置的单请求最大消息数大于100的前提下,单次pull返回的最大消息数基本等于发布端的实际批量大小。
注意:测试时需要保证消息发布速度足够快,能在2秒的延迟阈值内产生超过100条消息,否则会因为延迟阈值先触发,导致每批消息数不足100,无法验证数量阈值的配置是否生效。
内容的提问来源于stack exchange,提问作者Tausif Sayyad
相关产品推荐
相关产品推荐

