중복과 reconnect

같은 IdempotencyKey는 같은 source EventId로 변환한다 · reconnect는 owner state가 아닌 session만 다시 binding한다

중복과 reconnect 같은 IdempotencyKey는 같은 source EventId로 변환한다 · reconnect는 owner state가 아닌 session만 다시 binding한다 STREAM reconnect JoinSessionReq(player-1) JoinSessionRes(active quests) GetQuestProgressReq GetQuestProgressReq(player-1) GetQuestProgressRes GetQuestProgressRes KillMonsterReq(same key) GameplayMsg(same eventId) existing result without duplicate event existing result Game Client · Sequence participant Game Client GameApi · Sequence participant GameApi PlayerQuestSpot · Sequence participant PlayerQuestSpot

dedupe와 reconnect

  • • 같은 IdempotencyKey는 같은 source EventId로 변환한다. PlayerQuestSpot은 이미 저장된 sourceEventId를 확인하고 domain event를 다시 append하지 않는다.
  • • reconnect에서는 같은 PlayerId session actor를 binding하고 GetQuestProgressReq로 projection을 확인한다.

binding 없는 동안의 notify

  • • session binding이 없는 동안의 notify는 성공 조건이 아니다 — 상태는 event store에 기록되고 reconnect 뒤 조회로 복원된다.