Idempotencia en microsserviços y APIs REST
Las aplicaciones basadas en la plataforma Devprime ya cuentan con una función de idempotencia automática, que protege los servicios para evitar inclusiones duplicadas.
En este escenario, usaremos una clave de cifrado enviada por la aplicación mediante la API. Para usar la característica, basta con cambiar la configuración en el microservicio basado en Devprime.
Creación de un microservicio para usar en el ejemplo
Utilizaremos un microservicio basado en la plataforma Devprime
- Utilice una cuenta activa en Devprime y habilite la CLI de Devprime.
- Inicie los contenedores desde docker (MongoDB, RabbitMQ y Redis)
- Cree la cola orderevents en RabbitMQ.
- Cree un nuevo microservicio de pedido.
Iniciando la configuración de idempotencia
Ajuste de la idempotencia en el interruptor “Devprime_App”
Cambie la configuración de Idempotencia a “Habilitado” a “verdadero” y el “Flujo” a “frontend”. Cambiamos la “clave” por “mi-clave-de-idempotencia”. Con esta configuración, la API requerirá la clave de idempotencia en Headar.
code .\src\app\appsettings.json
|
|
Incluir una segunda persistencia en la tecla “Devprime_State”
En este ejemplo, usaremos un Redis local con una contraseña predeterminada
code .\src\app\appsettings.json
|
|
Inicio de la idempotencia automática en el microservicio
Ahora es el momento de probar la configuración. Antes de iniciar el microservicio, asegúrese de que ha habilitado los contenedores y ha creado la cola en RabbitMQ.
Ejecute la aplicación y publique a través de la API de pedidos
Necesitamos pasar la clave de idempotencia a través de Head en este escenario, por lo que debe consumir la API usando curl, podtman, insomnia y muchos otros.
Inicio del microservicio configurado para usar una clave de idempotencia
`
Un ejemplo de código json para su uso en la API. Modifique en sus pruebas.
|
|
En la primera prueba, no pasaremos la clave de idempotencia en POST, como en el ejemplo de Postman.
Al mirar el retorno de la API tendremos una petición negativa debido a la ausencia de la clave que en la configuración con el “Flow” de tipo “Backend” es obligatoria y debe pasarse por el Header.
Ahora agreguemos nuestra clave “my-idempotency-key” y un valor guid.
Después de confirmar la publicación en el paso anterior, el registro ya registra el éxito en el proceso de idempotencia.
Al intentar realizar una nueva publicación con la misma clave anterior, el comando duplicado ya se deniega automáticamente.
En este artículo, ha señalado lo fácil que es implementar la función de idempotencia en microservicios desarrollados con la plataforma Devprime.
Tiene a su disposición configuraciones adicionales como “Acción” que configurada como “Manual” requiere que active en un método específico y/o “Alcance” que puede limitar la acción en un Adaptador como “Web” o “Stream”
Más artículos sobre idempotencia
Implementación de la idempotencia en microservicios
Creación de microservicios idempotentes basados en eventos