2011-09-12 23 views
5

Estoy buscando un administrador de colas de trabajos en node.js que pueda invocar php. Esto es para una aplicación web que necesita enviar correos electrónicos, crear archivos pdf y otros que me gustaría realizar de manera asíncrona en el proceso de php.Cola de trabajos en node.js

Ejemplo del proceso: solicita

  1. usuario una página php
  2. PHP invoca el gestor de colas de trabajo y agrega una tarea
  3. La tarea se ejecuta de forma asíncrona en Node.js de php, preferiblemente cuando está un poco más tranquila
  4. tarea es ejecutar un script php

Por qué este sistema "complejo"?

  1. Escribimos todas nuestras aplicaciones web en PHP (Zend Framework)
  2. Nos gustaría empezar a aprender Node.js
  3. Necesitamos un proceso asíncrono (respuesta rápida!)
  4. El " verdadera tarea" debe ser un script php, así, utilizar clases PHP ya escritos, tener fácil acceso a las conexiones de bases de datos y de ser tanto más seco posible

Los casos de uso de este sistema:

  1. usuario se registra a sí mismo, el sistema enviará un correo electrónico de bienvenida
  2. usuario completa para el comercio electrónico, el sistema enviará la factura

Al final, nos gustaría utilizar nodo-cron, así, para llevar a cabo tareas cron que no son del sistema (muy específicas de la aplicación). Node-cron invocará el administrador de colas de trabajos, que posteriormente ejecutará un script php.

¿Existe tal aplicación ya en el nodo?

Respuesta

0

Una de las opciones posibles es node-jobs, que usa Redis.

+0

Redis es una instalación amplia de un sistema. ¿Cómo podríamos hacer trabajos de nodos (que espero que puedan ejecutarse por base de aplicación) usar redis por aplicación? ¿O deberíamos facilitar esto al anteponer todos los trabajos por el nombre de la aplicación (probablemente un TLD inverso)? –

+1

Un prefijo probablemente funcione: el TLD inverso es un truco perfecto. – Femi

2

En tal caso, preferiría una cola de mensajes como RabbitMQ y bibliotecas del lado del cliente como node-amqp y php-amqp. Luego simplemente envíe su trabajo desde su script PHP en la cola y deje que nodejs recoja el trabajo de la cola. Una gran ventaja es que es extensible y es ampliamente utilizado y probado en el mercado empresarial.

+1

¿Por qué usaría una herramienta de este tipo para esta configuración? Parece que podría funcionar, pero diseñado para este objetivo. Las pruebas exhaustivas y listas para el mercado empresarial son, por supuesto, ventajas, pero la facilidad de uso y la simplicidad cuentan también. –

+0

RabbitMQ está bien documentado, es independiente del lenguaje (¿hoy día es nodejs al día siguiente python, ruby, java?), Comunidad activa. De causa la simplicidad siempre es agradable, pero elijo mis tecnologías también por la actividad del proyecto. – malte

Cuestiones relacionadas