# River - Go + Postgres 용 빠르고 단단한 Job Queue

> Clean Markdown view of GeekNews topic #12078. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=12078](https://news.hada.io/topic?id=12078)
- GeekNews Markdown: [https://news.hada.io/topic/12078.md](https://news.hada.io/topic/12078.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2023-11-29T10:03:01+09:00
- Updated: 2023-11-29T10:03:01+09:00
- Original source: [brandur.org](https://brandur.org/river)
- Points: 16
- Comments: 0

## Topic Body

- 애플리케이션 데이터와 작업 대기열에 동일한 데이터베이스(Postgres)를 사용하도록 권장. 의존성 최소화   
- 다른 데이터베이스 변경과 함께 트랜잭션 방식으로 작업을 큐에 대기시킴으로써 분산 시스템 전체 클래스의 문제를 방지할 수 있음   
- Transactional enqueueing : 작업은 트랜잭션이 커밋되면 큐에 대기하고, 트랜잭션이 롤백되면 제거되며, 커밋될 때까지 작업에 표시되지 않도록 보장  
- Postgres의 NOTIFY 기능을 활용하여 작업 준비가 완료되는 즉시 작업 큐가 작업자를 깨워 작업을 시작할 수 있어, 작업 시작 전 평균 지연 시간을 밀리초 단위로 줄일 수 있음  
- Postgres의 바이너리 프로토콜을 사용하고, 데이터베이스와의 라운드 트립을 최소화하여 효율성을 높임  
  - Bulk Job Insert는 `COPY FROM`을 사용하여 효율적으로 수행

## Comments



_No public comments on this page._
