Files
a-share-analysis/server/libs/infrastructure/src/message-bus.adapter.ts
T

14 lines
652 B
TypeScript

import type { MessageEnvelope } from '../../message-contracts/src/message-envelope';
/** 消息处理器只消费项目内信封,禁止业务层依赖具体 RocketMQ SDK 类型。 */
export type MessageHandler<TPayload = unknown> = (
message: Readonly<MessageEnvelope<TPayload>>,
) => Promise<void>;
/** 消息总线端口隔离客户端选型,并固定发布、订阅和资源关闭的最小语义。 */
export interface MessageBusAdapter {
publish<TPayload>(message: Readonly<MessageEnvelope<TPayload>>): Promise<void>;
subscribe<TPayload>(eventType: string, handler: MessageHandler<TPayload>): Promise<void>;
close(): Promise<void>;
}