Merge dependabot/npm_and_yarn/examples/typescript/http-server-pool/fastify-cluster...
[poolifier.git] / examples / typescript / http-server-pool / fastify-hybrid / src / main.ts
index 795a358bd52d85acedf2f3c87c4edd4e15d4626f..66be31a8aca6bef23391127b94391efc0b75361c 100644 (file)
@@ -8,24 +8,43 @@ const fastifyWorkerFile = join(
   `fastify-worker${extname(fileURLToPath(import.meta.url))}`
 )
 
+const requestHandlerWorkerFile = join(
+  dirname(fileURLToPath(import.meta.url)),
+  `request-handler-worker${extname(fileURLToPath(import.meta.url))}`
+)
+
 const pool = new FixedClusterPool<ClusterWorkerData, ClusterWorkerResponse>(
   Math.round(availableParallelism() / 2),
   fastifyWorkerFile,
   {
     onlineHandler: () => {
       pool
-        .execute({ port: 8080 })
+        .execute({
+          port: 8080,
+          workerFile: requestHandlerWorkerFile,
+          maxWorkers:
+            Math.round(availableParallelism() / 4) < 1
+              ? 1
+              : Math.round(availableParallelism() / 4),
+          enableTasksQueue: true,
+          tasksQueueOptions: {
+            concurrency: 8
+          },
+          errorHandler: (e: Error) => {
+            console.error('Thread worker error', e)
+          }
+        })
         .then(response => {
           if (response.status) {
             console.info(
               // eslint-disable-next-line @typescript-eslint/restrict-template-expressions
-              `Fastify is listening on cluster worker on port ${response.port}`
+              `Fastify is listening in cluster worker on port ${response.port}`
             )
           }
           return null
         })
         .catch(error => {
-          console.error('Fastify failed to start on cluster worker:', error)
+          console.error('Fastify failed to start in cluster worker:', error)
         })
     },
     errorHandler: (e: Error) => {