Finalmente logre resolver el problema con un listen/notify. Un trigger dispara una funcion que hace un notify y mientras tanto en perl tengo un programa haciendo listen sobre la notificacion, cuando esta llega obtengo los registros que estan marcados con enviados=false y envio el sms. Hasta ahora todo ha ido muy bien, falta probarla con mas ruido.
Les agradezco de antemano sus comentarios. Un saludo. 2011/9/12 Álvaro Hernández Tortosa <[email protected]> > El 12/09/11 22:50, Espartano escribió: > > 2011/9/11 Álvaro Hernández Tortosa<[email protected]>: >> >>> El 09/09/11 17:05, Silvio Bravo Cadó escribió: >>> >>> Wow no habia escuchado sobre pgq, se ve interesante, aunque creo imho que >>> es >>> tambien meter logica de negocio dentro de la db, que para este caso no le >>> veo problema ya sea por pgq o por listen/notify. >>> >>> Hola, Silvio (ahora sí, perdón por la lectura rápida de tu nombre). >>> Yo >>> no creo que eso sea meter lógica de negocio, es usar un sistema de colas >>> (que, tangencialmente, usa una bbdd). De hecho, es muy común que un >>> sistema >>> de colas use una bbdd para la persistencia. Lo importante es que sea una >>> aplicación la que, tras escribir en tu bbdd, comunique a la cola el >>> mensaje. >>> Y luego, otra app, lea de la cola y envíe el sms. >>> >> Aquí el problema de seguir ese esquema es: que pasaría si la >> aplicación ya ha insertado en la base de datos y se pierde la >> conectividad de red ? o se va la luz, o alguien pone un firewall hacia >> la base de datos ? >> > Hola, yo no veo ningún problema. El mensaje se pasa a la cola de > mensajes. Los sistemas de colas de mensajes garantizan la persistencia en > los datos. > > Si te parece que se pudiera escribir en la db y se perdiera antes de > llegar a la cola, siempre puedes: insertar db -> insertar cola -> actualizar > en db que se ha insertado en cola. > > > >> Yo creo que para ese asunto es mejor que la db nofique al programa que >> envía los sms que hay mensajes listos para ser enviados, si ocurre una >> falla de energía o lo que sea lo mas que podría pasar es que enviaras >> dos veces el mismo mensaje. >> > Enviar dos veces el mismo mensaje podría ser un problema (depende del > caso de uso, yo lo desconozco). En todo caso, ¿qué sucede en tu caso si es > la app la que no está disponible y la db intenta comunicarse con ella en un > trigger? Eso no es muy bonito, tiene los mismos problemas que comentas. > > Cada misión, a su capa correspondiente. Lo que yo comenta no sufre de > los problemas que sugieres. > > > Saludos, > > Álvaro > > -- > Álvaro Hernández Tortosa > > > ----------- > NOSYS > Networked Open SYStems > > -- * Ing. Silvio Bravo Cadó* Desarrollo de Software *Tlaltek S.A de C.V* <http://tlaltek.com> (229) 9 2 1 1 3 2 6 ext. 102. Veracruz, México.
