Pregunta

En el trabajo que estamos discutiendo si debe o no implementar una cola de mensajes para nuestra aplicación PHP. Actualmente estamos buscando a ActiveMQ de Apache. Una cosa que no esté claro por completo de si es o no es posible desencadenar un proceso basado en un mensaje que llega en una cola.

La literatura que hemos encontrado hasta ahora parece indicar que los mensajes de las colas son un mecanismo basado en el tirón: el proceso se ejecuta de forma regular (ya sea como un demonio o un cron), y tira de sus mensajes entrantes de la cola. ¿Es posible convertir esto en un mecanismo de empuje? Es decir, hay una manera de tener la cola de mensajes realmente iniciar una petición HTTP (o un proceso) cuando llegue un mensaje? Una de las opciones que hemos encontrado es la publicación / suscripción modelo, pero esto requiere la ejecución de nuestra aplicación PHP en un bucle infinito para mantener una conexión abierta (TCP) a la instancia ActiveMQ, que se siente como un poco de una chapuza.

Cualquier entrada sería muy apreciada.

¿Fue útil?

Solución

Una solución obvia es dejar que el editor inicie la petición HTTP justo después de almacenar el mensaje, pero esto plantea la pregunta, ¿por qué estás usando una cola de mensajes?

Tener un conjunto de consumidores que escuchan en una cola y haciendo su trabajo como mensajes vienen no es una chapuza, es bueno, el diseño escalable. (Aunque estoy de acuerdo en que la ejecución de un proceso de PHP en un bucle infinito tiene sus desventajas.)

¿Por qué ha elegido una cola de mensajes a diferencia de, por ejemplo, una base de datos que almacena los mensajes? El "productor" podría guardar el mensaje como una fila en una tabla y luego disparar el "consumidor" con PK del mensaje.

Otros consejos

Considerar la creación de una ruta Camel que tira de mensajes de la cola (componente JMS) y hacia delante a un HTTP punto final (componente HTTP). Usted puede incluso decidir la sede de la ruta del camello en el proceso de intermediario ActiveMQ - creando una especie de corredor de enrutamiento inteligente. ActiveMQ lo hace fácil por la agrupación de las bibliotecas Camel Core en la distribución ActiveMQ.

Aquí está un puesto relevante / relacionado reciente:

HTTP Post De ActiveMQ usando Camel

Su concepto de diseño de una aplicación para supervisar la cola es la forma en la industria de la activación de una aplicación externa para funcionar. Echar un vistazo a IBM Websphere "Aplicaciones de disparo del monitor". En su aplicación puede tener varios monitores de activación para iniciar aplicaciones que procesan los mensajes en una cola, por lo que las escalas muy bien como se ejecuta el supervisor de activación en el servidor se instalan las aplicaciones en (y si se quiere diseñar para la escalabilidad a usted debería ser capaz de tener varios servidores de aplicación si es necesario).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top