Sending and Receiving Messages with Google Cloud Pub/Sub
Sending and Receiving Messages with Google Cloud Pub/Sub
Google Cloud Pub/Sub is a fully managed messaging service that enables you to send and receive messages between applications or services in a scalable and reliable manner. In this guide, we'll explore the process of sending and receiving messages with Google Cloud Pub/Sub and provide sample Python code snippets for both tasks.
Key Concepts
Before we dive into the code, let's understand some key concepts related to Google Cloud Pub/Sub:
- Topics: Messages are sent to topics, which are named resources that represent the stream of messages. Topics can have one or more subscribers.
- Subscriptions: Subscriptions are named resources representing the stream of messages from a single, specific topic to be delivered to the subscribing application.
- Publishers and Subscribers: Applications that send messages are called publishers, while applications that receive and process messages are called subscribers.
Sample Code: Sending and Receiving Messages with Pub/Sub
Publishing Messages to a Topic
Here's a sample Python code snippet for publishing messages to a Google Cloud Pub/Sub topic:
from google.cloud import pubsub_v1 # Initialize the Publisher client publisher = pubsub_v1.PublisherClient() # Set your project ID and topic name project_id = 'your-project-id' topic_name = 'your-topic-name' # Create a topic path topic_path = publisher.topic_path(project_id, topic_name) # Define a message message_data = 'Hello, Pub/Sub!' message_data = message_data.encode('utf-8') # Publish the message future = publisher.publish(topic_path, data=message_data) print(f`Published message: {message_data}`)
Subscribing to a Topic and Receiving Messages
Here's a sample Python code snippet for subscribing to a Google Cloud Pub/Sub topic and receiving messages:
from google.cloud import pubsub_v1 # Initialize the Subscriber client subscriber = pubsub_v1.SubscriberClient() # Set your project ID, subscription name, and topic name project_id = 'your-project-id' subscription_name = 'your-subscription-name' topic_name = 'your-topic-name' # Create a subscription path subscription_path = subscriber.subscription_path(project_id, subscription_name) # Define a callback function to handle received messages def callback(message): print(f`Received message: {message.data}`) message.ack() # Subscribe to the topic and start receiving messages subscriber.subscribe(subscription_path, callback=callback) print(f`Subscribed to {subscription_name} for topic {topic_name}`) # Keep the script running to continue receiving messages import time while True: time.sleep(5)
Make sure to replace
your-project-id, your-topic-name, your-subscription-name, and other values with your specific project and configuration details.
Conclusion
Google Cloud Pub/Sub provides a powerful and reliable solution for sending and receiving messages in a distributed and scalable manner. By leveraging Pub/Sub, you can create event-driven systems and efficiently communicate between your cloud-based applications and services.