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.