X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=README.md;h=47a680d039609442639275395e62b5b699a540cb;hb=213cbac68fa2edc0187b1f02b23532d6eedd5c74;hp=546cb9ae4f698537fe5cd5603e5e5321175bab60;hpb=fac9ce963c96879918d8855c7bbed637dfcd54ff;p=poolifier.git diff --git a/README.md b/README.md index 546cb9ae..47a680d0 100644 --- a/README.md +++ b/README.md @@ -39,12 +39,17 @@ Please consult our [general guidelines](#general-guidelines). - Fixed and dynamic pool size :white_check_mark: - Easy switch from a pool type to another :white_check_mark: - No runtime dependencies :white_check_mark: -- Proper integration with node [async_hooks](https://nodejs.org/api/async_hooks.html) :white_check_mark: -- Support CommonJS, ESM, and TypeScript :white_check_mark: +- Proper integration with Node.js [async_hooks](https://nodejs.org/api/async_hooks.html) :white_check_mark: +- Support for CommonJS, ESM, and TypeScript :white_check_mark: - Support for [worker_threads](https://nodejs.org/api/worker_threads.html) and [cluster](https://nodejs.org/api/cluster.html) Node.js modules :white_check_mark: -- Support multiple task functions :white_check_mark: -- Support sync and async task functions :white_check_mark: +- Support for multiple task functions :white_check_mark: +- Support for sync and async task functions :white_check_mark: - Tasks distribution strategies :white_check_mark: +- Lockless tasks queueing :white_check_mark: +- Queued tasks rescheduling: + - Task stealing :white_check_mark: + - Tasks stealing under back pressure :white_check_mark: + - Tasks redistribution on worker error :white_check_mark: - General guidelines on pool choice :white_check_mark: - Error handling out of the box :white_check_mark: - Widely tested :white_check_mark: @@ -62,7 +67,7 @@ Please consult our [general guidelines](#general-guidelines). - [Overview](#overview) - [Installation](#installation) - [Usage](#usage) -- [Node versions](#node-versions) +- [Node.js versions](#nodejs-versions) - [API](#api) - [General guidelines](#general-guidelines) - [Worker choice strategies](#worker-choice-strategies) @@ -110,7 +115,7 @@ const { DynamicThreadPool, FixedThreadPool, PoolEvents, availableParallelism } = // a fixed worker_threads pool const pool = new FixedThreadPool(availableParallelism(), './yourWorker.js', { - errorHandler: e => console.error(e), + errorHandler: (e) => console.error(e), onlineHandler: () => console.info('worker is online') }) @@ -119,7 +124,7 @@ pool.emitter.on(PoolEvents.busy, () => console.info('Pool is busy')) // or a dynamic worker_threads pool const pool = new DynamicThreadPool(Math.floor(availableParallelism() / 2), availableParallelism(), './yourWorker.js', { - errorHandler: e => console.error(e), + errorHandler: (e) => console.error(e), onlineHandler: () => console.info('worker is online') }) @@ -128,32 +133,42 @@ pool.emitter.on(PoolEvents.ready, () => console.info('Pool is ready')) pool.emitter.on(PoolEvents.busy, () => console.info('Pool is busy')) // the execute method signature is the same for both implementations, -// so you can easy switch from one to another +// so you can easily switch from one to another pool .execute() - .then(res => { + .then((res) => { console.info(res) }) - .catch(err => { + .catch((err) => { console.error(err) }) ``` You can do the same with the classes _ClusterWorker_, _FixedClusterPool_ and _DynamicClusterPool_. -**See [examples](./examples/) folder for more details**: +**See [examples](./examples/) for more details**: - [Javascript](./examples/javascript/) - [Typescript](./examples/typescript/) - [HTTP client pool](./examples/typescript/http-client-pool/) + - [SMTP client pool](./examples/typescript/smtp-client-pool/) - [HTTP server pool](./examples/typescript/http-server-pool/) - - [Express](./examples/typescript/http-server-pool/express/) + - [Express worker_threads pool](./examples/typescript/http-server-pool/express-worker_threads/) + - [Express cluster pool](./examples/typescript/http-server-pool/express-cluster/) + - [Express hybrid pool](./examples/typescript/http-server-pool/express-hybrid/) + - [Fastify worker_threads pool](./examples/typescript/http-server-pool/fastify-worker_threads/) + - [Fastify cluster pool](./examples/typescript/http-server-pool/fastify-cluster/) + - [Fastify hybrid pool](./examples/typescript/http-server-pool/fastify-hybrid/) + - [WebSocket server pool](./examples/typescript/websocket-server-pool/) + - [ws worker_threads pool](./examples/typescript/websocket-server-pool/ws-worker_threads/) + - [ws cluster pool](./examples/typescript/websocket-server-pool/ws-cluster/) + - [ws hybrid pool](./examples/typescript/websocket-server-pool/ws-hybrid/) Remember that workers can only send and receive structured-cloneable data. -## Node versions +## Node.js versions -Node versions >= 16.14.x are supported. +Node.js versions >= 16.14.x are supported. ## [API](./docs/api.md)