peanar
Version:
A job queue for Node.js based on RabbitMQ
54 lines (53 loc) • 1.67 kB
TypeScript
import 'colors';
import { Transform, TransformCallback } from 'stream';
import PeanarApp, { IPeanarRequest } from './app';
import { IDelivery } from 'ts-amqp/dist/interfaces/Basic';
import PeanarJob from './job';
import CloseReason from 'ts-amqp/dist/utils/CloseReason';
import { Channel } from 'amqplib';
export type IWorkerResult = {
status: 'SUCCESS';
job: PeanarJob;
result: unknown;
} | {
status: 'FAILURE';
job: PeanarJob;
error: unknown;
};
export interface IDeathInfo {
count: bigint;
reason: string;
queue: string;
time: bigint;
exchange: string;
'routing-keys': string[];
}
interface WorkerOptions {
logger?: (msg: string) => void;
}
export default class PeanarWorker extends Transform {
private app;
private _channel;
private queue;
private n;
private state;
private activeJob?;
private destroy_cb?;
private _destroy_timeout?;
private _shutdown_timeout;
private _channel_lost;
logger: (message?: any, ...optionalParams: any[]) => void;
constructor(app: PeanarApp, channel: Channel, queue: string, options?: WorkerOptions);
get channel(): Channel;
set channel(ch: Channel);
onChannelClosed: (err: CloseReason) => void;
shutdown(timeout?: number): Promise<void>;
_destroy(error: Error | null, callback: (error: Error | null) => void): void;
log(msg: string): void;
getJobDefinition(name: string): import("./app").IPeanarJobDefinition | undefined;
_parseBody(body: Buffer): IPeanarRequest | null;
private _getJob;
private run;
_transform(delivery: IDelivery, _encoding: string, cb: TransformCallback): void;
}
export {};