UNPKG

@eang/core

Version:

eang - model driven enterprise event processing

44 lines (43 loc) 1.79 kB
import { Consumer, JetStreamClient, JetStreamManager, PubAck, ConsumerConfig, ConsumerInfo } from '@nats-io/jetstream'; import { Connectable, Subject } from 'rxjs'; import { ConnectionOptions, NatsConnection } from '@nats-io/nats-core'; import { IEangEvent } from './functions.js'; import { EntityEvent } from './entity.js'; import { IPublishingOptions } from './eang.js'; export interface ConsumerStream { consumer: Consumer; consumerInfo: ConsumerInfo; consumerName: string; eventSubj: Subject<IEangEvent>; event$: Connectable<IEangEvent>; startToConsume: () => Promise<void>; } interface ConsumerStreams { [key: string]: ConsumerStream; } export declare class NatsStreamService { readonly consumerData: ConsumerStreams; nc: NatsConnection; js: JetStreamClient; jsm: JetStreamManager; constructor(); initialize(opts: ConnectionOptions): Promise<{ nc: NatsConnection; js: JetStreamClient; jsm: JetStreamManager; }>; ensureStream(streamName: string, subjects: string[]): Promise<{ created: boolean; streamInfo: import("@nats-io/jetstream").StreamInfo; }>; deleteStream(streamName: string): Promise<boolean>; ensureConsumer(streamName: string, consumerName: string | undefined, filter_subjects?: string[], opts?: Partial<ConsumerConfig>): Promise<{ consumer: Consumer; consumerInfo: ConsumerInfo; }>; ensureConsumerStream(consumerName: string | undefined, subscription: string[], opts?: Partial<ConsumerConfig>): Promise<ConsumerStream>; deleteConsumerStream(consumerName: string): Promise<boolean>; startToConsume(consumerName: string): Promise<void>; publish(events: EntityEvent[], options: IPublishingOptions): Promise<PubAck[]>; } export {};