Sala 2 05 tratamento de notificações - rafael prenzier

710 visualizações

Publicada em

3º Developers Conference MercadoLibre Brasil

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
710
No SlideShare
0
A partir de incorporações
0
Número de incorporações
444
Ações
Compartilhamentos
0
Downloads
2
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Sala 2 05 tratamento de notificações - rafael prenzier

  1. 1. TRATAMENTO DE NOTIFICAÇÕES Rafael Prenzier Software Engineer
  2. 2. Tratamento de notificações Rafael Prenzier dos Santos
  3. 3. Developer Conference Agenda ● Príncipios ● Como receber notificações ● Erros comuns ● Ferramentas ● Sugestões de implementação
  4. 4. Developer Conference Mas o que é uma Notificação?
  5. 5. Developer Conference O que é uma notificação? É um POST HTTP contendo um JSON O Mercado Livre essa mensagem para a url configurada na sua Aplicação Pépe, já tirei a vela !
  6. 6. Developer Conference Fluxo de uma notificação 1. Um evento ocorre dentro do MercadoLivre 2. O MercadoLivre envia uma notificação do evento para todas as apps autorizadas no cadastro do usuário 3. As aplicações confirmam o recebimento da notificação
  7. 7. Developer Conference Notificação
  8. 8. Developer Conference Notificação
  9. 9. Developer Conference Notificação POST
  10. 10. Developer Conference Notificação POST { "user_id": "12345678", "resource": "/questions/123456789", "topic": "questions", "received": "2014-02-04T19:00:04+00:00", "sent": "2014-02-04T19:00:45+00:00" }
  11. 11. Developer Conference Notificação POST { "user_id": "12345678", "resource": "/questions/123456789", "topic": "questions", "received": "2014-02-04T19:00:04+00:00", "sent": "2014-02-04T19:00:45+00:00" }
  12. 12. Developer Conference Notificação POST { "user_id": "12345678", "resource": "/questions/123456789", "topic": "questions", "received": "2014-02-04T19:00:04+00:00", "sent": "2014-02-04T19:00:45+00:00" } 200 OK
  13. 13. Developer Conference Quais eventos disparam notificações? Qualquer alteração dentro do conteúdo de: ● Items; ● Questions; ● Orders (Vendas); ● Payments; Ex: Uma venda vai gerar notificação de Item, pois diminuiu o estoque, uma notificação de nova venda e também uma notificação de pagamento assim que a venda for paga
  14. 14. Developer Conference Configurar o recebimento de notificações? http://applications.mercadolibre.com ● Notification Callback URL ● Topics - Items, Orders, Questions e Payments
  15. 15. Developer Conference
  16. 16. Developer Conference http://www.suaurlaqui.com/notification
  17. 17. Developer Conference http://www.suaurlaqui.com/notification x x x x
  18. 18. Developer Conference Exemplo notificação de Item { "user_id": 1234, "resource": "/items/MLB139876", "topic": "items", "attempts": 1, "received": "2011-10-19T16:38:34.425Z", "sent" : "2011-10-19T16:40:34.425Z", }
  19. 19. Developer Conference Exemplo notificação de Item { "user_id": 1234, "resource": "/items/MLB139876", "topic": "items", "attempts": 1, "received": "2011-10-19T16:38:34.425Z", "sent" : "2011-10-19T16:40:34.425Z", }
  20. 20. Developer Conference Exemplo notificação de Item { "user_id": 1234, "resource": "/items/MLB139876", "topic": "items", "attempts": 1, "received": "2011-10-19T16:38:34.425Z", "sent" : "2011-10-19T16:40:34.425Z", }
  21. 21. Developer Conference Exemplo notificação de Item { "user_id": 1234, "resource": "/items/MLB139876", "topic": "items", "attempts": 1, "received": "2011-10-19T16:38:34.425Z", "sent" : "2011-10-19T16:40:34.425Z", }
  22. 22. Developer Conference Exemplo notificação de Item { "user_id": 1234, "resource": "/items/MLB139876", "topic": "items", "attempts": 1, "received": "2011-10-19T16:38:34.425Z", "sent" : "2011-10-19T16:40:34.425Z", }
  23. 23. Developer Conference Exemplo notificação de Item { "user_id": 1234, "resource": "/items/MLB139876", "topic": "items", "attempts": 1, "received": "2011-10-19T16:38:34.425Z", "sent" : "2011-10-19T16:40:34.425Z", }
  24. 24. Developer Conference Exemplo notificação de Item { "user_id": 1234, "resource": "/items/MLB139876", "topic": "items", "attempts": 1, "received": "2011-10-19T16:38:34.425Z", "sent" : "2011-10-19T16:40:34.425Z", }
  25. 25. Developer Conference Exemplo notificação de Order { "user_id": 1234, "resource": "/orders/139876", "topic": "orders", "attempts": 1, "received": "2011-10-19T16:38:34.425Z", "sent": "2011-10-19T16:40:34.425Z" }
  26. 26. Developer Conference Exemplo notificação de Order { "user_id": 1234, "resource": "/orders/139876", "topic": "orders", "attempts": 1, "received": "2011-10-19T16:38:34.425Z", "sent": "2011-10-19T16:40:34.425Z" }
  27. 27. Developer Conference Exemplo notificação de Order { "user_id": 1234, "resource": "/orders/139876", "topic": "orders", "attempts": 1, "received": "2011-10-19T16:38:34.425Z", "sent": "2011-10-19T16:40:34.425Z" }
  28. 28. Developer Conference Exemplo notificação de Question { "user_id": 1234, "resource": "/questions/139876", "topic": "questions", "attempts": 1, "received": "2011-10-19T16:38:34.425Z", "sent" : "2011-10-19T16:40:34.425Z", }
  29. 29. Developer Conference Exemplo notificação de Question { "user_id": 1234, "resource": "/questions/139876", "topic": "questions", "attempts": 1, "received": "2011-10-19T16:38:34.425Z", "sent" : "2011-10-19T16:40:34.425Z", }
  30. 30. Developer Conference Exemplo notificação de Question { "user_id": 1234, "resource": "/questions/139876", "topic": "questions", "attempts": 1, "received": "2011-10-19T16:38:34.425Z", "sent" : "2011-10-19T16:40:34.425Z", }
  31. 31. Developer Conference Exemplo notificação de Payments { "user_id": 1234, "resource": "/collections/123123123", "topic": "payments", "attempts": 1, "received": "2014-07-21T18:51:28+00:00", "sent": "2014-07-21T18:51:28+00:00" }
  32. 32. Developer Conference Exemplo notificação de Payments { "user_id": 1234, "resource": "/collections/123123123", "topic": "payments", "attempts": 1, "received": "2014-07-21T18:51:28+00:00", "sent": "2014-07-21T18:51:28+00:00" }
  33. 33. Developer Conference Exemplo notificação de Payments { "user_id": 1234, "resource": "/collections/123123123", "topic": "payments", "attempts": 1, "received": "2014-07-21T18:51:28+00:00", "sent": "2014-07-21T18:51:28+00:00" }
  34. 34. Developer Conference Recebendo Notificações
  35. 35. Developer Conference Confirmação de recebimento A confirmação de recebimento é bem simples: Retornar o status HTTP 200, se a notificação foi recebida com sucesso. Qualquer status diferente de 200 será considerado falha no recebimento e serão realizadas novas tentativas de envio.
  36. 36. Developer Conference Exemplo notificação Repetida { "user_id": 1234, "resource": "/questions/139876", "topic": "questions", "attempts": 2, "received": "2011-10-19T16:38:34.425Z", "sent" : "2011-10-19T16:40:34.425Z", }
  37. 37. Developer Conference Exemplo notificação Repetida { "user_id": 1234, "resource": "/questions/139876", "topic": "questions", "attempts": 3, "received": "2011-10-19T16:38:34.425Z", "sent" : "2011-10-19T17:40:34.425Z", }
  38. 38. Developer Conference Exemplo notificação Repetida { "user_id": 1234, "resource": "/questions/139876", "topic": "questions", "attempts": 4, "received": "2011-10-19T16:38:34.425Z", "sent" : "2011-10-19T18:40:34.425Z", }
  39. 39. Developer Conference Exemplo notificação Repetida { "user_id": 1234, "resource": "/questions/139876", "topic": "questions", "attempts": 5, "received": "2011-10-19T16:38:34.425Z", "sent" : "2011-10-19T19:40:34.425Z", }
  40. 40. Developer Conference Mas eu vou ficar recebendo as notificações pra sempre?
  41. 41. Developer Conference Intervalo de envio das notificações A partir do recebimento da primeira notificação em um período de 12 horas serão feitas novas tentativas de entregar as notificações, Após 12 horas a notificação é descartada!
  42. 42. Developer Conference Recuperando os dados da notificação { "user_id": 1234, "resource": "/questions/2880XXX87", "topic": "questions", "attempts": 1, "received": "2011-10-19T16:38:34.425Z", "sent" : "2011-10-19T16:40:34.425Z", }
  43. 43. Developer Conference Recuperando os dados da notificação https://api.mercadolibre.com/questions/2880XXX87
  44. 44. Developer Conference Recuperando os dados da notificação https://api.mercadolibre.com/questions/2880XXX87 GET
  45. 45. Developer Conference Recuperando os dados da notificação https://api.mercadolibre.com/questions/2880XXX87 { "id": 2880XXX87, "answer": null, "date_created": "2013-09-23T13:13:52.000-04:00", "deleted_from_listing": false, "hold": false, "item_id": "MLB50XXX993", "last_updated": "2013-09-23T15:52:09.000-04:00", "seller_id": "362XXXX5", "status": "DELETED", "suspected_spam": false, "text": "o jogo vem completo né ?", "from": - { "id": 844XXXX2, "answered_questions": 4, }, } GET
  46. 46. Developer Conference Recuperando os dados da notificação https://api.mercadolibre.com/questions/2880XXX87 { "id": 2880XXX87, "answer": null, "date_created": "2013-09-23T13:13:52.000-04:00", "deleted_from_listing": false, "hold": false, "item_id": "MLB50XXX993", "last_updated": "2013-09-23T15:52:09.000-04:00", "seller_id": "362XXXX5", "status": "DELETED", "suspected_spam": false, "text": "o jogo vem completo né ?", "from": - { "id": 844XXXX2, "answered_questions": 4, }, } GET
  47. 47. Developer Conference Erros Comuns
  48. 48. Developer Conference Portas bloqueadas + Firewall http://www.minhaurl.com:7846910/notifications Recomendamos :80 :8080 :443
  49. 49. Developer Conference Não confirmação do recebimento 200
  50. 50. Developer Conference Não Selecionar Tópicos
  51. 51. Developer Conference Perdas de notificações $> Notifications > /dev/null
  52. 52. Developer Conference Ferramentas
  53. 53. Developer Conference Test Notification Url http://developers.mercadolibre.com/test-notification-url/
  54. 54. Developer Conference API Status - Delay de notificação http://developers.mercadolibre.com/api-health-view/
  55. 55. Developer Conference Alternativa - Buscas /users/$USER_ID/items/search /orders/search?seller=$USER_ID /questions/search?seller=$USER_ID /collections/search?seller=$USER_ID sort=date_desc
  56. 56. Developer Conference Sugestão de implementação
  57. 57. Developer Conference Guarde sua notificação Salve a Notificação assim que recebe-la Quebrando o sincronismo você irá trabalhar melhor com essa notificação
  58. 58. Developer Conference Versione a notificação
  59. 59. Developer Conference Sugestão de implementação Banco de Dados
  60. 60. Developer Conference Sugestão de implementação Banco de Dados
  61. 61. Developer Conference Sugestão de implementação Banco de Dados
  62. 62. Developer Conference Sugestão de implementação Banco de Dados
  63. 63. Developer Conference Sugestão de implementação Banco de Dados
  64. 64. Developer Conference Sugestão de implementação Banco de Dados
  65. 65. Developer Conference Sugestão de implementação VISH... Banco de Dados
  66. 66. Developer Conference Sugestão de implementação Banco de Dados
  67. 67. Developer Conference DOG PILE
  68. 68. Developer Conference Sugestão de implementação Banco de Dados
  69. 69. Developer Conference Sugestão de implementação
  70. 70. Developer Conference
  71. 71. Developer Conference O que é Importante! Confirmar o recebimento da notificação com o status HTTP 200
  72. 72. Developer Conference O que é Importante! Sua URL de notificação deve ser pública para o Mercado Livre conseguir te enviar as notificações Por Obséquio
  73. 73. Developer Conference O que é Importante! Salve sua notificação Porque você não salva as notificações?
  74. 74. Developer Conference Obrigado!

×