Skip to content

05. Publish-Subscribe Pattern

Category: Agent Communication Module: AI Agents Prerequisites: Agent Communication Overview, Message Passing, Shared Memory, Event-Driven Agents Difficulty: Intermediate

Note: The Publish-Subscribe (Pub/Sub) Pattern is a communication model where publishers send messages to a topic without knowing who will receive them, while subscribers receive messages by subscribing to topics of interest. This decouples producers from consumers and enables scalable, event-driven, and loosely coupled enterprise AI systems.


Overview

Imagine an enterprise AI platform processing customer orders.

When a new order is created, multiple AI agents need to react.

Instead of notifying every agent individually,

Order Service

↓

Inventory Agent

↓

Payment Agent

↓

Shipping Agent

↓

Notification Agent

the Order Service simply publishes an event.

Order Created

↓

Topic

↓

Interested Agents

Every subscribed agent automatically receives the event.

The publisher does not know:

  • How many agents exist
  • Which agents are online
  • Who will consume the event
  • How the event will be processed

This loose coupling makes Pub/Sub one of the most widely used communication patterns in enterprise AI systems.


Why Publish-Subscribe Matters

Without Pub/Sub

Order Service

↓

Inventory Agent

↓

Payment Agent

↓

Shipping Agent

↓

Notification Agent

Problems

  • Tight coupling
  • Multiple integrations
  • Difficult maintenance
  • Hard to add new agents
  • Reduced scalability

With Pub/Sub

             Order Service
                   │
                   ▼
              Publish Event
                   │
                   ▼
                 Topic
        ┌──────────┼───────────┐
        ▼          ▼           ▼
 Inventory     Payment    Shipping
   Agent         Agent       Agent
        ▼                      ▼
 Notification           Analytics

Benefits

  • Loose coupling
  • Easy scalability
  • Parallel processing
  • Independent deployment
  • Simple extensibility

High-Level Architecture

                  Publisher
                      │
                      ▼
                  Topic / Event
                      │
       ┌──────────────┼──────────────┐
       ▼              ▼              ▼
 Subscriber A   Subscriber B   Subscriber C
       │              │              │
       ▼              ▼              ▼
 AI Agent      AI Agent      AI Agent

The Topic distributes every published message to all interested subscribers.


Core Components

Publisher

The Publisher creates and sends messages.

Order Service

↓

Publish

↓

Order Created

Responsibilities

  • Create events
  • Publish messages
  • No knowledge of subscribers

Topic

The Topic acts as a communication channel.

Orders

Payments

Deployments

Notifications

Responsibilities

  • Receive published events
  • Distribute messages
  • Support multiple subscribers

Subscriber

Subscribers consume events.

Inventory Agent

↓

Subscribe

↓

Orders Topic

Responsibilities

  • Listen for events
  • Process messages
  • Generate new events if necessary

Publish-Subscribe Lifecycle

Business Action

↓

Create Event

↓

Publish

↓

Topic

↓

Subscribers

↓

Process Event

↓

Optional New Event

Publishers and subscribers remain completely independent.


Fan-Out Communication

One published event can trigger multiple independent actions.

          Order Created
                │
                ▼
             Orders Topic
                │
   ┌────────────┼─────────────┐
   ▼            ▼             ▼
Inventory   Payment     Notification
 Agent       Agent          Agent

This is called Fan-Out Communication.

Benefits

  • Parallel execution
  • Independent scaling
  • Easy extensibility

Publish-Subscribe vs Message Queue

Although both use messaging infrastructure, their behavior is different.

Publish-Subscribe Message Queue
One publisher → Many subscribers One producer → One consumer
Broadcast communication Task distribution
Fan-out delivery Load balancing
Every subscriber receives a copy One consumer processes the message
Event notifications Work delegation

Example

Pub/Sub

Publisher

↓

Topic

↓

Agent A

↓

Agent B

↓

Agent C

Every subscriber receives the same event.


Message Queue

Producer

↓

Queue

↓

Worker A

Worker B

Worker C

Only one worker processes each message.


Topic Organization

Enterprise systems organize communication into multiple topics.

Topics

│

├── orders

├── payments

├── inventory

├── ai.tasks

├── deployments

├── monitoring

└── notifications

Keeping topics focused improves scalability and simplifies maintenance.


Choosing the Right Communication Pattern

Scenario Recommended Pattern
Business notifications Publish-Subscribe
Task delegation Message Queue
Workflow execution Shared Memory
Direct tool invocation Request-Response
Enterprise event streaming Publish-Subscribe

Implementation

Example 1 – Core Python

A simple publisher and subscriber implementation.

class Publisher:

    def __init__(self):
        self.subscribers = []

    def subscribe(self, subscriber):
        self.subscribers.append(subscriber)

    def publish(self, message):
        for subscriber in self.subscribers:
            subscriber.receive(message)


class Subscriber:

    def receive(self, message):
        print(f"Received: {message}")


publisher = Publisher()

inventory = Subscriber()
payment = Subscriber()

publisher.subscribe(inventory)
publisher.subscribe(payment)

publisher.publish("Order Created")

Output

Received: Order Created
Received: Order Created

Each subscriber independently receives the same published message.


Example 2 – LangGraph

In LangGraph, state updates can trigger multiple downstream nodes, similar to a publish-subscribe workflow.

from typing import TypedDict
from langgraph.graph import StateGraph

class WorkflowState(TypedDict):
    event: str

workflow = StateGraph(WorkflowState)

workflow.add_node("inventory", inventory_node)
workflow.add_node("payment", payment_node)
workflow.add_node("notification", notification_node)

A workflow state update acts as the published event, allowing multiple downstream nodes to react independently.


Example 3 – Production Example (Kafka Topics)

Publish an event to a Kafka topic.

from kafka import KafkaProducer
import json

producer = KafkaProducer(
    bootstrap_servers="localhost:9092",
    value_serializer=lambda value: json.dumps(value).encode("utf-8")
)

producer.send(
    "orders",
    {
        "eventType": "OrderCreated",
        "orderId": 101,
        "customerId": 5001
    }
)

producer.flush()

Any AI agent subscribed to the orders topic—such as Inventory, Payment, Notification, or Analytics—receives the same event independently, enabling scalable fan-out processing without direct communication between services.


Enterprise Use Cases

E-Commerce Platform

A single business event triggers multiple AI agents.

Examples

  • Inventory Reservation
  • Payment Processing
  • Fraud Detection
  • Shipping
  • Customer Notification
  • Analytics
Order Service

↓

Publish OrderCreated

↓

Orders Topic

↓

Inventory Agent

↓

Payment Agent

↓

Shipping Agent

↓

Notification Agent

↓

Analytics Agent

Every subscriber independently processes the same event.


Customer Support Platform

Customer-related events are distributed to multiple AI services.

Examples

  • Ticket Created
  • Customer Sentiment Updated
  • SLA Breached
  • Ticket Closed
Support Portal

↓

Support Topic

↓

Intent Agent

↓

Knowledge Agent

↓

Escalation Agent

↓

Notification Agent

↓

Reporting Agent

Adding a new AI capability only requires subscribing to the existing topic.


Financial Services

Banking systems rely heavily on publish-subscribe communication.

Examples

  • Transaction Completed
  • Fraud Detected
  • Loan Approved
  • KYC Completed
  • Compliance Updated

Each AI service independently processes financial events without modifying upstream systems.


DevOps Automation

Deployment events are broadcast across multiple AI agents.

CI/CD Pipeline

↓

DeploymentCompleted

↓

Deployments Topic

↓

Monitoring Agent

↓

Security Agent

↓

Logging Agent

↓

Notification Agent

Every subscribed agent performs its own specialized action.


Enterprise AI Platform

Large AI platforms publish workflow events continuously.

                Supervisor Agent
                       │
                       ▼
                 Workflow Events
                       │
                 AI Workflow Topic
      ┌────────────────┼─────────────────┐
      ▼                ▼                 ▼
 Planning Agent   Coding Agent   Testing Agent
      ▼                ▼                 ▼
 Documentation   Monitoring     Deployment

Each agent remains independent while collaborating through shared event topics.


Production Insight

Publish-Subscribe is one of the most scalable communication models because publishers never know who consumes their events.

Publisher

↓

Topic

↓

Subscriber A

Subscriber B

Subscriber C

Subscriber D

Subscriber E

Tomorrow you can deploy Subscriber F without changing the publisher.

This provides:

  • Zero code changes
  • Independent deployments
  • Easy scalability
  • Loose coupling
  • Simple feature expansion

This is why Pub/Sub is widely adopted in enterprise event-driven architectures.


Topic Design Best Practices

Enterprise topics should represent business domains, not individual services.

Good

orders

payments

customers

shipments

inventory

notifications

Poor

inventory-service-topic

payment-service-topic

agent1-topic

agent2-topic

Business-oriented topics remain stable even when services evolve.


Architecture Decision

Scenario Recommended Pub/Sub Technology
High-throughput streaming Apache Kafka
Cloud-native AWS SNS + SQS
Azure applications Service Bus Topics
Google Cloud Pub/Sub
Lightweight messaging Redis Pub/Sub
Enterprise messaging RabbitMQ Topic Exchange
Multi-agent AI platform Kafka + Event Streaming

Advantages

  • Loose coupling
  • Horizontal scalability
  • Parallel processing
  • Easy extensibility
  • Independent deployments
  • Real-time event distribution
  • Simplified integrations
  • Supports event-driven architectures

Limitations

  • Duplicate message handling
  • Event ordering challenges
  • Subscriber management
  • Monitoring complexity
  • Event schema evolution
  • Additional messaging infrastructure
  • Eventual consistency

Best Practices

  • Design immutable events.
  • Keep event payloads concise.
  • Use business-oriented topic names.
  • Version event schemas.
  • Include event IDs and timestamps.
  • Add correlation IDs for distributed tracing.
  • Make subscribers idempotent.
  • Implement retry and Dead Letter Queue (DLQ) strategies.
  • Monitor topic lag and consumer health.

Common Mistakes

❌ Creating one topic per service

❌ Publishing oversized payloads

❌ Tight coupling between publishers and subscribers

❌ Ignoring duplicate event processing

❌ No schema versioning

❌ Missing correlation IDs

❌ No monitoring for subscribers

❌ Treating Pub/Sub as a task queue


Framework Comparison

Framework Publish-Subscribe Support
Apache Kafka Topics, Partitions, Consumer Groups
RabbitMQ Topic & Fanout Exchanges
Redis Pub/Sub Lightweight Channel-Based Messaging
AWS SNS Cloud-Native Publish-Subscribe
Google Pub/Sub Managed Global Messaging
Azure Service Bus Topics Enterprise Topic-Based Messaging
LangGraph Workflow Event Propagation
CrewAI Agent Task & Event Collaboration

Interview Questions

What is the Publish-Subscribe Pattern?

How does Publish-Subscribe differ from a Message Queue?

What are the responsibilities of a Publisher?

What is the purpose of a Topic?

Why don't publishers know their subscribers?

What is Fan-Out communication?

Why is Pub/Sub highly scalable?

How should enterprise topics be designed?

When should Kafka be preferred over Redis Pub/Sub?

Why should subscribers be idempotent?


Quick Revision

                 Publisher
                     │
                     ▼
               Publish Event
                     │
                     ▼
                  Topic
                     │
      ┌──────────────┼───────────────┐
      ▼              ▼               ▼
 Inventory      Payment Agent   Shipping Agent
   Agent              │               │
      ▼               ▼               ▼
 Notification     Analytics     Monitoring
      │
      ▼
 Independent Processing

Key Takeaways

  • The Publish-Subscribe pattern enables one publisher to broadcast events to multiple independent subscribers.
  • Publishers remain completely unaware of who consumes their events, enabling loose coupling and easy extensibility.
  • Enterprise AI systems commonly implement Pub/Sub using Kafka, RabbitMQ, Redis Pub/Sub, AWS SNS, Azure Service Bus Topics, and Google Pub/Sub.
  • Business-oriented topics, immutable events, schema versioning, correlation IDs, and idempotent subscribers are essential for production-grade Pub/Sub systems.
  • Publish-Subscribe is ideal for event notifications, fan-out processing, real-time analytics, workflow automation, and scalable multi-agent AI platforms.

References

  • Apache Kafka Documentation
  • RabbitMQ Documentation – Topic & Fanout Exchanges
  • Redis Pub/Sub Documentation
  • AWS SNS Documentation
  • Azure Service Bus Topics Documentation
  • Google Pub/Sub Documentation
  • LangGraph Documentation – Workflow Events
  • CrewAI Documentation

Next Note

06-agent-coordination.md

In the next note, we'll explore Agent Coordination, where multiple AI agents work together to achieve a shared objective. You'll learn about centralized vs. decentralized coordination, supervisor agents, task scheduling, dependency management, synchronization, workflow orchestration, and production coordination strategies used in enterprise multi-agent systems.

Enterprise AI Engineering Handbook
Building Production-Grade Enterprise AI Systems — One Chapter at a Time.