@webda/core
Version:
Expose API with Lambda
48 lines (47 loc) • 1.31 kB
TypeScript
import { Counter, Gauge, Histogram } from "../core.js";
import { Service, ServiceParameters } from "../services/service.js";
import { CancelablePromise } from "../utils/waiter.js";
export default abstract class PubSubService<T = any, K extends ServiceParameters = ServiceParameters> extends Service<K> {
/**
* @override
*/
protected metrics: {
errors: Counter;
processing_duration: Histogram;
messages_sent: Counter;
messages_received: Counter;
messages_pending: Gauge;
};
/**
* @override
*/
initMetrics(): void;
/**
* Send an event to the queue
* @param event
*/
abstract sendMessage(event: T): Promise<void>;
/**
* Unserialize into class
* @param data
* @param proto
* @returns
*/
unserialize<L>(data: string, proto?: {
new (): L;
}): L;
/**
* Size of the consumer if any
* @returns
*/
abstract size(): Promise<number>;
/**
* Subscribe to a channel calling the callback with every Event received
* @param callback
* @param eventPrototype
*/
abstract consume(callback: (event: T) => Promise<void>, eventPrototype?: {
new (): T;
}, onBind?: () => void): CancelablePromise;
}
export { PubSubService };