Saltar al contenido

Inbox transaccional

Un inbox transaccional usa registros duraderos de mensajes para proteger el procesamiento local frente a entregas duplicadas.

También conocido comoTransactional inbox
APIs e integración

Un inbox transaccional usa registros duraderos de mensajes para proteger el procesamiento local frente a entregas duplicadas. En la variante descrita aquí, la marca de mensaje procesado y su cambio en los datos de negocio se guardan en la misma transacción de base de datos.

Un servicio ficticio cuyo nombre de consumidor es report-worker recibe el mensaje E-42. Inserta en su inbox la combinación del consumidor y el identificador del mensaje y aumenta un contador de informes de 6 a 7. Ambos cambios se confirman juntos. Una restricción de unicidad en la base de datos para esa combinación también protege frente a instancias que trabajan simultáneamente. Consultar primero y escribir después no basta por sí solo.

Importa el momento del fallo

Si la transacción falla antes del commit, no persisten ni la entrada del inbox ni el cambio del contador. Si el commit se completa pero se pierde la posterior confirmación al broker, E-42 puede llegar de nuevo. La entrada existente evita entonces otro incremento hasta 8. La confirmación al broker no forma parte de esta transacción local.

La idempotencia describe el efecto seguro de una repetición; el inbox es un posible patrón para conseguirlo. Un outbox guarda los mensajes salientes junto con el cambio local. El inbox por sí solo no garantiza que una llamada HTTP externa se ejecute o un correo se envíe exactamente una vez. La conservación de los identificadores debe cubrir el periodo posible de nuevas entregas y reprocesamientos; las entradas eliminadas demasiado pronto dejan de proteger frente a duplicados posteriores.

Fuentes

Artículos sobre el tema

APIs e integración con ASES

ERP, CRM y tienda bien conectados