@hotmeshio/hotmesh
Version:
Serverless Workflow
65 lines (64 loc) • 3.23 kB
TypeScript
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;
};
}