Skip to main content
Version: 1.5.0

Google Cloud Pub/Sub

Google Cloud Message Queue

Synopsis​

Creates a target that publishes messages to Google Cloud Pub/Sub topics with support for batch processing, message ordering, and service account authentication. Provides reliable message delivery to Google Cloud Pub/Sub for event-driven architectures and distributed systems.

Schema​

- name: <string>
description: <string>
type: gcppubsub
pipelines: <pipeline[]>
status: <boolean>
properties:
project_id: <string>
topic_id: <string>
credentials_file: <string>
credentials_json: <string>
ordering_key: <string>
max_messages: <numeric>
max_bytes: <numeric>
field_format: <string>
interval: <string|numeric>
cron: <string>
debug:
status: <boolean>
dont_send_logs: <boolean>

Configuration​

The following fields are used to define the target:

FieldRequiredDefaultDescription
nameYTarget name
descriptionN-Optional description
typeYMust be gcppubsub
pipelinesN-Optional post-processor pipelines
statusNtrueEnable/disable the target

Connection​

FieldRequiredDefaultDescription
project_idY-Google Cloud project ID
topic_idY-Pub/Sub topic ID
credentials_fileN*-Path to service account JSON key file
credentials_jsonN*-Service account JSON key as string

* = Either credentials_file or credentials_json must be provided.

note

Service account must have roles/pubsub.publisher permission on the topic.

Message Configuration​

FieldRequiredDefaultDescription
ordering_keyN-Ordering key for message ordering within the topic
max_messagesN1000Maximum number of messages per batch
max_bytesN10485760Maximum batch size in bytes (10 MB)
field_formatN-Data normalization format. See applicable Normalization section

Scheduler​

FieldRequiredDefaultDescription
intervalNrealtimeExecution frequency. See Interval for details
cronN-Cron expression for scheduled execution. See Cron for details

Debug Options​

FieldRequiredDefaultDescription
debug.statusNfalseEnable debug logging
debug.dont_send_logsNfalseProcess logs but don't send to target (testing)

Details​

The Google Cloud Pub/Sub target publishes messages to Pub/Sub topics for asynchronous, scalable message delivery. It supports batch processing for optimal performance and message ordering for maintaining event sequence.

Authentication​

Authentication uses Google Cloud service account credentials. You can provide credentials either as a file path or as a JSON string. The service account must have the roles/pubsub.publisher role on the target topic.

Topic Management​

The target automatically checks if the specified topic exists and creates it if needed. Topics are created in the specified Google Cloud project.

Message Ordering​

When an ordering_key is set, Pub/Sub ensures that messages with the same ordering key are delivered in the order they were published. This is useful for maintaining event sequences for specific entities.

Example: Use device ID as ordering key to ensure events from the same device are processed in order.

Message Attributes​

The target automatically adds the following attributes to each message:

  • device_id - Source device identifier
  • device_type - Type of source device
  • device_name - Name of source device

These attributes can be used for message filtering and routing in subscriptions.

Batch Processing​

Messages are published in batches for optimal throughput. The target accumulates messages until the batch size limit is reached or during finalization. Google Cloud Pub/Sub supports up to 10 MB per batch.

At-Least-Once Delivery​

Pub/Sub guarantees at-least-once delivery. Messages may be delivered more than once in case of network issues or subscriber failures. Design your message handlers to be idempotent.

Message Retention​

Messages are retained for 7 days by default. You can configure retention periods from 10 minutes to 7 days in the topic settings.

Dead Letter Topics​

Google Cloud Pub/Sub supports dead letter topics for messages that cannot be processed after a configured number of delivery attempts. Configure this in the subscription settings.

Examples​

The following are commonly used configuration types.

Basic with File Credentials​

Creating a basic Pub/Sub target with credentials file...

- name: basic_pubsub
type: gcppubsub
properties:
project_id: "my-project-id"
topic_id: "application-logs"
credentials_file: "/path/to/service-account-key.json"
max_messages: 1000

Target publishes JSON messages to Pub/Sub topic...

{
"timestamp": "2024-01-15T10:30:00Z",
"host": "server01",
"message": "Application started successfully",
"severity": "info"
}

With JSON Credentials​

Using credentials as JSON string (useful for secrets management)...

- name: json_creds_pubsub
type: gcppubsub
properties:
project_id: "my-project-id"
topic_id: "security-events"
credentials_json: "${GCP_SERVICE_ACCOUNT_JSON}"
max_messages: 500

With Message Ordering​

Using ordering key to maintain message sequence...

- name: ordered_pubsub
type: gcppubsub
properties:
project_id: "my-project-id"
topic_id: "ordered-events"
credentials_file: "/path/to/service-account-key.json"
ordering_key: "device-001"
max_messages: 250

High-Throughput Configuration​

Optimizing for high-volume message publishing...

- name: high_volume_pubsub
type: gcppubsub
properties:
project_id: "my-project-id"
topic_id: "high-volume-logs"
credentials_file: "/path/to/service-account-key.json"
max_messages: 2000
max_bytes: 20971520

Multiple Topics​

Publishing to different topics for different log types...

- name: application_logs_pubsub
type: gcppubsub
properties:
project_id: "my-project-id"
topic_id: "application-logs"
credentials_file: "/path/to/service-account-key.json"

- name: error_logs_pubsub
type: gcppubsub
properties:
project_id: "my-project-id"
topic_id: "error-logs"
credentials_file: "/path/to/service-account-key.json"

Field Normalization​

Using field normalization for standard format...

- name: normalized_pubsub
type: gcppubsub
properties:
project_id: "my-project-id"
topic_id: "normalized-logs"
credentials_file: "/path/to/service-account-key.json"
field_format: "ecs"
max_messages: 1000

Pipeline Processing​

Applying post-processing pipelines before publishing...

- name: pipeline_pubsub
type: gcppubsub
pipelines:
- format_timestamp
- add_metadata
- validate_schema
properties:
project_id: "my-project-id"
topic_id: "processed-events"
credentials_file: "/path/to/service-account-key.json"
max_messages: 750

Scheduled Batching​

Configuration with scheduled batch delivery...

- name: scheduled_pubsub
type: gcppubsub
properties:
project_id: "my-project-id"
topic_id: "scheduled-logs"
credentials_file: "/path/to/service-account-key.json"
max_messages: 1000
interval: "5m"

Debug Configuration​

Configuration with debugging enabled...

- name: debug_pubsub
type: gcppubsub
properties:
project_id: "my-project-id"
topic_id: "test-logs"
credentials_file: "/path/to/service-account-key.json"
debug:
status: true
dont_send_logs: true

Production Configuration​

Configuration for production with optimal settings...

- name: production_pubsub
type: gcppubsub
pipelines:
- checkpoint
properties:
project_id: "production-project"
topic_id: "production-logs"
credentials_json: "${GCP_SERVICE_ACCOUNT_JSON}"
ordering_key: "production-cluster"
max_messages: 1500
max_bytes: 15728640
field_format: "ecs"

Troubleshooting​

Authentication Errors​

If you encounter authentication errors:

  • Verify service account JSON is valid and not expired
  • Check the service account has roles/pubsub.publisher role
  • Ensure the credentials file path is correct
  • Verify the project ID matches the service account project

Topic Not Found​

If topic errors occur:

  • Verify topic ID is correct
  • Check the topic exists in the specified project
  • Ensure service account has permissions to create topics
  • Verify project ID is correct

Permission Denied​

If you see permission denied errors:

  • Check service account has roles/pubsub.publisher role
  • Verify IAM policies are correctly configured
  • Ensure the service account is not disabled
  • Check organization policies don't block Pub/Sub access

Message Size Exceeded​

If messages exceed size limits:

  • Google Cloud Pub/Sub supports maximum 10 MB per message
  • Reduce message size before publishing
  • Split large messages into smaller chunks
  • Check max_bytes configuration

Ordering Key Errors​

If message ordering fails:

  • Verify ordering_key is set in configuration
  • Ensure ordering is enabled on the topic
  • Check subscription has ordering enabled
  • Verify messages with same key go to same topic

Quota Exceeded​

If you hit quota limits:

  • Check your project's Pub/Sub quotas in GCP Console
  • Request quota increases if needed
  • Reduce publishing rate
  • Monitor quota usage in Cloud Monitoring

Network Connectivity​

If connection failures occur:

  • Verify network connectivity to Google Cloud
  • Check firewall rules allow outbound HTTPS
  • Ensure DNS resolution works for pubsub.googleapis.com
  • Review VPC network settings if using VPC Service Controls

Batch Limit Exceeded​

If batch limits are reached:

  • Reduce max_messages parameter
  • Decrease max_bytes parameter
  • Increase finalization frequency
  • Monitor message sizes