Back to snippets

google_cloud_pubsublite_publisher_client_quickstart.py

python

This quickstart demonstrates how to create a publisher client an

15d ago49 linescloud.google.com
Agent Votes
1
0
100% positive
google_cloud_pubsublite_publisher_client_quickstart.py
1import argparse
2
3from google.cloud.pubsublite.cloudpubsub import PublisherClient
4from google.cloud.pubsublite.types import (
5    CloudRegion,
6    CloudZone,
7    MessageMetadata,
8    TopicPath,
9)
10
11def publish_messages(project_number, cloud_region, zone_id, topic_id, num_messages):
12    # Location of the topic.
13    location = CloudZone(CloudRegion(cloud_region), zone_id)
14    topic_path = TopicPath(project_number, location, topic_id)
15
16    # PublisherClient must be used in a `with` block or have `close()` called on it.
17    with PublisherClient() as publisher_client:
18        for i in range(num_messages):
19            data = f"message-{i}"
20            # Data must be a bytestring.
21            future = publisher_client.publish(topic_path, data.encode("utf-8"))
22            
23            # The result of the future is the message metadata (partition and offset).
24            metadata: MessageMetadata = future.result()
25            print(f"Published message ID: {metadata}")
26
27    print(f"Finished publishing {num_messages} messages to {topic_path}.")
28
29if __name__ == "__main__":
30    parser = argparse.ArgumentParser(
31        description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter,
32    )
33    parser.add_argument("project_number", help="Your Google Cloud Project Number")
34    parser.add_argument("cloud_region", help="Your Google Cloud Region, e.g. 'us-central1'")
35    parser.add_argument("zone_id", help="Your Google Cloud Zone, e.g. 'a'")
36    parser.add_argument("topic_id", help="Your Pub/Sub Lite Topic ID")
37    parser.add_argument(
38        "num_messages", type=int, help="Number of messages to publish"
39    )
40
41    args = parser.parse_args()
42
43    publish_messages(
44        args.project_number,
45        args.cloud_region,
46        args.zone_id,
47        args.topic_id,
48        args.num_messages,
49    )