@moleculer/channels
Version:
Reliable messages for Moleculer services
179 lines (178 loc) • 6.15 kB
TypeScript
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;
};