Web Service asíncrono


30 de Mayo del 2019

Buen día a todos, me gustaría que me pudieran ayudar con una pregunta, hace poco tiempo estaba haciendo un web service para guardar datos de una base de datos a otra, pero en la parte del cliente el web service es llamado cada vez que se hace una inserción o actualización (trigger) haciendo que se ponga en cola muchas ejecuciones, quisiera saber si hay alguna manera para que esto corra de forma asíncrona o alguna forma que permita que se ejecuten varias veces a la vez sin poner en cola.

Muchas gracias a todos estaré pendiente de cualquier cosa.

Feliz día.


David Carrero
12 de Agosto del 2026

El problema no es la llamada al web service en sí, es que la estás disparando de forma síncrona directamente desde el trigger. Cada inserción/actualización espera a que el web service responda antes de continuar, y si el volumen sube, las llamadas se acumulan y todo se pone en cola.

La forma habitual de resolver esto es desacoplar la escritura en base de datos de la llamada al web service, en vez de intentar hacer la llamada asíncrona desde el propio trigger:

1. El trigger no llama al web service. Solo marca la fila como «pendiente de sincronizar» (un campo sync_status o similar) o inserta una fila en una tabla cola aparte con el id afectado.
2. Un proceso independiente (un job programado, un demonio, o un consumidor de cola tipo JMS/ActiveMQ si el volumen lo justifica) lee esa tabla cada X segundos y hace las llamadas al web service, una a una o en lote.
3. Si la llamada falla, se reintenta en la siguiente pasada sin bloquear nada más.

Con este patrón, aunque lleguen 500 inserciones en un segundo, el trigger no se entera de la latencia del web service, solo escribe una marca. El worker que consume la cola es el que absorbe la carga a su ritmo.

Si no quieres montar infraestructura de colas, una tabla intermedia + un scheduler simple ya resuelve el 90% del problema sin añadir dependencias nuevas.

David