google-pubsub

Google Cloud Pub/Sub Core Knowledge

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "google-pubsub" with this command: npx skills add claude-dev-suite/claude-dev-suite/claude-dev-suite-claude-dev-suite-google-pubsub

Google Cloud Pub/Sub Core Knowledge

Full Reference: See advanced.md for Java/Python/Go producer patterns, Spring Cloud GCP consumer, push subscription handlers, and Terraform for DLT, IAM, VPC Service Controls, and monitoring alerts.

Deep Knowledge: Use mcp__documentation__fetch_docs with technology: google-pubsub for comprehensive documentation.

Quick Start (Emulator)

docker-compose.yml

services: pubsub: image: gcr.io/google.com/cloudsdktool/google-cloud-cli:emulators command: gcloud beta emulators pubsub start --host-port=0.0.0.0:8085 ports: - "8085:8085"

docker-compose up -d

Set emulator env

export PUBSUB_EMULATOR_HOST=localhost:8085

Create topic and subscription

gcloud pubsub topics create orders gcloud pubsub subscriptions create order-processor --topic=orders

Test

gcloud pubsub topics publish orders --message='{"id":"123"}' gcloud pubsub subscriptions pull order-processor --auto-ack

Core Concepts

Concept Description

Topic Named resource for publishing messages

Subscription Named resource for receiving messages

Publisher Sends messages to topic

Subscriber Receives messages from subscription

Ack Deadline Time to acknowledge before redelivery

Message Retention How long unacked messages are kept

Delivery Types

Type Description Use Case

Pull Subscriber requests messages Batch processing, variable load

Push Pub/Sub sends to endpoint Serverless, webhooks

BigQuery Direct export to BigQuery Analytics pipelines

Cloud Storage Direct export to GCS Data archival

Architecture

Publisher ──▶ Topic ──▶ Subscription 1 (Pull) ──▶ Subscriber ──▶ Subscription 2 (Push) ──▶ Cloud Run ──▶ Subscription 3 ──▶ BigQuery

Node.js Producer (@google-cloud/pubsub)

import { PubSub } from '@google-cloud/pubsub';

const pubsub = new PubSub({ projectId: 'my-project', });

const topic = pubsub.topic('orders');

// Publish single message const messageId = await topic.publishMessage({ data: Buffer.from(JSON.stringify(order)), attributes: { 'correlation-id': correlationId, 'order-type': order.type, }, orderingKey: order.customerId, // For ordered delivery });

// Batch publishing (automatic batching) const publishOptions = { batching: { maxMessages: 100, maxMilliseconds: 10, }, }; const batchTopic = pubsub.topic('orders', publishOptions);

Node.js Consumer (Pull Subscription)

const subscription = pubsub.subscription('order-processor', { flowControl: { maxMessages: 100, maxExtensionMinutes: 10, }, ackDeadline: 30, });

const messageHandler = async (message) => { try { const order = JSON.parse(message.data.toString()); const correlationId = message.attributes['correlation-id'];

await processOrder(order);
message.ack();

} catch (error) { console.error('Processing failed:', error); message.nack(); // Will be redelivered } };

subscription.on('message', messageHandler); subscription.on('error', (error) => console.error('Subscription error:', error));

// Graceful shutdown process.on('SIGTERM', async () => { await subscription.close(); });

Dead Letter Topics

Create DLT

gcloud pubsub topics create orders-dlq gcloud pubsub subscriptions create orders-dlq-sub --topic=orders-dlq

Create subscription with DLT

gcloud pubsub subscriptions create order-processor
--topic=orders
--dead-letter-topic=orders-dlq
--max-delivery-attempts=5

When NOT to Use This Skill

Use alternative messaging solutions when:

  • AWS-native architecture - SQS has better AWS integration

  • Azure-native architecture - Use Azure Service Bus

  • Event streaming with replay - Use Dataflow or Kafka

  • On-premise deployment - Use RabbitMQ or ActiveMQ

  • Multi-cloud portability - Use Kafka or RabbitMQ

  • Complex routing patterns - RabbitMQ provides more flexibility

  • JMS compliance required - Use ActiveMQ

Anti-Patterns

Anti-Pattern Why It's Bad Solution

No dead letter topic Failed messages lost Configure DLT for all subscriptions

Short ack deadline Duplicate processing Set deadline > max processing time

No retry policy Immediate redelivery on failure Configure exponential backoff

Synchronous publish Poor throughput Use batching and async publish

Pull without flow control Consumer overwhelmed Set max_messages limit

No message ordering when needed Out of order processing Use ordering keys

Large message payloads Higher costs, poor performance Use Cloud Storage with reference

No IAM least privilege Security risk Use service accounts with minimal roles

Quick Troubleshooting

Issue Likely Cause Fix

Messages not received No subscription or wrong topic Create subscription, verify topic

Duplicate messages Ack deadline expired Increase ack deadline or process faster

Messages in DLT Max delivery attempts exceeded Check processing logic, review DLT

Permission denied Missing IAM roles Grant Publisher/Subscriber roles

Ordering not working No ordering key or wrong subscription Set ordering key, enable message ordering

High latency Batching delay or network Reduce batch delay, check network

Push subscription failing Endpoint down or auth failure Check endpoint health, verify auth

Backlog growing Slow consumers Add consumers or optimize processing

Production Readiness

Monitoring Metrics

Metric Alert Threshold

num_undelivered_messages

10000

oldest_unacked_message_age

3600s

num_outstanding_messages

10000

dead_letter_message_count

0

publish_latencies p99 > 1s

Checklist

  • IAM roles with least privilege

  • Service account per component

  • Dead letter topic configured

  • Retry policy configured

  • Ack deadline appropriate

  • Message retention set

  • Monitoring alerts configured

  • Schema validation (if needed)

  • Message ordering (if needed)

  • VPC Service Controls (if needed)

Reference Documentation

Deep Knowledge: Use mcp__documentation__fetch_docs with technology: google-pubsub for comprehensive documentation.

Available topics: basics , producers , consumers , production

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

cron-scheduling

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

token-optimization

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

webrtc

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

react-19

No summary provided by upstream source.

Repository SourceNeeds Review