import { Observable, Subject } from 'rxjs'; import { ServiceBusEvent, ServiceBus } from '../interface/service-bus.type'; /** * serviceBus 通讯服务器端,用来监听其他子应用发来的请求 * * @export */ export class ServiceBusServer { /** * 应用的名称 * */ appName: string; /** * 应用的事件 * */ get events(): Observable { return this._events; } /** * 应用的请求处理 * */ requestHandler!: null | ((event: ServiceBusEvent) => Observable); private _serviceBus: ServiceBus; private _events: Subject = new Subject(); /** * Creates an instance of ServiceBusServer. * @param appName server所在应用名称 * @param serviceBusService serviceBusServer */ constructor(appName: string, serviceBusService: ServiceBus) { this._serviceBus = serviceBusService; this.appName = appName; } /** * 注册server * */ register(): void { this._serviceBus.registerServer(this); } /** * 发布事件 * */ publishEvent(event: ServiceBusEvent): void { this._events.next(event); } /** * 销毁 * */ destroy() { this.requestHandler = null; this._events.error('destroyed'); } }