Status: WIP
Status: WIP — Partially integrated (consumed by
@nebutra/sagaandworkflows/pusher). Not yet used by any production app.
Cross-service event communication.
pnpm add @nebutra/event-bus- Pub/Sub — Publish and subscribe to events
- Type-safe — Typed event schemas
- Multi-tenant — Events scoped by tenant
- Async — Non-blocking event delivery
// Event schema
interface UserCreatedEvent {
userId: string;
email: string;
tenantId: string;
timestamp: number;
}import { eventBus } from "@nebutra/event-bus";
await eventBus.publish("user.created", {
userId: "123",
email: "user@example.com",
tenantId: "org_456",
timestamp: Date.now(),
});import { eventBus } from "@nebutra/event-bus";
eventBus.subscribe("user.created", async (event) => {
console.log("New user:", event.email);
await sendWelcomeEmail(event.email);
});| Event | Description |
|---|---|
user.created |
New user registered |
user.updated |
User profile updated |
order.placed |
New order created |
order.fulfilled |
Order shipped |
content.published |
Content published |
Multiple subscribers for one event:
// Service A
eventBus.subscribe("order.placed", sendConfirmationEmail);
// Service B
eventBus.subscribe("order.placed", updateInventory);
// Service C
eventBus.subscribe("order.placed", notifyWarehouse);For synchronous-style communication:
const response = await eventBus.request("user.validate", {
email: "user@example.com",
});