feat: add fastify in cluster pool example
[poolifier.git] / examples / typescript / http-server-pool / fastify-cluster / src / main.ts
1 import { dirname, extname, join } from 'node:path'
2 import { fileURLToPath } from 'node:url'
3 import { FixedClusterPool, availableParallelism } from 'poolifier'
4 import type { WorkerData, WorkerResponse } from './types.js'
5
6 const workerFile = join(
7 dirname(fileURLToPath(import.meta.url)),
8 `worker${extname(fileURLToPath(import.meta.url))}`
9 )
10
11 const pool = new FixedClusterPool<WorkerData, WorkerResponse>(
12 availableParallelism(),
13 workerFile,
14 {
15 errorHandler: (e: Error) => {
16 console.error(e)
17 }
18 }
19 )
20
21 // Start one fastify instance per cluster worker in the pool
22 for (let i = 1; i <= pool.info.maxSize; i++) {
23 pool
24 .execute({ port: 8080 })
25 .then(response => {
26 if (response.status) {
27 console.info(
28 // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
29 `Fastify is listening on worker ${i} on port ${response.port}`
30 )
31 } else {
32 console.error(`Fastify failed to start on worker ${i}:`, response.error)
33 }
34 return null
35 })
36 .catch(error => {
37 console.error(error)
38 })
39 }