Definition for a service that handles multithreading.

interface MultithreadingServiceInterface {
    init: () => void | Promise<void>;
    queueThreadJob: <WorkerData extends BaseThreadJobWorkerData>(
        threadJobData: ThreadJobData<WorkerData>,
    ) => string | Promise<string>;
    requeueThreadJob: (
        jobId: string,
        data?: ThreadJobDataFunctions,
    ) => void | Promise<void>;
    rerunThreadJob: <WorkerData extends BaseThreadJobWorkerData, ResultType>(
        jobId: string,
        data?: ThreadJobDataFunctions,
    ) =>
        | ThreadJobEntity<WorkerData, ResultType>
        | Promise<ThreadJobEntity<WorkerData, ResultType>>;
    run: <InputType, ResultType>(
        func: ThreadJobFunction<InputType, ResultType>,
        input: InputType,
        timeout?: number,
        priority?: boolean,
    ) => ResultType | Promise<ResultType>;
    runThreadJob: <WorkerData extends BaseThreadJobWorkerData, ResultType>(
        threadJobData: ThreadJobData<WorkerData>,
    ) =>
        | ThreadJobEntity<WorkerData, ResultType>
        | Promise<ThreadJobEntity<WorkerData, ResultType>>;
    shutdown: () => void | Promise<void>;
    waitForThreadJob: <
        ResultType,
        WorkerData extends BaseThreadJobWorkerData = BaseThreadJobWorkerData,
    >(
        jobId: string,
    ) =>
        | ThreadJobEntity<WorkerData, ResultType>
        | Promise<ThreadJobEntity<WorkerData, ResultType>>;
}

Implemented by

Properties

init: () => void | Promise<void>

Initializes the service.

queueThreadJob: <WorkerData extends BaseThreadJobWorkerData>(
    threadJobData: ThreadJobData<WorkerData>,
) => string | Promise<string>

Creates and queues a thread job with the given data.

Type declaration

requeueThreadJob: (
    jobId: string,
    data?: ThreadJobDataFunctions,
) => void | Promise<void>

Requeues a thread job that was already completed.

Type declaration

rerunThreadJob: <WorkerData extends BaseThreadJobWorkerData, ResultType>(
    jobId: string,
    data?: ThreadJobDataFunctions,
) =>
    | ThreadJobEntity<WorkerData, ResultType>
    | Promise<ThreadJobEntity<WorkerData, ResultType>>

Reruns a thread job that was already completed.

Type declaration

run: <InputType, ResultType>(
    func: ThreadJobFunction<InputType, ResultType>,
    input: InputType,
    timeout?: number,
    priority?: boolean,
) => ResultType | Promise<ResultType>

Runs the given function on a separate thread. This will not persist the state in the database.

IMPORTANT: This uses "eval" in the thread worker, so make sure that the data passed is not malicious.

Type declaration

When either the function itself throws an error or something didn't work during parsing/evaluation.

runThreadJob: <WorkerData extends BaseThreadJobWorkerData, ResultType>(
    threadJobData: ThreadJobData<WorkerData>,
) =>
    | ThreadJobEntity<WorkerData, ResultType>
    | Promise<ThreadJobEntity<WorkerData, ResultType>>

Queues a thread job for the given data and waits for its completion.

Type declaration

shutdown: () => void | Promise<void>

Terminates all the workers.

waitForThreadJob: <
    ResultType,
    WorkerData extends BaseThreadJobWorkerData = BaseThreadJobWorkerData,
>(
    jobId: string,
) =>
    | ThreadJobEntity<WorkerData, ResultType>
    | Promise<ThreadJobEntity<WorkerData, ResultType>>

Waits for the thread job with the given id to complete.

Type declaration