aux-broker-mq
Version:
Микросервис тест взаимодействия
44 lines (37 loc) • 1.22 kB
text/typescript
import { BrokerProxy } from "./BrokerProxy";
export interface EventTest {
value: number;
date: number;
}
export interface EventStart {
name: string;
date: number;
}
export class BrokerGate extends BrokerProxy {
async connect() {
await this.connect();
await broker.createChannel("test");
}
// Описать интерфейсы для текущей рфеализации
send(queue: "start", msg: EventStart): boolean;
send(queue: "test", msg: EventTest): boolean;
send(queue: "test" | "start", msg: EventTest | EventStart) {
return super.emit<EventTest | EventStart>(queue, msg);
}
addListner(queue: "start", fn: (ev: EventStart) => void): void;
addListner(queue: "test", fn: (ev: EventTest) => void): void;
addListner(queue: string, fn: (ev: any) => void) {
this.on(queue).subscribe(fn as any);
}
}
const broker = new BrokerGate({ host: "localhost" });
async () => {
await broker.connect();
await broker.createChannel("test");
broker.on<EventTest>("test").subscribe((el) => {
})
broker.send("start", {name: "testService", date: Date.now()});
broker.addListner("start", (ev) => {
ev.name
})
};