带有python的Google Pubsub模拟器

时间:2018-09-19 18:54:59

标签: python google-cloud-pubsub

任何人都有一个非常基本的使用模拟器的Python发布/订阅示例。

这是我的订户代码

## setup subscribers
from google.cloud import pubsub

print("subscribing to topic")


subscriber = pubsub.SubscriberClient()
subscription_path = subscriber.subscription_path(app.config['PUB_SUB_PROJECT'], app.config['PUB_SUB_TOPIC'])

def callback(message):
    print('Received message: {}'.format(message))


subscriber.subscribe(subscription_path, callback=callback)

然后这是我要发布的代码

from google.cloud import pubsub
publisher = pubsub.PublisherClient()
topic_path = publisher.topic_path(app.config['PUB_SUB_PROJECT'], app.config['PUB_SUB_TOPIC'])
try:
    topic = publisher.create_topic(topic_path)
except Exception:
    app.logger.info("Topic already exists")
data = "ein test"
data = data.encode('utf-8')
publisher.publish(topic_path, data=data)
print("published topic")

似乎发布有效->但我认为它实际上是发布到云队列而不是模拟器。因此,我的订户从未收到任何东西。

欢迎任何小费和技巧。我相信这就像确保发布者将发布内容发布到模拟器上,以及订阅者从模拟器中读取内容一样简单。

1 个答案:

答案 0 :(得分:1)

在Python中,您无需进行任何代码更改即可使用模拟器。相反,您必须定义PUBSUB_EMULATOR_HOSTPUBSUB_PROJECT_ID环境变量。

设置它们的最简单方法是在启动程序之前运行$(gcloud beta emulators pubsub env-init)。如果您在本地使用Google App Engine,请运行该命令,然后使用dev_appserver.py app.yaml --env_var PUBSUB_EMULATOR_HOST=${PUBSUB_EMULATOR_HOST}启动您的应用。

此文档记录在https://cloud.google.com/pubsub/docs/emulator