任何人都有一个非常基本的使用模拟器的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")
似乎发布有效->但我认为它实际上是发布到云队列而不是模拟器。因此,我的订户从未收到任何东西。
欢迎任何小费和技巧。我相信这就像确保发布者将发布内容发布到模拟器上,以及订阅者从模拟器中读取内容一样简单。
答案 0 :(得分:1)
在Python中,您无需进行任何代码更改即可使用模拟器。相反,您必须定义PUBSUB_EMULATOR_HOST
和PUBSUB_PROJECT_ID
环境变量。
设置它们的最简单方法是在启动程序之前运行$(gcloud beta emulators pubsub env-init)
。如果您在本地使用Google App Engine,请运行该命令,然后使用dev_appserver.py app.yaml --env_var PUBSUB_EMULATOR_HOST=${PUBSUB_EMULATOR_HOST}
启动您的应用。