Skip to main content
The PubSub module provides real-time publish/subscribe messaging for event-driven architectures. Functions can subscribe to topics and react instantly to published events.

Configuration

Configure the PubSub module in config.yaml:
config.yaml

Available Adapters

In-memory pub/sub for development and single-instance deployments:
LocalAdapter stores subscriptions in memory. Events are only delivered to subscribers in the same process instance.

Publishing Events

Use the pubsub.publish function to publish events to a topic:
string
required
The topic name to publish the event to. Cannot be empty.
any
required
The event data payload. Can be any JSON-serializable value.

Subscribing to Topics

Define subscribe triggers to listen for events on specific topics:
index.ts

Trigger Configuration

string
required
Must be subscribe to register a PubSub subscription
string
required
The topic name to subscribe to

Use Cases

Real-time Notifications

Event Broadcasting

Cross-Service Communication

LocalAdapter vs RedisAdapter

LocalAdapter

  • Use for: Development, single-instance deployments
  • Storage: In-memory HashMap
  • Scope: Single process instance only
  • Performance: Extremely fast (no network overhead)
  • Persistence: None (events lost on restart)

RedisAdapter

  • Use for: Production, multi-instance deployments
  • Storage: Redis pub/sub channels
  • Scope: All connected instances
  • Performance: Fast with minimal network latency
  • Persistence: None (Redis pub/sub is ephemeral)
PubSub is for real-time event notifications, not guaranteed message delivery. For durable message processing with at-least-once delivery guarantees, use the Queue module.

Error Handling

The publish function returns errors for invalid input:

Best Practices

  1. Use descriptive topic names - Use namespaced topics like user.created, order.shipped
  2. Keep payloads small - PubSub is optimized for real-time events, not large data transfers
  3. Handle failures gracefully - Subscribers should not throw errors that affect other subscribers
  4. Use Redis in production - RedisAdapter enables horizontal scaling across multiple instances
  5. Don’t rely on delivery guarantees - Use the Queue module if you need guaranteed delivery

Comparison with Queue Module

API Reference

pubsub.publish

PubSubInput
required
Returns: null on success, ErrorBody on failure Errors:
  • topic_not_set - Topic is empty or not provided