Skip to main content
Agents can use publish-subscribe messaging to communicate with each other and external systems.

Quick Start

1

Create PubSub

import { createPubSub } from 'praisonai';

const pubsub = createPubSub();

// Subscribe to topic
pubsub.subscribe('orders', (event) => {
  console.log('New order:', event.data);
});

// Publish message
pubsub.publish('orders', { id: '123', total: 99.99 });
2

Agent Communication

const agent1 = new Agent({
  pubsub,
  onComplete: (result) => {
    pubsub.publish('task.done', result);
  }
});

pubsub.subscribe('task.done', (event) => {
  agent2.chat(`Process: ${event.data}`);
});

User Interaction Flow


Configuration Levels

// Level 1: Function - Simple create
const pubsub = createPubSub();

// Level 2: Dict - With options
const pubsub = createPubSub({
  maxListeners: 100,
  wildcard: true
});

// Level 3: Instance - Full control
import { EventEmitterPubSub } from 'praisonai';

const pubsub = new EventEmitterPubSub({
  maxListeners: 100,
  wildcard: true,
  delimiter: '.',
  onError: (err) => console.error(err)
});

Use Cases

PatternDescription
EventsNotify when things happen
DecouplingComponents don’t know each other
BroadcastingSend to multiple listeners
QueuingProcess messages asynchronously

API Reference

EventEmitterPubSub

PubSub implementation

Best Practices

user.created is clearer than event1.
Subscribers should handle their own errors.
Prevent memory leaks by cleaning up.