Par*_*ari 5 google-cloud-platform google-cloud-pubsub
几乎所有可通过网络获得的发布/订阅示例都使用字符串消息。
如何将 Java Object、JSON 或 AVRO 等文本消息以外的消息发布到主题,然后通过订阅使用它。
非常感谢帕里
以下代码允许您使用 JSON 在 Pub/Sub 中发布消息:
topic_path = 'your-topic-id'
publisher = pubsub_v1.PublisherClient()
record = {
'Key1': 'Value1',
'Key2': 'Value2',
'Key3': 'Value3',
'Key4': 'Value4'
}
data = json.dumps(record).encode("utf-8")
future = publisher.publish(topic_path, data)
print(f'published message id {future.result()}')
Run Code Online (Sandbox Code Playgroud)
我希望它对你有帮助。
您实际上无法直接执行此操作,正如您在此处和此处所看到的,发布的消息必须是字节串。您可以做的是加载文件,对其进行编码utf-8,然后发布。之后,在拉取时,您可以将消息数据转储到文件中。例如,使用 python 处理 json,您需要像这样发布:
publisher = pubsub_v1.PublisherClient()
topic_path = publisher.topic_path(project, topic_name)
with open(json_path) as f:
data = str(json.load(f))
data = data.encode('utf-8')
publisher.publish(topic_path, data=data)
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样拉取和转储:
subscriber = pubsub_v1.SubscriberClient()
subscription_path = subscriber.subscription_path(
project, subscription_name)
def callback(message):
with open('received_message.json', 'w') as outfile:
json.dump(message.data, outfile)
subscriber.subscribe(subscription_path, callback=callback)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5612 次 |
| 最近记录: |