簡體   English   中英

PubSub 發布者攝取

[英]PubSub Publisher Ingestion

我正在嘗試將 avro 文件從 gcs 提取到 pubsub。 有一些外行的問題。

  1. 在 PubSub 中將文件作為消息發送有哪些選項? 比如我們可以將整個文件作為消息發送,還是只能迭代並發送文件的內容? 如果我們發送整個文件,如何在消費者端重建文件? 如果可以提供任何示例代碼,這將很有幫助。

  2. 我們什么時候必須序列化和反序列化消息? 這個序列化的目的是什么?

我確實做了我的研究,但提出了這個問題。 如果有人可以幫助更好地理解這一點。 我看到的例子是在迭代中發送文件內容而不是整個文件 blob。

  1. 您可以將整個文件作為消息發送,方法是將其轉換為Byte Array or String (大多數語言都有編碼 ADT)。 這對於大文件可能效率不高,在這種情況下,您可以將文件分成塊(例如,512 KB 大小),然后將它們作為字節 Stream 消息發送。

來自 GCP Publisher 示例的直接示例

 # The `topic_path` method creates a fully qualified identifier # in the form `projects/{project_id}/topics/{topic_id}` topic_path = publisher.topic_path(project_id, topic_id) for n in range(1, 10): data_str = f"Message number {n}" # Data must be a bytestring data = data_str.encode("utf-8") # When you publish a message, the client returns a future. future = publisher.publish(topic_path, data) print(future.result()) print(f"Published messages to {topic_path}.") ```

如何在消費者端重建文件?

像將其編碼到生產者中一樣進行解碼。 這里不是真正的痛點。

  1. 序列化的要點是在網絡中高效傳輸和通信。 數據在傳輸初始化之前被序列化,並在接收后被反序列化。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM