Antes de nada expongo la situación concreta para que podamos llegar a la mejor solución.
La base de datos donde estarían las tablas de control del Perl es fija, ya existe y no es opcional: es una BD Oracle.
- Un requerimiento es que el proceso Perl no realice accesos a esta BD para chequear si tiene trabajo o no porque según los arquitectos de la DB, esto no es óptimo.
- Otro requerimiento es la mayor rapidez posible, ya que estamos real time y los datos vienen de lejos y van muy lejos (un montón de sistemas conectados, el Perl es enano al lado de toda la infraestructura montada) por lo tanto el tiempo es un handicap.
- Uno trabaja continuamente, non stop, me refiero a que está siempre activo con el objetivo de mantener una conexión con el servidor. Su función, entre otras cosas, es, "en el momento de ser avisado", conectarse a una base de datos (otra distinta a la primera) y ejecutar... lo que sea...
- El otro proceso lo que tiene que hacer es "avisar" al primero para que trabaje, es decir, no queremos que el proceso primero acceda a la base de datos (la primera mencionada) continuamente para chequear ciertas cosas, sino que solo acceda cuando sea "avisado".
En fin, para implementar este aviso tenemos 4 posibilidades(que yo vea):
- tabla control en BD ---> descartada por arquitectos (se aceptan comentarios que pueda yo exponer a estos arquitectos para rebatir su opinión)
- ficheros --> como tú, explorer, a mi me encanta esta solución en la que solo comprobar que se ha creado un fichero estaríamos "avisados"
- memoria compartida --> la verdad es que también me gusta pero para mi es una caja negra y tengo ¡¡¡TERROR!!!! ya que ¡¡¡¡no he conseguido encontrar comentarios positivos!!!!. Si esto funcionara bien creo que cumple los requisitos y sería en mi opinión la mejor opción.
- HTTP server --> me conecto a 8 diferentes HTTP addresses donde los 8 procesos estarán leyendo todo el rato (un thread que va leyendo el HTTP request) . En este caso El HTTP request lo lanza otro sistema cuando quiera "avisarme" de que hay trabajo, por lo tanto el segundo proceso que yo he mencionado anteriormente ("el avisador") desaparece. Y una vez avisado otro thread dentro del mismo proceso se pondrá a trabajar. Esta es la solución que inicialmente quieren implementar y que a mi NO ME GUSTA y que intento sustituir a toda costa y por lo que escribo este mail al foro... Por supuesto también podéis defenderla, soy todo oídos
¡¡¡Gracias a todos!!!