📖 Scenario: You are building a simple order processing system on Google Cloud Platform (GCP). You want to learn how to use Pub/Sub and Cloud Tasks to handle messages and tasks asynchronously.Pub/Sub is like a message bus where many services can listen and react to messages. Cloud Tasks is like a to-do list where tasks are done one by one or retried if they fail.
🎯 Goal: Build a small Python script that creates a Pub/Sub topic and a Cloud Tasks queue, then publishes a message to Pub/Sub and enqueues a task in Cloud Tasks. This will help you see the difference in how these services work.
📋 What You'll Learn
Create a Pub/Sub topic named orders-topic
Create a Cloud Tasks queue named orders-queue
Publish a message with data 'New order received' to orders-topic
Enqueue a task with payload {"order_id": 123} to orders-queue
💡 Why This Matters
🌍 Real World
Many cloud applications use Pub/Sub to broadcast events to multiple services and Cloud Tasks to manage background work reliably with retries.
💼 Career
Understanding these services is essential for cloud engineers and developers building scalable, reliable systems on Google Cloud Platform.
Progress0 / 4 steps
1
Create a Pub/Sub topic named orders-topic
Write Python code to create a Pub/Sub client and create a topic called orders-topic using the pubsub_v1.PublisherClient() and create_topic() method.
GCP
Hint
Use publisher.topic_path(project_id, topic_name) to get the full topic path.
2
Create a Cloud Tasks queue named orders-queue
Add Python code to create a Cloud Tasks client and create a queue called orders-queue using cloudtasks_v2.CloudTasksClient() and create_queue() method.
GCP
Hint
Use tasks_client.location_path(project_id, location) and tasks_client.queue_path(project_id, location, queue_name) to build resource names.
3
Publish a message with data 'New order received' to orders-topic
Write Python code to publish the message 'New order received' to the Pub/Sub topic orders-topic using publisher.publish() with the topic_path.
GCP
Hint
Remember to encode the string message to bytes before publishing.
4
Enqueue a task with payload {"order_id": 123} to orders-queue
Add Python code to create a Cloud Task with JSON payload {"order_id": 123} and enqueue it to the orders-queue using tasks_client.create_task(). Use tasks_client.queue_path() for the queue name and set the task http_request with body as JSON bytes.
GCP
Hint
Set http_request.body to the JSON payload bytes and specify http_method and url.
Practice
(1/5)
1. Which Google Cloud service is best suited for sending messages to multiple subscribers quickly and asynchronously?
easy
A. Cloud Functions
B. Cloud Tasks
C. Pub/Sub
D. Cloud Run
Solution
Step 1: Understand Pub/Sub's purpose
Pub/Sub is designed to send messages to many subscribers quickly and asynchronously, enabling event-driven architectures.
Step 2: Compare with Cloud Tasks
Cloud Tasks manages individual work items with control over retries and timing, not broad message delivery.
2. Which of the following is the correct way to create a Cloud Task with a scheduled delay in Google Cloud?
easy
A. Use Pub/Sub with a delay attribute
B. Use Cloud Tasks client and set scheduleTime to future timestamp
C. Send a message to Pub/Sub and rely on subscriber delay
D. Create a Cloud Function with a timer trigger instead
Solution
Step 1: Identify scheduling method in Cloud Tasks
Cloud Tasks allows setting a scheduleTime property to delay task execution until a future timestamp.
Step 2: Eliminate incorrect options
Pub/Sub does not support scheduling messages; Cloud Functions timer triggers are separate services.
Final Answer:
Use Cloud Tasks client and set scheduleTime to future timestamp -> Option B
Quick Check:
Scheduled tasks = Cloud Tasks scheduleTime [OK]
Hint: Schedule tasks with Cloud Tasks scheduleTime, not Pub/Sub [OK]
Common Mistakes:
Trying to delay Pub/Sub messages directly
Confusing Cloud Functions timers with Cloud Tasks scheduling
Assuming subscribers can delay message processing
3. Given the following scenario: A Cloud Task is created with maxAttempts set to 3 and a retry delay of 10 seconds. If the task fails twice, what happens next?
medium
A. The task is retried after 10 seconds delay for the third attempt
B. The task is retried immediately without delay
C. The task is discarded after the second failure
D. Pub/Sub resends the message automatically
Solution
Step 1: Understand Cloud Tasks retry policy
Cloud Tasks retries failed tasks up to maxAttempts, applying the configured retry delay between attempts.
Step 2: Apply to given scenario
After two failures, the third attempt will be retried after the 10 seconds delay before final failure or success.
Final Answer:
The task is retried after 10 seconds delay for the third attempt -> Option A
Quick Check:
Retries respect delay and maxAttempts in Cloud Tasks [OK]
Hint: Cloud Tasks retries wait delay before next try, up to maxAttempts [OK]
Common Mistakes:
Assuming immediate retry without delay
Thinking task is discarded too early
Confusing Pub/Sub automatic retries with Cloud Tasks
4. You have a Cloud Task that never executes and keeps retrying indefinitely. What is the most likely cause?
medium
A. The Cloud Task queue is paused
B. Pub/Sub subscription is missing
C. The task's maxAttempts is set to 0 or unlimited
D. The task's scheduleTime is in the past
Solution
Step 1: Analyze retry behavior
If a task retries indefinitely, it means it keeps failing but is still being retried.
Step 2: Check queue state
If the Cloud Task queue is paused, tasks will not execute but may keep retrying or remain pending.
Step 3: Eliminate other options
Pub/Sub subscription missing is unrelated to Cloud Tasks; maxAttempts 0 means no retries; scheduleTime in past triggers immediate execution.
Hint: Paused queue stops tasks but retries may appear stuck [OK]
Common Mistakes:
Confusing Pub/Sub with Cloud Tasks
Assuming maxAttempts 0 means infinite retries
Thinking scheduleTime in past delays execution
5. You need to design a system that processes user signup events by notifying multiple services quickly, but also schedules follow-up tasks with guaranteed retries and delays. Which combination of services should you use?
hard
A. Use only Cloud Tasks for both notifications and follow-ups
B. Use only Pub/Sub with delayed message delivery
C. Use Cloud Functions triggered by HTTP for all processing
D. Use Pub/Sub for notifications and Cloud Tasks for follow-up tasks
Solution
Step 1: Identify service for quick multi-subscriber notifications
Pub/Sub is ideal for sending events quickly to multiple subscribers asynchronously.
Step 2: Identify service for scheduled, reliable task execution
Cloud Tasks provides control over retries, delays, and guaranteed execution for follow-up work.
Step 3: Combine services for best fit
Use Pub/Sub to notify many services fast, and Cloud Tasks to manage follow-up tasks with retries and delays.
Final Answer:
Use Pub/Sub for notifications and Cloud Tasks for follow-up tasks -> Option D
Quick Check:
Pub/Sub for events + Cloud Tasks for reliable tasks [OK]
Hint: Combine Pub/Sub for events and Cloud Tasks for retries/delays [OK]
Common Mistakes:
Trying to use Pub/Sub for delayed retries
Using Cloud Tasks for broad event broadcasting
Ignoring retry guarantees needed for follow-ups
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.