Question

Desde hace una semana que estoy recibiendo varias veces la misma notificación. En el manual dice que el re-intento se hace en intervalos periódicos, pero en mi caso estoy recibiendo hasta 4 veces la misma notificación y en el mismo segundo. Con este problema no llega el servidor a cargarlo en la base de datos y verificar que no esté repetido, por lo que me genera varias veces la misma order en mi sistema.

 

Otro problema que sucede desde el mismo día, es que hay algunas notificaciones de MercadoPago que llegan varios minutos después (ese no es un problema) y otros que no llegan nunca (eso si es un problema).

 

¿Alguien más está con este tipo de problemas?¿Hay alguna solución que se les ocurra?

 

Atte.
Andres

Share this post


Link to post
Share on other sites

10 answers to this question

Recommended Posts

  • 0

Buenas,

 

Yo tuve un problema parecido, es mas creo que aún esta. Lo que hice fue un artilugio interno, guardando la info de la notificación en una db, y luego analizando esas notificaciones por un cron job.

 

Saludos.

Share this post


Link to post
Share on other sites
  • 0

El servidor responde status 200 y guardo en una db cada notificación para poder verificar que no venga repetida. El problema es que vienen 4 veces la misma notificación en el mismo segundo, entonces no llega a grabar la db y devuelve los 4 status 200 pero ya es tarde. La idea del cron job para eliminar las repetidas podría funcionar, pero sería mejor que MercadoLibre envíe la notificación por lo menos cuando se cumplan los 20 segundos de espera del status ok según http://developers.mercadolibre.com/notifications/

 

¿Hay alguna forma de contactar a los desarrolladores o a alguien de MercadoLibre para que nos informe si es un error de la api de ellos o tenemos que buscar otra solución?

 

Saludos

Share this post


Link to post
Share on other sites
  • 0

Mismo problema por acá, ML está enviando varias notificaciones con muy poca diferencia de segundos entre ellas, no alcanzas a mandar el ack que ya vino la otra. Esto trae problemas, seria ideal una solución del lado de ML

Share this post


Link to post
Share on other sites
  • 0

Hola.

A mi me pasaba algo similar, cuando recibia varias notificaciones en mi servidor, al crear la orden en mi db, se creaba las veces que llegaba la notificacion en ese mismo segundo, creo que eso ya es problema de Mercadolibre y lo resolvi creando una funcion que revise si ya existe la orden y lo mas importante, le puse un sleep random al script, asi si llegan en el mismo segundo, uno va a esperar mas que el otro, y la verdad ya jamas se me han repetido las ordenes por recepcion de notificaciones en el mismo instante. 

Saludos! 

Share this post


Link to post
Share on other sites
  • 0

A mi cuando me pasó, me dijeron en ML que era porque mi app tardaba más de 200 ms en responder (y era así). Lo que hice fue al recibir la notificación simplemente la guardo en un queue worker y 2 minutos más tarde se ejecuta. Lo primero que revisa el job es que ya no exista y si lo hace me guarda en un log que se repitió y nada más. Tengo varios cientos de repetidos al día, pero no afecta a la aplicación porque siempre se genera solamente el primero. Yo le puse un delay de 2 min, pero se le podría poner menos.

Share this post


Link to post
Share on other sites
  • 0

Si es un "error" de MercadoLibre. A mi sucede lo mismo desde hace tiempo. Sobre todo con el carro de compra pero hice algo parecido a Fernando y solvente.

Share this post


Link to post
Share on other sites
  • 0

Hola.

Saben cual es la mejor solucion? En su DB guarden siempre el id de la orden y lo que quieran controlar, y ala columna del order id configurenla para que sea unica, asi no se repetira nunca la misma orden, era algo tan facil.

Como siempre el order id son puros numeros, esta miy facil asi.

Igual sigo usando sleeps aleatorios para mayor seguridad. Igual no dependan solamente de las notificaciones, es miy mala practica no estar guardando informacion en la DB, de perdida guarden el ID para que tengan un control interno.

No es error de ML, simplemente asi funciona ML, el error esta en nosotros al creer que la API va a hacer nuestro trabajo.

Saludos y a pensarle mucho para poder resolver porblemas.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now