함수: queueStrategy()
function queueStrategy(options?): QueueStrategy;
정의 위치: packages/db/src/strategies/queueStrategy.ts:52
적절한 직렬화를 통해 모든 뮤테이션을 순서대로 처리하는 큐 전략을 생성합니다.
실행을 삭제할 수 있는 다른 전략과 달리 queue는 모든 뮤테이션을 순차적으로 시도합니다. 각 트랜잭션 커밋이 완료된 후 다음 트랜잭션이 시작됩니다. 데이터 일관성이 중요하고 모든 작업을 순서대로 시도해야 할 때 유용합니다.
오류 처리 동작:
- 뮤테이션이 실패해도 자동으로 재시도되지 않습니다 - 트랜잭션이 "failed" 상태로 전환됩니다
- 실패한 뮤테이션은
transaction.isPersisted.promise을 통해 오류를 표시합니다(거부됨) - 후속 뮤테이션은 계속 처리됩니다 - 한 번의 실패가 큐를 차단하지 않습니다
- 각 뮤테이션은 독립적이며, 전부 성공하거나 전부 실패하는 트랜잭션 의미 체계는 없습니다
매개변수
options?
큐 동작(FIFO/LIFO, 타이밍, 크기 제한)을 위한 구성입니다
반환값
큐 전략 인스턴스입니다
예제
// FIFO queue - process in order received
const mutate = usePacedMutations({
mutationFn: async ({ transaction }) => {
await api.save(transaction.mutations)
},
strategy: queueStrategy({
wait: 200,
addItemsTo: 'back',
getItemsFrom: 'front'
})
})
// LIFO queue - process most recent first
const mutate = usePacedMutations({
mutationFn: async ({ transaction }) => {
await api.save(transaction.mutations)
},
strategy: queueStrategy({
wait: 200,
addItemsTo: 'back',
getItemsFrom: 'back'
})
})