![](/img/trans.png)
[英]Google Cloud Dataflow - Pyarrow schema from PubSub message
[英]Get the size of a single message in Google Cloud PubSub
我有一個設置,我將消息發布到Google Cloud PubSub服務。
我希望獲得要發布到 PubSub 的每條消息的大小。 因此,為此,我確定了以下方法(注意:我使用 Python 客戶端進行發布和訂閱,遵循文檔中介紹的逐行實現):
message.size
查看從請求主題中提取的消息的大小。sys.getsizeof()
將消息轉換為 JSON 在發布之前估計消息的大小對於如下示例消息,我使用 Python 發布者客戶端發布:
{
"data": 'Test_message',
"attributes": {
'dummyField1': 'dummyFieldValue1',
'dummyField2': 'dummyFieldValue2'
}
}
,我從訂閱客戶端中的以下回調 function 中得到了 101 作為message.size
output 的大小:
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 上顯示的大小約為 79 B。
所以這些是我的問題:
message.size
的 output 是否以字節為單位?為了進一步為社區做出貢獻,我將我們的討論總結為答案。
message.size
,它是訂閱者客戶端中消息的屬性。 另外,根據文檔,它的定義是:返回底層消息的大小,以字節為單位
因此,您將無法在發布之前使用它。
message_size
是 Google Cloud Metrics 中的一個指標,供 Cloud Monitoring 使用, 此處為 。 最后,討論的最后一個主題是您的目標是監控您的配額支出,以便您可以留在免費套餐中。 出於這個原因,最好的選擇是使用 Cloud Monitoring 並根據pubsub.googleapis.com/topic/byte_cost
等指標設置警報。 以下是一些鏈接,您可以在其中找到更多相關信息:配額利用率、基於警報事件的警報策略。
關於您在發布前查看消息大小的第三個問題,可計費消息大小是消息數據、屬性(鍵加值)、時間戳的 20 個字節和message_id
的一些字節的總和。 請參閱Cloud Pub/Sub 定價指南。 請注意,無論消息大小如何,至少 1000 字節都是可計費的,因此如果您的消息可能小於 1000 字節,那么擁有良好的批處理設置很重要。 message_id
是在服務器端分配的,不保證一定大小,但它是由發布調用作為未來返回的,因此您可以查看示例。 這應該允許您在發布者客戶端中獲得相當准確的消息成本估計。 請注意,您還可以使用監控客戶端庫從 Python 客戶端中讀取 Cloud Monitoring 指標。
關於您的第四個問題,無法從分布指標中提取單個數據點(除非您在查詢的時間段內僅發布了一條消息,在這種情況下,平均值會告訴您該消息的大小)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.