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";
type Store = Partial<Record<string, IEventBusAdapter>>;
const serde = new Serde(new SuperJsonSerdeAdapter());
const store: Store = {};
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"
});
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 });
The
EventBusFactory
class is immutable.IMPORT_PATH:
"@daiso-tech/core/event-bus"