Antecedentes: Nuestro sistema actual involucra dos servicios (uno escrito en Java, el otro en PHP) que se comunican entre sí utilizando devoluciones de llamada HTTP. Nos gustaría migrar de devoluciones de llamadas HTTP a una arquitectura basada en mensajes utilizando ActiveMQ (u otro, si es necesario). Probablemente usemos STOMP para comunicarnos entre ellos. Eventualmente, el servicio de PHP se reescribirá en Java, pero eso no es parte de este proyecto.Activación de PHP desde ActiveMQ
Pregunta: ¿Cómo puede el sistema ActiveMQ notificar a PHP que un nuevo mensaje ha sido enviado a la cola que el sistema de PHP está suscrito? En el sistema actual, la devolución de llamada invoca de forma inherente al PHP y lo desencadena. Esto se va con una arquitectura basada en mensajes.
soluciones posibles:
- Cron llamadas regularmente un script PHP que comprueba si hay nuevos mensajes. puaj.
- Un proceso de PHP de larga ejecución que se repite, duerme y busca nuevos mensajes. menos yuck?
- ActiveMQ llama a un script PHP cuando se publica un nuevo mensaje. bien, ¿cómo?
- ??
Tuve que hacer esto exactamente no hace mucho tiempo. Ejecutamos un script PHP de bloqueo continuo (activado a través de CRON) que hablaba de forma nativa con la aplicación PHP y AMQ a través de STOMP. El bloqueo rotativo nos permitió superponer los procesos en ejecución para una buena red de seguridad sin la duplicidad. Buena suerte. – allnightgrocery
@Inkspeak: Gracias por la idea. ¿Puedes aclarar a qué te refieres con 'rolling lock'? Tengo la idea básica de lo que es, pero no puedo encontrar una referencia al término en cualquier lugar. –
Perdón por eso. No estoy seguro de dónde viene ese término tampoco. Lo usamos cuando nos referimos a un proceso PHP CRON bloqueado porque no se ejecutan como daemons y cada ejecución sucesiva gira sobre la última cuando se libera el bloqueo. Aquí hay un ejemplo de ejecución (http://stackoverflow.com/questions/1780823/php-loop-acting-as-cronjobensensure-only-one-instance-running) hecho con rebaño (http://php.net/manual) /en/function.flock.php). – allnightgrocery