ශ්‍රී ලංකාවේ නවතම තාක්ෂණික පුවත් 2026-07-28, Tuesday
💻 ක්‍රමලේඛනය · 🕒 කියවීමට විනාඩි 2 · 👁 1

ක්‍රොස්-බෝඩර් ඇනවුම් පාලන යන්ත්‍රය: Idempotency සහ Callback ගැටළු ජයග්‍රහණය

ක්‍රොස්-බෝඩර් ඇනවුම් පාලන යන්ත්‍රය: Idempotency සහ Callback ගැටළු ජයග්‍රහණය

ජපන්, කොරියා සහ යුරෝපියන් වෙතින් ඇනවුම් ලැබෙන අපගේ ක්‍රොස්‑බෝඩර් මිලදී ගැනීමේ වේදිකාව, ගෙවීම්, සපයන්නා සහ රැගෙන යාම යන බාහිර පද්ධති තුනක් අතර සම්බන්ධතා නිසා සෑම අවස්ථාවකම තාක්ෂණික ගැටළු මතු වෙයි.

උදාහරණයක් ලෙස, ගෙවීම් ගේට්වේ එකම “paid” webhook එක තිණි තිණි ත්‍රිත්වයක් ලෙස යැවූ විට, ලොජිස්ටික්ස් API “shipped” කියා පූර්ව වාර්තාවක් එවයි, එමෙන්ම ගබඩා පද්ධතිය ඇනවුම සකස් කරන අතරම ගෙවීම් තහවුරු නොවූ තත්වයකින් ක්‍රියාත්මක වෙයි. මෙවැනි අවස්ථා වලදී “status” කාලම්පනයක් හා සරල CASE ප්‍රකාශනවලින් ප්‍රතිකාරය කළ නොහැක.

අපේ මුල් අවශ්‍යතාව වූයේ, සම්පූර්ණයෙන්ම නියමිත, අනුක්‍රමික පරිවර්තන සහ ආරක්ෂිත retry ක්‍රමයක්. ගෙවීම් තහවුරු කිරීම ඇනවුම සබ්මිට් කරා පසු පමණක් සිදුවිය යුතුය, රැගෙන යාම තොරතුරු ඇනවුම dispatch කරා පසු පමණක් ලැබිය යුතුය. අනික් පද්ධතියකින් “shipped” callback එක “payment_confirmed” එකට පෙර එන්නේ නම්, එය buffer කර, පද්ධතියේ අස්ථාවරතාවක් හෝ “zombie order” එකක් නොපැමිණේ.

අපි ත්‍රි-පැතිකඩක් (status column, FSM, event sourcing) සමඟ පරීක්ෂා කළා. status column ඉතා සරලයි, නමුත් රේස් කොන්ඩිෂන් සහ debug කිරීම අමාරුයි. Event sourcing සම්පුර්ණ audit trail එකක් දෙයි, නමුත් ලේඛන ගොඩනැගීමේ පරිමාණය අපගේ දෛනික අඛණ්ඩ ඇනවුම් ගණන (දහස් ගණන) සඳහා අතිශය අධිකයි. එම නිසා, අපි FSM (Finite State Machine) තෝරා ගත්තෙමු.

පළමු වරට, අපි සම්පූර්ණයෙන්ම කේතයේදී strict FSM එකක් ක්‍රියාත්මක කරලා, optimistic locking භාවිතා කළා. එහෙත්, PayPal, Stripe, 1688 API, EMS වැනි බාහිර පද්ධතිවල callback එකක් මිලිසෙකන්ඩ් කාලයක් තුළ වෙනත් worker එකකට පැමිණීමෙන්, දෙකම state validation පසුබැසීමක් සමඟ commit වීමේදී එකක් අසාර්ථක වුණා. එම ගැටළුව විසඳීමට, අපි idempotency keys භාවිතා කර, Redis distributed lock එකක් order ID මත පදනම් කරගත්තා. එක් callback එකක් පළමුව ලැබුනොත්, එය state transition log වගුවට සුරකිලා, order state එක Redis lock මගින් යාවත්කාලීන කරනවා. දෙවන callback එක එකම transition එකක් උත්සාහ කළා නම්, එය “rejected” ලෙස ලොග් එකේ සටහන් කර, අවශ්‍ය නම් පසුකාලීනව replay කළ හැක.

ශ්‍රී ලංකාවට ඇති වැදගත්කම

  • දේශීය e‑commerce සංවර්ධකයින්ට order state management සම්බන්ධව ඉතා විශ්වාසදායක ආකෘතියක් ලබා ගත හැක.
  • අධික retry සහ duplicate webhook ගැටළු වලින් ආරක්ෂා වන නිසා, පාරිභෝගික අත්දැකීම වැඩි වේ.
  • Redis lock සහ transition log ආකාරය, ශ්‍රමික සම්පත් සීමිත ව්‍යාපාරවලටත් scalable විසඳුමක් වේ.
  • අපගේ කේත උදාහරණ (PHP) සිංහල සංවර්ධකයන්ට local language documentation සමඟ ඉගෙන ගැනීමට පහසු වේ.

අවසන් වශයෙන්, සරල status column එකෙන් පසු, FSM සහ Redis lock එකේ සමීප ඒකාබද්ධතාවය, cross‑border ඇනවුම් පද්ධතියේ reliability, auditability සහ scalability වර්ධනය කරයි. මෙය තාක්ෂණික සංකීර්ණතා හඳුනාගැනීමට, ඉදිරිපත් කිරීමට සහ ව්‍යාපාරික වර්ධනයේ අභියෝග ජය ගැනීමට මූලික පියවරක් වේ.

💡 ඔබේ ව්‍යාපාරයට අනාගතයේ ස්ථාවර ඇනවුම් පාලනයක් ගොඩනඟන්න!
මූලාශ්‍රය මෙම ලිපිය AI මගින් රචිත මුල් සාරාංශයකි. සම්පූර්ණ වාර්තාව කියවන්න:
Dev.to ↗
#StateMachine #Idempotency #Ecommerce #SriLankaTech #DevOps