Class EventBusFactory<TAdapters, TEventMap>

The EventBusFactory class is immutable.

IMPORT_PATH: "@daiso-tech/core/event-bus"

Type Parameters

Implements

Constructors

Methods

  • Parameters

    Returns IEventBus<TEventMap>

    import { type IEventBusAdapter, BaseEvent } from "@daiso-tech/core/event-bus/contracts";
    import { EventBusFactory } from "@daiso-tech/core/event-bus";
    import { MemoryEventBusAdapter, RedisPubSubEventBusAdapter } from "@daiso-tech/core/event-bus/adapters";
    import { type FactoryFn } from "@daiso-tech/core/utilities";
    import { Serde } from "@daiso-tech/core/serde";
    import { SuperJsonSerdeAdapter } from "@daiso-tech/core/serde/adapters"
    import Redis from "ioredis";

    const serde = new Serde(new SuperJsonSerdeAdapter());
    const eventBusFactory = new EventBusFactory({
    adapters: {
    memory: new MemoryEventBusAdapter(),
    redis: new RedisPubSubEventBusAdapter({
    serde,
    dispatcherClient: new Redis("YOUR_REDIS_CONNECTION_STRING"),
    listenerClient: new Redis("YOUR_REDIS_CONNECTION_STRING"),
    }),
    },
    defaultAdapter: "memory"
    });

    type AddEvent = {
    a: number;
    b: number;
    };
    type EventMap = {
    add: AddEvent;
    };

    // Will dispatch AddEvent using the default adapter which is MemoryEventBusAdapter
    await eventBusFactory
    .use<EventMap>()
    .dispatch("add", { a: 1, b: 2 });

    // Will dispatch AddEvent using the redis adapter which is RedisPubSubEventBusAdapter
    await eventBusFactory
    .use<EventMap>("redis")
    .dispatch("add", { a: 1, b: 2 });