La decisión
Recibir una notificación no equivale a completar una operación. Diseñe para repeticiones y orden distinto. Stripe documenta ese comportamiento; revise el contrato de cada proveedor.
Un ejemplo práctico
Un evento ficticio de factura pagada se valida, guarda con su trabajo previsto y confirma tras aceptación persistente. Si se repite, reconozca el identificador sin abonar dos veces. Un fallo posterior conserva estado para reintentar.
Alternativas que conviene valorar
Inbox registra entradas; outbox, trabajo creado en su transacción. Separan intención persistente y red. Una conciliación detecta desacuerdos aunque no haya aviso.
Dónde falla el plan
No guarde identificadores solo en memoria ni marque final antes de confirmar cambios. Use reglas de estado para eventos antiguos. Espacie fallos temporales y derive datos inválidos a revisión.
Separe identidad de entrega e identidad empresarial
Guarde identificador del evento y referencia de factura. Eventos distintos pueden afectar a la misma factura: bloquearlos todos tras verla una vez pierde cambios válidos. Repetir el mismo evento tampoco debe duplicar un abono. Determine qué clave protege recepción y qué restricción protege estado, confirmando esas comprobaciones con el cambio real.
Valide al remitente mediante el mecanismo documentado antes de aceptar trabajo. Si firma el cuerpo original, conserve sus bytes en lugar de reconstruir JSON. No guarde secretos de firma en logs o código. Verificación, reintentos y retención dependen del proveedor concreto; copiar otro servicio puede comprobar algo incorrecto aunque parezca funcionar.
Demuestre recuperación en el momento incómodo
Detenga el trabajador tras recibir, después de aceptar durablemente y durante el cambio empresarial. Revise bandeja de entrada y registro tras reiniciar. Un efecto externo pudo ser aceptado antes de guardar el resultado local. Use idempotencia o consulta de conciliación si existen; un indicador local no garantiza entrega exactamente una vez.
El reprocesamiento controlado conserva la identidad y registra el motivo. Datos permanentemente inválidos van a excepciones, no a reintentos infinitos. La conciliación compara registros autorizados en un intervalo y reporta diferencias. Acuerde quién las revisa, atiende las urgentes y determina el cierre. Una cola sin responsable puede conservar datos mientras nadie advierte que el trabajo se detuvo.
Antes de encargar el trabajo
¿Repetir produce un solo efecto? ¿El worker continúa tras caer? ¿Se investiga y repite un registro? Use estas demostraciones en la aceptación de integración.