Skip to main content

Що означає «idempotency» у контексті подій?

Idempotency (ідемпотентність) у контексті подій означає, що обробка однієї й тієї самої події кілька разів дає однаковий результат, без повторних побічних ефектів.

Навіщо це потрібно

У подієвих системах те саме повідомлення може бути доставлене повторно, наприклад через мережевий збій, тайм-аут чи повторну публікацію брокером. Якщо споживач не ідемпотентний, дубльована подія може:

  • двічі створити замовлення,
  • двічі списати гроші,
  • двічі надіслати сповіщення.

Як досягається

  1. Унікальний ідентифікатор події (event_id). Перед обробкою перевіряється, чи не оброблялася вона раніше.
  2. Зберігання історії оброблених подій (таблиця «processed_events»).
  3. Перевірка стану перед дією, наприклад «якщо замовлення вже оплачене, не повторювати».
  4. Ідемпотентні операції в базі: INSERT ... ON CONFLICT DO NOTHING, UPSERT, SET замість ADD.

Приклад

Подія PaymentReceived приходить двічі. Сервіс перевіряє payment_id у таблиці: якщо вже оброблено, просто ігнорує дублікат.

Підсумок:

Idempotency захищає подієву архітектуру від дубльованих повідомлень. Вона гарантує, що навіть за повторної доставки результат залишиться коректним, а система - узгодженою.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.