Skip to main content
PagrindinisTinklaraštisWebhook siuntos sekimas: kaip veikia sekimo webhook'ai, palyginti su apklausų vykdymu (naudingosios apkrovos, pakartotiniai bandymai ir sąranka)

Webhook siuntos sekimas: kaip veikia sekimo webhook'ai, palyginti su apklausų vykdymu (naudingosios apkrovos, pakartotiniai bandymai ir sąranka)

17TRACK

Siuntų sekimo žiniatinklio kabliukai siunčia HTTP užklausą jūsų programai, kai sekimo paslauga turi praneštiną atnaujinimą. Apklausa veikia priešinga kryptimi: jūsų programa pakartotinai prašo naujausios sekimo informacijos. Kūrėjams, jungiantiems siuntų duomenis prie užsakymų valdymo sistemos, parduotuvės ar klientų informavimo paslaugos, žiniatinklio kabliukai paprastai yra geresnis pagrindinis atnaujinimų mechanizmas, kai jis palaikomas; tikslinė apklausa gali padėti atkurti praleistus atnaujinimus ir suderinti įrašus.

Webhook Shipment Tracking How Tracking Webhooks Work vs Polling Payloads

Nė vienas metodas neprivers vežėjo anksčiau nuskenuoti siuntos. Abu priklauso nuo to, kada sekimo šaltinis gauna ir pateikia naują informaciją. Praktinis skirtumas yra tai, kaip jūsų programa sužino šią informaciją, kiek užklausų srauto ji sukuria ir kas nutinka, kai pristatymas nepavyksta.

Sekimo žiniatinklio kabliukai ir apklausa: veikimo skirtumas

Tai yra integracijos modeliai, o ne konkuruojančios sekimo duomenų bazės. Vežėjas arba sekimo platforma gali siūlyti vieną iš šių modelių arba abu, taikydama skirtingas prieigos sąlygas. Vertinkite konkrečios API, kurią planuojate naudoti, veikimą, o ne manykite, kad visos žiniatinklio kabliukų paslaugos teikia tokias pačias garantijas.

Sprendimo aspektasŽiniatinklio kabliukaiApklausa
Kas pradeda užklausą?Sekimo paslauga iškviečia jūsų galinį tašką.Jūsų programa iškviečia sekimo API.
Atnaujinimo delsaPriklauso nuo šaltinio duomenų naujumo, įvykio sugeneravimo, pristatymo ir apdorojimo.Taip pat priklauso nuo to, kada vykdoma kita suplanuota užklausa.
Užklausų kiekisPriklauso nuo siunčiamų atnaujinimų, paketinio siuntimo ir pakartotinių pristatymo bandymų.Priklauso nuo siuntų kiekio, apklausos dažnio ir paketinio siuntimo.
InfrastruktūraReikalingas pasiekiamas imtuvas ir saugus gaunamų užklausų tvarkymas.Reikalingas planuoklis, išeinanti API prieiga ir užklausų dažnio ribojimo valdymas.
Atkūrimas po nesėkmėsPriklauso nuo teikėjo pakartotinių bandymų ir jūsų derinimo proceso.Priklauso nuo vėlesnių užklausų ir nuo to, ar API išsaugo reikiamą istoriją.

Pirmiausia rinkitės žiniatinklio kabliukus, kai svarbūs savalaikiai atnaujinimai ir jūsų komanda gali valdyti patikimą imtuvą. Pirmiausia rinkitės apklausą, kai gaunamų užklausų galiniai taškai yra nepraktiški, siuntų kiekis nedidelis arba šaltinis neteikia tinkamų žiniatinklio kabliukų. Naudokite hibridinį modelį, kai praleisti atnaujinimai sutrikdytų klientų komunikaciją ar veiklą ir API palaiko suderinimą.

Nemanykite, kad žiniatinklio kabliukai yra pigesni. Prenumeratos mokesčiai, sekimo registracija, API iškvietimai, įvykių pristatymas ir infrastruktūra gali būti apmokestinami skirtingai. Palyginkite faktines komercines sąlygas ir numatomą darbo krūvį, o ne laikykite mažesnį užklausų skaičių mažesnės sąskaitos įrodymu.

Kas vyksta nuo vežėjo nuskaitymo iki jūsų programos?

  1. Nustatykite siuntą. Susiekite sekimo numerį, prireikus vežėjo informaciją ir vidinę siuntos nuorodą. Kai kurios paslaugos reikalauja registracijos prieš pradedant stebėjimą.
  2. Sukonfigūruokite įvykių pristatymą. Pateikite HTTPS atgalinio iškvietimo URL ir pasirinkite palaikomas įvykių prenumeratas.
  3. Šaltinis gauna sekimo informaciją. Vežėjo nuskaitymas arba būsenos pasikeitimas tampa prieinamas sekimo paslaugai.
  4. Paslauga siunčia žiniatinklio kabliuką. Užklausoje gali būti visa sekimo momentinė kopija, vienas kontrolinis taškas arba tik nuoroda, kuriai reikia API paieškos.
  5. Jūsų imtuvas patikrina ir išsaugo duomenis. Autentifikuokite užklausą, patikrinkite jos struktūrą ir patikimai įrašykite arba įtraukite į eilę įvykį.
  6. Darbininkas atnaujina verslo sistemas. Normalizuokite būsenas, atnaujinkite siuntų įrašus ir suaktyvinkite tik veiksmus, kurie vis dar yra tinkami.

Žiniatinklio kabliuko pristatymas nėra tas pats, kas fizinis pristatymas. Tai pranešimas apie siuntos informaciją. Taip pat sėkmingas žiniatinklio kabliuko atsakymas neįrodo, kad el. laiškas buvo išsiųstas arba užsakymo įrašas atnaujintas; tai yra tolesnio apdorojimo rezultatai, kuriuos reikia stebėti atskirai.

Sekimo žiniatinklio kabliuko naudingosios apkrovos skaitymas

Toliau pateiktas JSON yra iliustracinis integracijos modelis, o ne 17TRACK naudingoji apkrova ar universalus schemos standartas. Tikrieji laukų pavadinimai, būsenų kodai, laiko žymų formatai ir įvykių identifikatoriai turi būti nurodyti pasirinkto teikėjo dokumentacijoje.

{
  "event_id": "evt_example_001",
  "event_type": "shipment.updated",
  "created_at": "2025-04-08T10:16:00Z",
  "shipment": {
    "reference": "shipment_example_123",
    "tracking_number": "EXAMPLE123456",
    "carrier_code": "example_carrier",
    "status": "in_transit",
    "checkpoint": {
      "occurred_at": "2025-04-08T10:10:00Z",
      "description": "Departed processing facility"
    }
  }
}

Duomenų modelyje atskirkite tris laikrodžius: kada įvyko siuntos įvykis, kada teikėjas sugeneravo pranešimą ir kada jūsų programa jį gavo. Pavėluotas kontrolinis taškas gali būti gautas po naujesnio. Laiko žymai be poslinkio taip pat reikia aiškaus interpretavimo; tyliai nelaikykite kiekvienos vežėjo vietinio laiko žymos UTC.

Kartu su teikėjo identifikatoriais išsaugokite vidinę siuntos nuorodą. Vien sekimo numerio gali nepakakti kaip nuolatinio visuotinio identifikatoriaus, ypač skirtingų vežėjų kontekstuose. Padalintiems užsakymams tvarkykite siuntos lygio įrašus, o ne leiskite vienos siuntos pristatymo būsenai pažymėti visą užsakymą kaip užbaigtą.

Šalia normalizuotos verslo būsenos išsaugokite pradinę būseną ir aprašą. Jūsų programa gali susieti kelis vežėjo pranešimus su būsena „vežama“, tačiau pagalbos darbuotojams vis tiek gali reikėti pradinio kontrolinio taško, kad suprastų vėlavimą. Numatomos pristatymo datos yra tik apytikslės; atskirkite trūkstamą lauką nuo aiškios instrukcijos išvalyti esamą reikšmę.

Pakartotiniai bandymai, patvirtinimai ir pasikartojantys įvykiai

Žiniatinklio kabliuko pristatymas gali nepavykti dėl skirtojo laiko viršijimo, tinklo sutrikimų, autentifikavimo klaidų arba nepasiekiamo imtuvo. Teikėjas gali bandyti dar kartą, tačiau nėra universalaus pakartotinių bandymų grafiko, saugojimo laikotarpio ar maksimalaus bandymų skaičiaus. Išsiaiškinkite, kurie atsakymai sukelia kitą bandymą, kaip tvarkomi peradresavimai ir ar galimas rankinis pakartotinis pristatymas.

Patvirtinkite po patikimo priėmimo

Užklausos kelią laikykite trumpą: patikrinkite užklausą, išsaugokite priimtą darbą ir grąžinkite teikėjo reikalaujamą sėkmės atsakymą. El. laiškus siųskite ir lėtesnes verslo operacijas atlikite asinchroniškai. HTTP specifikacija apibrėžia 202 Accepted kaip priėmimą apdoroti, o ne užbaigtą apdorojimą, tačiau jūsų teikėjas gali reikalauti kitokio sėkmės atsakymo. Laikykitės jo žiniatinklio kabliuko sutarties.

Grąžinus sėkmės atsakymą prieš ką nors išsaugant, kyla rizika prarasti atnaujinimą, jei procesas sugenda. Laukiant kiekvieno tolesnio veiksmo kyla skirtojo laiko viršijimo ir dar vieno pristatymo bandymo rizika. Patikima gautųjų dėžutė arba eilė sukuria ribą tarp gavimo ir apdorojimo.

Užtikrinkite idempotentinį apdorojimą

Idempotentiškumas reiškia, kad pakartotinis to paties įvykio apdorojimas nepakartoja jo verslo padarinių. Siuntėjas gali bandyti dar kartą po to, kai jūsų serveris priėmė įvykį, bet jo patvirtinimas buvo prarastas. Todėl pasikartojantis pristatymas turėtų būti įprastas testavimo atvejis.

  • Jei yra dokumentuotas įvykio identifikatorius, naudokite jį kaip dublikatų šalinimo raktą, apibrėždami tinkamą teikėją arba paskyrą.
  • Jei identifikatoriaus nėra, sukurkite sudėtinį raktą iš stabilių įvykio laukų ir išbandykite susidūrimų riziką.
  • Atomiškai užtikrinkite unikalumą saugykloje; atskira seka „patikrinti, tada įterpti“ gali sukelti lenktyniavimo sąlygą lygiagretaus pristatymo metu.
  • Apsaugokite ir tolesnius veiksmus. Pasikartojantis įvykis neturi išsiųsti dar vieno pristatymo pranešimo ar pakartoti finansinio veiksmo.
  • Saugojimo laikotarpį nustatykite pagal teikėjo pakartotinio paleidimo elgseną ir atkūrimo reikalavimus, o ne iškart ištrinkite dublikatų šalinimo įrašus.

Nemanykite, kad įvykiai gaunami chronologine tvarka

Neperrašykite dabartinės siuntos būsenos vien todėl, kad užklausa gauta paskutinė. Palyginkite įvykio reikšmę, laiko žymas ir bet kokią dokumentuotą sekos informaciją. Išsaugokite vėlyvus kontrolinius taškus istorijoje, automatiškai negrąžindami rodomos būsenos atgal. Kartu leiskite dokumentuotus pataisymus: griežta taisyklė, kad pristatytos siuntos niekada negali pasikeisti, gali paslėpti teisėtas išimtis arba pataisytą informaciją.

Praktinis sąrankos kontrolinis sąrašas

1. Patvirtinkite teikėjo sutartį

Prieš įgyvendindami patvirtinkite registracijos reikalavimus, palaikomus įvykius, naudingosios apkrovos struktūrą, autentifikavimą, atsakymo lūkesčius, skirtuosius laikus, pakartotinių bandymų elgseną ir API limitus. Patikrinkite, ar pranešimas reiškia momentinę kopiją, ar laipsnišką pakeitimą, ar pristatymuose gali būti keli įrašai ir ar prenumerata siunčia pradinę būseną.

17TRACK integracijos atveju pradėkite nuo oficialaus Tracking API puslapio ir API dokumentacijos. Naudokite konkretaus teikėjo dokumentaciją užklausos laukams ir atgalinio iškvietimo reikalavimams nustatyti; pirmiau pateikta bendroji naudingoji apkrova nėra pakaitalas. Patvirtinkite numatomos diegti integracijos prieigos sąlygas ir veikimo limitus.

2. Apsaugokite priimantį galinį tašką

Naudokite HTTPS ir teikėjo dokumentacijoje nurodytą autentifikavimo mechanizmą. Jei naudojamas HMAC parašas, tiksliai patikrinkite jo nurodytą pasirašytą įvestį. Kai pasirašomi neapdoroti užklausos baitai, JSON analizavimas ir pakartotinis serializavimas prieš patikrą gali pakeisti šiuos baitus ir padaryti parašą negaliojantį. Slaptu raktu išvestoms parašo reikšmėms palyginti naudokite pastovaus laiko palyginimą.

Jei galimos pasirašytos laiko žymos arba pristatymo identifikatoriai, taikykite dokumentuotas pakartotinio paleidimo kontrolės priemones. Galiojantis parašas autentifikuoja pranešimą, tačiau savaime neįrodo, kad jis yra naujas. Laikykite paslaptis ne URL ir programos žurnaluose, palaikykite paslapčių keitimą ir ribokite užklausų dydį. IP leidžiamų adresų sąrašas gali būti papildoma kontrolės priemonė, kai yra prižiūrimi adresų intervalai, bet ne pranešimo autentifikavimo pakaitalas.

3. Atskirkite gavimą nuo verslo apdorojimo

Išsaugokite pakankamai informacijos, kad priimtą įvykį būtų galima atsekti ir saugiai pakartoti. Eilės darbininkai turėtų normalizuoti atnaujinimą, taikyti būsenų perėjimo taisykles ir registruoti veiksmų rezultatus. Pakartotinai nepavykstantį darbą nukreipkite į peržiūrai skirtą negyvų laiškų procesą, o ne bandykite amžinai. Ribokite prieigą ir saugojimo laiką, nes sekimo naudingosiose apkrovose gali būti su klientais susijusios informacijos.

4. Prieš paleidimą išbandykite nesėkmių scenarijus

  • Išsiųskite tą patį įvykį du kartus, įskaitant lygiagrečius pristatymus.
  • Pristatykite senesnį kontrolinį tašką po naujesnio.
  • Imituokite eilės sutrikimą ir darbininko gedimą po gavimo.
  • Išbandykite netinkamą autentifikavimą, netinkamą JSON ir per dideles užklausas.
  • Išbandykite nežinomas siuntas, trūkstamus pasirenkamus laukus ir pridėtus laukus.
  • Patikrinkite, kad viena pristatyta siunta neužbaigtų padalinto užsakymo.
  • Po atkūrimo pakartokite įvykį ir patvirtinkite, kad pranešimai išlieka nedubliuoti.

Kai saugu, toleruokite papildomus laukus, tačiau tyliai neinterpretuokite nežinomų būsenų reikšmių. Išsaugokite neapdorotą reikšmę ir nukreipkite neatpažintus atvejus į nustatytą atsarginį arba peržiūros procesą.

Kur apklausa vis dar naudinga

Apklausa naudinga pradiniam sinchronizavimui, atkūrimui po sutrikimo ir siuntų, kurių numatyti atnaujinimai neatėjo, patikrai. Tačiau vien tyla nėra žiniatinklio kabliuko gedimo įrodymas: siunta iš tikrųjų gali neturėti naujų nuskaitymų. Derinkite su dabartine API būsena arba istorija, o ne manykite, kad kiekvienai tylinčiai siuntai reikia įspėjimo.

Planuojant mastą, supaprastintas apklausos modelis yra requests per hour ≈ active shipments × polls per shipment per hour, darant prielaidą, kad vienai užklausai tenka viena siunta. Paketinių galinių taškų naudojimas pakeičia šį skaičiavimą. Pavyzdžiui, 1 000 siuntų, tikrinamų keturis kartus per valandą, sukuria 4 000 užklausų per valandą prieš pakartotinius bandymus; tai yra aritmetika, o ne teikėjo kvotos ar kainos įvertis.

Suplanuokite patikras pagal siuntų aktyvumą ir verslo riziką, laikykitės užklausų dažnio limitų ir pridėkite atsitiktinį poslinkį, kad visos užduotys neprasidėtų vienu metu. Pakartotinoms klaidoms naudokite ribotą eksponentinį atsitraukimą ir laikykitės taikomų serverio nurodymų. Nekartokite nuolatinių kredencialų ar tikrinimo klaidų, kol jų neištaisėte.

Praktinė hibridinė sistema įprastiems atnaujinimams naudoja žiniatinklio kabliukus, o įtariamiems trūkiams – tikslinius API skaitymus. Atskirai stebėkite gavimo nesėkmes, eilės amžių, apdorojimo nesėkmes, dublikatų rodiklį ir derinimo neatitikimus. Kai laiko žymos patikimos, atskirkite šaltinio duomenų delsą nuo žiniatinklio kabliuko pristatymo delsos ir vidinio apdorojimo delsos.

DUK

Ar sekimo žiniatinklio kabliukai veikia realiuoju laiku?

Jie gali sumažinti delsą, kurią sukelia laukimas iki kito apklausos ciklo. Jie negarantuoja momentinių vežėjo nuskaitymų ar tiesioginių šaltinio atnaujinimų. Visapusiškas duomenų naujumas apima vežėjo ataskaitas, teikėjo apdorojimą, užklausos pristatymą ir jūsų programą.

Ar įjungęs žiniatinklio kabliukus galiu visiškai sustabdyti apklausą?

Galbūt, jei teikėjo atkūrimo funkcijos ir jūsų verslo reikalavimai tai leidžia. Veiklos požiūriu svarbiems siuntų įrašams išsaugokite derinimo metodą. Tai gali būti tikslinė, o ne nuolatinė kiekvienos siuntos apklausa.

Kas nutinka, jei mano žiniatinklio kabliuko galinis taškas neprisijungęs?

Atkūrimas priklauso nuo dokumentuotos siuntėjo pakartotinių bandymų politikos. Nemanykite, kad bandymai tęsis neribotą laiką. Atkūrę galinį tašką patikrinkite nepavykusius pristatymus, naudokite palaikomus pakartotinio pristatymo įrankius ir, jei įmanoma, suderinkite paveiktas siuntas per API.

Ar kiekvienas žiniatinklio kabliukas turėtų suaktyvinti kliento pranešimą?

Ne. Įvykis gali būti dublikatas, istorinis kontrolinis taškas arba atnaujinimas, kuris nekeičia klientui rodomos būsenos. Pranešimus suaktyvinkite pagal dublikatų neturinčius verslo perėjimus, numatydami išimčių ir pataisymų taisykles.

Ar sėkmingas HTTP atsakymas reiškia, kad siuntos atnaujinimas užbaigtas?

Nebūtinai. Asinchroniniame modelyje tai reiškia, kad imtuvas priėmė įvykį pagal sutartas sąlygas. Atskirai stebėkite apdorojimo užbaigimą ir tolesnių pranešimų rezultatus, kad priimta užklausa negalėtų paslėpti nepavykusio proceso.

Šaltiniai

Loading