@eang/core
Version:
eang - model driven enterprise event processing
44 lines (43 loc) • 1.79 kB
TypeScript
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 {};