UNPKG

@moleculer/channels

Version:
179 lines (178 loc) 6.15 kB
export = NatsAdapter; /** * @typedef {import("nats").NatsConnection} NatsConnection NATS Connection * @typedef {import("nats").ConnectionOptions} ConnectionOptions NATS Connection Opts * @typedef {import("nats").StreamConfig} StreamConfig NATS Configuration Options * @typedef {import("nats").JetStreamManager} JetStreamManager NATS Jet Stream Manager * @typedef {import("nats").JetStreamClient} JetStreamClient NATS JetStream Client * @typedef {import("nats").JetStreamPublishOptions} JetStreamPublishOptions JetStream Publish Options * @typedef {import("nats").ConsumerOptsBuilder} ConsumerOptsBuilder NATS JetStream ConsumerOptsBuilder * @typedef {import("nats").ConsumerOpts} ConsumerOpts Jet Stream Consumer Opts * @typedef {import("nats").JetStreamOptions} JetStreamOptions Jet Stream Options * @typedef {import("nats").JsMsg} JsMsg Jet Stream Message * @typedef {import("nats").JetStreamSubscription} JetStreamSubscription Jet Stream Subscription * @typedef {import("nats").MsgHdrs} MsgHdrs Jet Stream Headers * @typedef {import("moleculer").ServiceBroker} ServiceBroker Moleculer Service Broker instance * @typedef {import("moleculer").LoggerInstance} Logger Logger instance * @typedef {import("../index").Channel} Channel Base channel definition * @typedef {import("./base").BaseDefaultOptions} BaseDefaultOptions Base adapter options */ /** * @typedef {Object} NatsDefaultOptions * @property {Object} nats NATS lib configuration * @property {String} url String containing the URL to NATS server * @property {ConnectionOptions} nats.connectionOptions * @property {StreamConfig} nats.streamConfig More info: https://docs.nats.io/jetstream/concepts/streams * @property {ConsumerOpts} nats.consumerOptions More info: https://docs.nats.io/jetstream/concepts/consumers */ /** * NATS JetStream adapter * * More info: https://github.com/nats-io/nats.deno/blob/main/jetstream.md * More info: https://github.com/nats-io/nats-architecture-and-design#jetstream * More info: https://docs.nats.io/jetstream/concepts/ * * @class NatsAdapter * @extends {BaseAdapter} */ declare class NatsAdapter extends BaseAdapter { constructor(opts: any); /** @type {NatsConnection} */ connection: NatsConnection; /** @type {JetStreamManager} */ manager: JetStreamManager; /** @type {JetStreamClient} */ client: JetStreamClient; /** @type {Map<string,JetStreamSubscription>} */ subscriptions: Map<string, JetStreamSubscription>; /** * Connect to the adapter. */ connect(): Promise<any>; stopping: boolean; /** * Subscribe to a channel with a handler. * * @param {Channel & NatsDefaultOptions} chan */ subscribe(chan: Channel & NatsDefaultOptions): Promise<void>; /** * Creates the callback handler * * @param {Channel} chan * @returns */ createConsumerHandler(chan: Channel): (err: import("nats").NatsError, message: JsMsg) => Promise<void>; /** * Create a NATS Stream * * More info: https://docs.nats.io/jetstream/concepts/streams * * @param {String} streamName Name of the Stream * @param {Array<String>} subjects A list of subjects/topics to store in a stream * @param {StreamConfig} streamOpts JetStream stream configs */ createStream(streamName: string, subjects: Array<string>, streamOpts: StreamConfig): Promise<import("nats").StreamInfo>; /** * Moves message into dead letter * * @param {Channel} chan * @param {JsMsg} message JetStream message */ moveToDeadLetter(chan: Channel, message: JsMsg): Promise<void>; /** * Publish a payload to a channel. * * @param {String} channelName * @param {any} payload * @param {Partial<JetStreamPublishOptions>?} opts */ publish(channelName: string, payload: any, opts?: Partial<JetStreamPublishOptions> | null): Promise<void>; } declare namespace NatsAdapter { export { NatsConnection, ConnectionOptions, StreamConfig, JetStreamManager, JetStreamClient, JetStreamPublishOptions, ConsumerOptsBuilder, ConsumerOpts, JetStreamOptions, JsMsg, JetStreamSubscription, MsgHdrs, ServiceBroker, Logger, Channel, BaseDefaultOptions, NatsDefaultOptions }; } import BaseAdapter = require("./base"); /** * NATS Connection */ type NatsConnection = import("nats").NatsConnection; /** * NATS Connection Opts */ type ConnectionOptions = import("nats").ConnectionOptions; /** * NATS Configuration Options */ type StreamConfig = import("nats").StreamConfig; /** * NATS Jet Stream Manager */ type JetStreamManager = import("nats").JetStreamManager; /** * NATS JetStream Client */ type JetStreamClient = import("nats").JetStreamClient; /** * JetStream Publish Options */ type JetStreamPublishOptions = import("nats").JetStreamPublishOptions; /** * NATS JetStream ConsumerOptsBuilder */ type ConsumerOptsBuilder = import("nats").ConsumerOptsBuilder; /** * Jet Stream Consumer Opts */ type ConsumerOpts = import("nats").ConsumerOpts; /** * Jet Stream Options */ type JetStreamOptions = import("nats").JetStreamOptions; /** * Jet Stream Message */ type JsMsg = import("nats").JsMsg; /** * Jet Stream Subscription */ type JetStreamSubscription = import("nats").JetStreamSubscription; /** * Jet Stream Headers */ type MsgHdrs = import("nats").MsgHdrs; /** * Moleculer Service Broker instance */ type ServiceBroker = import("moleculer").ServiceBroker; /** * Logger instance */ type Logger = import("moleculer").LoggerInstance; /** * Base channel definition */ type Channel = import("../index").Channel; /** * Base adapter options */ type BaseDefaultOptions = import("./base").BaseDefaultOptions; type NatsDefaultOptions = { /** * NATS lib configuration */ nats: any; /** * String containing the URL to NATS server */ url: string; connectionOptions: ConnectionOptions; /** * More info: https://docs.nats.io/jetstream/concepts/streams */ streamConfig: StreamConfig; /** * More info: https://docs.nats.io/jetstream/concepts/consumers */ consumerOptions: ConsumerOpts; };