Trabalhos pesados ​​offshore em NodeJS

Uma prática recomendada é transferir trabalhos pesados ​​no Node JS para outros processos. Isso pode ser feito usando um messagebus como RabbitMQ ou ZeroMQ . Por exemplo, conecte também o aplicativo ac # ao messagebus para processar a mensagem e colocar o resultado de volta no messagebus para que nodejs possa retornar o resultado. Dessa forma, você pode lidar com uma grande quantidade de solicitações paralelas.

Exemplo:

Socket.io -> NodeJS -> Message #1 -> RabbitMQ -> c# application Processing
Socket.io -> NodeJS -> Message #2 -> RabbitMQ -> java application Processing
Socket.io -> NodeJS -> Message #3 -> RabbitMQ -> php application Processing
Socket.io -> NodeJS -> Message #4 -> RabbitMQ -> c# application Processing
Socket.io -> NodeJS -> Message #5 -> RabbitMQ -> java application Processing
Socket.io -> NodeJS -> Message #6 -> RabbitMQ -> java application Processing

Socket.io <- NodeJS -> RabbitMQ <- Message #1 <- c# application Processing
Socket.io <- NodeJS <- RabbitMQ <- Message #5 <- java application Processing
Socket.io <- NodeJS <- RabbitMQ <- Message #6 <- java application Processing
Socket.io <- NodeJS <- RabbitMQ <- Message #2 <- java application Processing
Socket.io <- NodeJS <- RabbitMQ <- Message #3 <- php application Processing
Socket.io <- NodeJS <- RabbitMQ <- Message #4 <- c# application Processing

Leve em consideração que as mensagens podem não ser processadas na mesma ordem que o exemplo mostra, então adicione algo como sequenceIds às suas mensagens se você precisar ordenar durante o processamento de mensagens simultâneas.