Ein Reminder für mich und vielleicht hilft es noch jemand anderem. Damit das ganze lokal getestet werden kann muss der pubsub emulator installiert werden:
gcloud beta emulators pubsub start
# Um dem Programm zu sagen, dass es auf den Emulator geht folgende Zeilen in jedem Terminal ausführen:
set PUBSUB_PROJECT_ID=rapnika-cluster
set PUBSUB_EMULATOR_HOST=localhost:8085
Publish
from google.cloud import pubsub
project = "rapnika-cluster"
subscription_topic = "zwn-processor"
publisher = pubsub.PublisherClient()
topic_path = publisher.topic_path(project, subscription_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)
Subscribe
project = "rapnika-cluster"
subscription_name = "subscription-test"
subscription_topic = "zwn-processor"
subscriber = pubsub_v1.SubscriberClient()
topic_path = subscriber.topic_path(project, subscription_topic)
subscription_path = subscriber.subscription_path(project, subscription_name)
try:
subscription = subscriber.create_subscription(subscription_path, topic_path)
print('Subscription created: {}'.format(subscription))
except:
app.logger.info("subscriptions already exists")
def callback(message):
print('Received message: {}'.format(message))
message.ack()
subscriber.subscribe(subscription_path, callback=callback)
Weiterführende Links
Die folgenden Links könnten nützlich sein:
- https://cloud.google.com/pubsub/docs/pull
- https://cloud.google.com/pubsub/docs/publisher
- https://cloud.google.com/pubsub/docs/admin
- https://cloud.google.com/pubsub/docs/emulator