UNPKG

@hotmeshio/hotmesh

Version:

Serverless Workflow

65 lines (64 loc) 3.23 kB
import { ILogger } from '../logger'; import { PublishMessageConfig, StreamConfig, StreamMessage, StreamStats } from '../../types/stream'; import { StringAnyType } from '../../types'; import { KeyStoreParams, KeyType } from '../../modules/key'; import { ProviderClient, ProviderTransaction } from '../../types/provider'; export declare abstract class StreamService<ClientProvider extends ProviderClient, TransactionProvider extends ProviderTransaction> { protected streamClient: ClientProvider; protected storeClient: ProviderClient; protected namespace: string; protected logger: ILogger; protected appId: string; protected config: StreamConfig; constructor(streamClient: ClientProvider, storeClient: ProviderClient, config?: StreamConfig); abstract init(namespace: string, appId: string, logger: ILogger): Promise<void>; abstract mintKey(type: KeyType, params: KeyStoreParams): string; abstract createStream(streamName: string): Promise<boolean>; abstract deleteStream(streamName: string): Promise<boolean>; abstract createConsumerGroup(streamName: string, groupName: string): Promise<boolean>; abstract deleteConsumerGroup(streamName: string, groupName: string): Promise<boolean>; abstract publishMessages(streamName: string, messages: string[], options?: PublishMessageConfig): Promise<string[] | ProviderTransaction>; abstract consumeMessages(streamName: string, groupName: string, consumerName: string, options?: { batchSize?: number; blockTimeout?: number; autoAck?: boolean; enableBackoff?: boolean; initialBackoff?: number; maxBackoff?: number; maxRetries?: number; }): Promise<StreamMessage[]>; abstract transact(): ProviderTransaction; abstract ackAndDelete(streamName: string, groupName: string, messageIds: string[], options?: StringAnyType): Promise<number>; abstract acknowledgeMessages(streamName: string, groupName: string, messageIds: string[], options?: StringAnyType): Promise<number | TransactionProvider>; abstract deleteMessages(streamName: string, groupName: string, messageIds: string[], options?: StringAnyType): Promise<number | TransactionProvider>; abstract retryMessages(streamName: string, groupName: string, options?: { consumerName?: string; minIdleTime?: number; messageIds?: string[]; delay?: number; maxRetries?: number; limit?: number; }): Promise<StreamMessage[]>; abstract getStreamStats(streamName: string): Promise<StreamStats>; abstract getStreamDepth(streamName: string): Promise<number>; abstract getStreamDepths(streamName: { stream: string; }[]): Promise<{ stream: string; depth: number; }[]>; abstract trimStream(streamName: string, options: { maxLen?: number; maxAge?: number; exactLimit?: boolean; }): Promise<number>; abstract getProviderSpecificFeatures(): { supportsBatching: boolean; supportsDeadLetterQueue: boolean; supportsOrdering: boolean; supportsTrimming: boolean; supportsRetry: boolean; maxMessageSize: number; maxBatchSize: number; }; }