feat: add fastify in cluster pool example
[poolifier.git] / examples / typescript / http-server-pool / fastify-cluster / src / main.ts
CommitLineData
418077df
JB
1import { dirname, extname, join } from 'node:path'
2import { fileURLToPath } from 'node:url'
3import { FixedClusterPool, availableParallelism } from 'poolifier'
4import type { WorkerData, WorkerResponse } from './types.js'
5
6const workerFile = join(
7 dirname(fileURLToPath(import.meta.url)),
8 `worker${extname(fileURLToPath(import.meta.url))}`
9)
10
11const 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
22for (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}