• 0
Sign in to follow this  
andre machado

Como dar o OK STATUS HTTP 200 após recebimento da notificação ?

Question

Bom dia, eu estou recebendo as notificações e tratando o json normalmente, capturo o dado e levo ao banco de dados, faço o que tem de ser feito, porém, a notificação se repete mesmo após eu capturar o json,

Não sei que código deve ser utilizado para enviar o ok status 200 para o mercado livre parar de me notificar sobre aquele item,

O que ocorre é que, eu fico repetidamente tratando o mesmo item (dado)

 

Sei que o servidor deve retornar esse status, mas não sei como fazer!

Share this post


Link to post
Share on other sites

4 answers to this question

Recommended Posts

  • 0
5 hours ago, andre machado said:

Bom dia, eu estou recebendo as notificações e tratando o json normalmente, capturo o dado e levo ao banco de dados, faço o que tem de ser feito, porém, a notificação se repete mesmo após eu capturar o json,

Não sei que código deve ser utilizado para enviar o ok status 200 para o mercado livre parar de me notificar sobre aquele item,

O que ocorre é que, eu fico repetidamente tratando o mesmo item (dado)

 

Sei que o servidor deve retornar esse status, mas não sei como fazer!

Sem saber a linguagem que você usa é difícil te dar uma resposta. Se for php é isso

header('X-PHP-Response-Code: 200', true, 200);

Mas tenha em mente que alguns eventos enviam varias notificações seguidas . Uma nova Order gera uns 4, no minimo

Share this post


Link to post
Share on other sites
  • 0
16 minutes ago, gbandoni said:

Sem saber a linguagem que você usa é difícil te dar uma resposta. Se for php é isso

header('X-PHP-Response-Code: 200', true, 200);

Mas tenha em mente que alguns eventos enviam varias notificações seguidas . Uma nova Order gera uns 4, no minimo

Oi, é php sim.

Tá, mas eu coloco isso onde. em baixo do codigo que recebo o json numa variavel ?

E essa resposta se dará ao recebimento dessa notificação em específica, para cada terá este retorno é isso ?

Por que não vi parametros ou onde colocar, eu não faço ideia como se usa a resposta do ok, mas tenho um codigo limpo apenas recebendo o json, e incluindo os dados no meu banco de dados para depois tratar notificação por notificação, acontece que está entrando várias repetidas, no qual quero evitar dando o ok quando recebido.

Uma alternativa foi dar um unique id no banco para esse dado, mas, não é o correto.

 

Share this post


Link to post
Share on other sites
  • 0
12 hours ago, andre machado said:

Oi, é php sim.

Tá, mas eu coloco isso onde. em baixo do codigo que recebo o json numa variavel ?

Isso é uma tratativa básica de requisições via http você emite uma resposta quando acabou o que tem para fazer em seu script. Lembrando que tu nao pode mandar header depois de gerou algum output (echo). No site do php tu acha mais exemplos e documentação. Se seu php é maior que 5.4 pode usar http_response_code(200) que faz a mesma coisa só que de maneira mais simples

E essa resposta se dará ao recebimento dessa notificação em específica, para cada terá este retorno é isso ?

Naturalmente

Por que não vi parametros ou onde colocar, eu não faço ideia como se usa a resposta do ok, mas tenho um codigo limpo apenas recebendo o json, e incluindo os dados no meu banco de dados para depois tratar notificação por notificação, acontece que está entrando várias repetidas, no qual quero evitar dando o ok quando recebido.

Uma alternativa foi dar um unique id no banco para esse dado, mas, não é o correto.

Eu não vejo nada de errado de dar um id para essas requisições . Mas eu acho que tu não pegou a ideia desse fluxo. uma order pode sofrer n alteracoes num curto espaço de tempo e em condições normais de temperatura e pressão você vai receber várias notificações seguidas de order . Um exemplo de uma order do mes passado

id    user_id    resource    resource_id    recurso    lido    hora    
XXXXX11826    256XXXXXX    orders    196XXXXXXX    {"resource":"/orders/196XXXXXXX","user_id":256XXXX...    1    2019-03-16 22:30:32
XXXXX11827    256XXXXXX    orders    196XXXXXXX    {"resource":"/orders/196XXXXXXX","user_id":256XXXX...    1    2019-03-16 22:30:34
XXXXX11829    256XXXXXX    orders    196XXXXXXX    {"resource":"/orders/196XXXXXXX","user_id":256XXXX...    1    2019-03-16 22:30:35
XXXXX95550    256XXXXXX    orders    196XXXXXXX    {"resource":"/orders/196XXXXXXX","user_id":256XXXX...    1    2019-03-20 20:21:41

Em 5 segundos foram 3 mas pq provavelmente foi criada , depois adicionaram dados de pagamento e depois adicionaram dados de shipment . Se tu só quiser manter um unico registro vai perder o lastro das coisas e vai ter um problema sério de overload no banco de dados . Eu recebo meio milhão de notificação de items por dia . Imagina se eu fizesse 500 mil querys para verificar se o registro ja existe , ou pior , fazer um insert or update para toda requisição que chega

Share this post


Link to post
Share on other sites
  • 0

O que eu faço então?
 

No momento to dando insert e update em cada requisição, a diferenca é que, nao deixo o banco repetir, uso um unique_id, e, executo com cron a cada 1 minuto.

Mas posteriormente o cron executar vem denovo aquela requisição e um novo update é feito (no mesmo resource)

Como reaproveitar essas requisições?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this