Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

Google Cloud Pub/Sub Tutorial

Introduction

Google Cloud Pub/Sub is a fully-managed real-time messaging service that allows you to send and receive messages between independent applications. It supports many-to-many communication patterns and is often used to integrate microservices.

Core Concepts

Before diving into examples, let's understand some key concepts:

  • Topic: A named resource to which messages are sent by publishers.
  • Subscription: A named resource representing the stream of messages from a single, specific topic, to be delivered to the subscribing application.
  • Publisher: An application that creates and sends messages to a topic.
  • Subscriber: An application with a subscription to a topic to receive messages from it.
  • Message: The data that is sent by publishers to topics and consumed by subscribers.

Setting Up Pub/Sub

To get started with Google Cloud Pub/Sub, you'll need a Google Cloud project. Follow these steps:

  1. Create a Google Cloud project from the Google Cloud Console.
  2. Enable the Pub/Sub API for your project.
  3. Install the Google Cloud SDK and initialize it using the command gcloud init.

Creating a Topic

To create a topic, use the following command:

gcloud pubsub topics create my-topic
Created topic [projects/your-project-id/topics/my-topic].

Creating a Subscription

To receive messages, create a subscription to the topic:

gcloud pubsub subscriptions create my-subscription --topic=my-topic
Created subscription [projects/your-project-id/subscriptions/my-subscription].

Publishing Messages

Publish a message to the topic using the following command:

gcloud pubsub topics publish my-topic --message="Hello, Pub/Sub!"
messageIds:
- "123456789012345"

Receiving Messages

Receive messages from the subscription using the following command:

gcloud pubsub subscriptions pull my-subscription --auto-ack
┌─────────────┬───────────────┬──────────────────────────────────────────────────────┐
│ DATA        │ MESSAGE_ID    │ ATTRIBUTES                                           │
├─────────────┼───────────────┼──────────────────────────────────────────────────────┤
│ Hello, Pub/Sub! │ 123456789012345 │                                                      │
└─────────────┴───────────────┴──────────────────────────────────────────────────────┘

Using Client Libraries

Google Cloud provides client libraries for various programming languages. Here’s an example using Python:

# Install the Pub/Sub library
pip install google-cloud-pubsub

# Example Python code to publish a message
from google.cloud import pubsub_v1

# Initialize a Publisher client
publisher = pubsub_v1.PublisherClient()
topic_path = publisher.topic_path('your-project-id', 'my-topic')

# Data to be published
data = 'Hello, Pub/Sub!'
data = data.encode('utf-8')

# Publish the message
future = publisher.publish(topic_path, data)
print(f'Published message ID: {future.result()}')

# Example Python code to receive messages
from google.cloud import pubsub_v1

# Initialize a Subscriber client
subscriber = pubsub_v1.SubscriberClient()
subscription_path = subscriber.subscription_path('your-project-id', 'my-subscription')

def callback(message):
    print(f'Received message: {message.data}')
    message.ack()

# Subscribe to the subscription
subscriber.subscribe(subscription_path, callback=callback)

# Keep the main thread alive
import time
while True:
    time.sleep(60)

Conclusion

In this tutorial, we covered the basics of Google Cloud Pub/Sub, including creating topics and subscriptions, publishing, and receiving messages. We also looked at using client libraries for more advanced use cases. Pub/Sub is a powerful tool for building scalable and decoupled systems. Explore further to leverage its full potential.