@imqueue/rpc
Version:
RPC-like client-service implementation over messaging queue
74 lines (73 loc) • 2.54 kB
TypeScript
/*!
* IMQ-RPC Interfaces: IMQServiceOptions
*
* I'm Queue Software Project
* Copyright (C) 2025 imqueue.com <support@imqueue.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* If you want to use this code in a closed source (commercial) project, you can
* purchase a proprietary commercial license. Please contact us at
* <support@imqueue.com> to get commercial licensing options.
*/
import { IMQOptions } from '@imqueue/core';
import { IMQRPCRequest } from './IMQRPCRequest';
import { IMQRPCResponse } from './IMQRPCResponse';
import { IMQService } from './IMQService';
import { IMQClient } from './IMQClient';
export interface IMQBeforeCall<T> {
(req?: IMQRPCRequest, res?: IMQRPCResponse): Promise<void>;
}
export interface IMQAfterCall<T> {
(req: IMQRPCRequest, res?: IMQRPCResponse): Promise<void>;
}
export interface IMQMetricsServerOptions {
enabled?: boolean;
port?: number;
queueLengthFormatter?: (length: number, metricName: string) => string;
}
export interface IMQServiceOptions extends IMQOptions {
multiProcess: boolean;
childrenPerCore: number;
metricsServer?: IMQMetricsServerOptions;
beforeCall?: IMQBeforeCall<IMQService>;
afterCall?: IMQAfterCall<IMQService>;
}
export interface IMQClientOptions extends IMQOptions {
path: string;
compile: boolean;
timeout: number;
write: boolean;
beforeCall?: IMQBeforeCall<IMQClient>;
afterCall?: IMQAfterCall<IMQClient>;
singleQueue?: boolean;
}
/**
* Default service options
*
* @type {IMQServiceOptions}
*/
export declare const DEFAULT_IMQ_SERVICE_OPTIONS: IMQServiceOptions;
/**
* Default metric server options
*
* @type {NonNullable<IMQMetricsServerOptions>}
*/
export declare const DEFAULT_IMQ_METRICS_SERVER_OPTIONS: NonNullable<IMQMetricsServerOptions>;
/**
* Default client options
*
* @type {IMQClientOptions}
*/
export declare const DEFAULT_IMQ_CLIENT_OPTIONS: IMQClientOptions;