Hola, os doy y os quito la razon,

No es lo mismo, facturar las facturas una a una que por "bala" que seas, te da igual esperar 1 minuto, es mas o menos lo que tardas en introducir los datos , previsualiza y demas, que como vosotros gestionar un multi puesto que en 20" te pueden generar 10 facturas o mas, si es una caja que coje los datos de un codigo de barras y los asigna en decimas de segundo, ya me diras, entonces, no es la misma forma de plantear el control de flujo.
En mi caso es el siguiente, enpiezo a facturar realizo una consulta a la aeat para ver que este el servidor activo sino saco un mensaje para realizar una proforma y cuando haya conexion facturar y enviar, relleno lo necesario e intento enviar la factura, si todo OK, inicializo un timer con un flag que me impide enviar nada hasta que pasen los t segundos que devolbio hacienda.
Hasta el momento , incluso con las pruebas mońas tardo unos 45" en selecionar el tipo de factura, introducir algo en la mas sencilla que es un F2, previsualizar y enviar que en mi caso lo he dividido en 2 modulos independientes , y proceder el envio, esperar 15" mas no es problema, "OJO EN MI CASO".
En vuestro caso , si o si, se deve implementar un gestor de envios independiente, que solo recoja las facturas que se le pasen , encadenadas o encadenandolas el, haga los intentos de envio y demas gestiones, sin asistencia del usuario, exceptuando fallos catastroficos, diria yo.
A mi se me ocurre , por ejemplo:
Se inicia el servicio:
1 -> Contadores de tiempo, incidencias etc a 0, false, primer envio true, etc...
2 -> Consulta a la tabla en la que se insertan los registros de facturas, abonos, restificativas ,etc a enviar.(esta consulta se realiza periodicamente cada 1" por ejemplo
->no vacia y primer envio a true, se hace consulta a aeat , asignando fecha y registro del primer envio en cola , se compruban todos los registros, descartan los ya enviados si los
hay , se realizan las diversas comprobaciones para ver si los registros de la bbdd coinvciden con los de la aeat, se envia los restantes con incidencia si timestamp superior a actual
+120".
->no vacia y tiempo de espera =0 o 1000 registros, envio inmediato. se pone el contador = a tiempo devuelto + 50 segundos.
-> tiempo de espera --1;
3 -> se van apilando, desapilando los registros segun sea necesario y se repite sucesivamente el punto 2.
Para apagar el servicio, se intenta primero vaciar la cola pendiente y luego se deja apagar.
Estoy equivocado en mi planteamiento?