Cita:
Empezado por Neftali [Germán.Estévez]
Yo lo he pensado como 2 procesos distintos y en ese caso, lo veo más simple; Tal vez se me está pasando algo.
PROCESO 1: Genera facturas las firma y las encola (en una tabla de BD)
PROCESO 2: Envía el contenido de la cola.
El PROCESO 2, cada X segundos coge lo que haya en la cola (tabla) y lo envía. El retorno devuelve los N segundos a esperar hasta el próximo envío.
a) Si hubiera más de 1000 registros en cola, X se coloca a 0 sg (no hace falta esperar).
b) Si hubiera menos de 1000 registros, a X se le asigna el valor N (y es el tiempo a esperar hasta el próximo envío).
|
Primera (pequeña) nota, el PROCESO 2 solo envía los primeros 1000 registros de la cola, no todos. Pero esto ya lo sabes.
Después veo otra tema lógico: si tienes 1999 registros en la cola, los primeros 1000 saldrán de seguida, pero los demás 999,
más todos los demás que vendrán en el intervalo, van a tardar la totalidad de las N segundos.
Es un poco ineficiente. Pero ¿podría resultar un problema?
Depende del ritmo de llegada de los documentos, que puede ser más o menos regular. Pero como no tengo experiencia de un sistema que puede verse desbordado por el limite ese de los 1000, no consigo evaluar el tamaño de los problemas. Solo veo que los extremos no son casos con problema: un ritmo regular (x documento por minuto, fijo) no debe rellenar la cola con 1999 registros (N=180 s ⇒ x=666⅓

más de 11/s); por otro lado un ritmo completamente irregular, después de poner 1999 registros en cola, o 2999 o 3999, se va a parar para un rato muy superior a N segundos, por tanto no hay problema tampoco.