我有一个将消息发布到Google Cloud PubSub服务的设置。
我希望获得我发布到PubSub的每条消息的大小。因此,为此,我确定了以下方法(注意:我正在使用Python客户端进行发布和订阅,并遵循其文档中介绍的逐行实现):
message.size
在回调函数中使用大小从请求的主题中提取消息。sys.getsizeof()
对于我使用Python发布者客户端发布的如下示例消息:
{
"data": 'Test_message',
"attributes": {
'dummyField1': 'dummyFieldValue1',
'dummyField2': 'dummyFieldValue2'
}
}
,message.size
在订阅用户中,以下回调函数的输出为101 。
def callback(message):
print(f"Received {message.data}.")
if message.attributes:
print("Attributes:")
for key in message.attributes:
value = message.attributes.get(key)
print(f"{key}: {value}")
print(message.size)
message.ack()
而Cloud Console Monitoring上显示的大小约为79B。
所以这是我的问题:
message.size
单位是字节吗?为了进一步为社区做出贡献,我在总结我们的讨论作为答案。
message.size
,它是来自订户客户端中消息的属性。另外,根据文档,其定义为:返回基础消息的大小,以字节为单位
因此,您将无法在发布之前使用它。
message_size
是Google Cloud Metrics中的一个指标,由Cloud Monitoring在此处使用。最后,讨论的最后一个主题是您的目的是监视配额支出,以便您可以保持免费。因此,最好的选择是使用Cloud Monitoring,并根据指标设置警报pubsub.googleapis.com/topic/byte_cost
。以下是一些链接,您可以在其中找到更多信息:配额利用率,基于警报事件,警报策略。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句