Sobes.tech
Senior
38

Транзакциялық Outbox паттерні туралы айтыңыз: бұл не және қалай жұмыс істейді?

Сұралған компаниялар
А7

AI-дан жауап

sobes.tech AI

Transactional Outbox паттерны микросервис арасындағы сенімді интеграция үшін пайдаланылады, онда оқиға тек транзакция сәтті өткен жағдайда ғана жарияланады.

Идея — бір транзакция ішінде деректерді өзгерткен кезде, арнайы кестеге хабарлама (outbox) жазылады. Транзакцияны бекіткеннен кейін, бөлек процесс осы хабарламаларды кестеден оқиды және оларды кезекке немесе хабарлама брокеріне жібереді.

Бұл "екіфазалы бекіту" мәселесін шешеді, ол дерекқор мен хабарлама жүйесі арасында атомарлық пен келісімді қамтамасыз етеді.

Мысал Go тілінде (қарапайым түрде):

// Транзакция ішінде
tx, _ := db.Begin()
// Деректерді жаңарту
_, err := tx.Exec("UPDATE orders SET status = ? WHERE id = ?", "processed", orderID)
// Оқиғаны outbox-қа жазу
_, err = tx.Exec("INSERT INTO outbox (event_type, payload) VALUES (?, ?)", "OrderProcessed", eventPayload)
// Транзакцияны бекіту
err = tx.Commit()

// Бөлек воркер outbox-тан оқиды және оқиғаларды жариялайды