프로젝트 소개
River는 Postgres를 작업 큐로 사용하는 Go용 백그라운드 작업 처리 라이브러리입니다. 애플리케이션 데이터와 작업 큐가 동일한 데이터베이스를 공유하도록 설계되어, 다른 데이터베이스 변경과 함께 작업을 트랜잭션적으로 등록할 수 있습니다. 트랜잭션이 커밋되면 작업 등록이 보장되고, 롤백되면 제거되며, 커밋 전에는 작업이 보이지 않습니다.
작업은 구조체 쌍으로 정의됩니다: JSON 주석과 안정적인 "kind" 문자열을 가진 JobArgs 구현, 그리고 Work 함수를 노출하는 Worker 구현입니다. Worker는 시작 시 등록되어 River가 작업 종류를 worker에 매핑할 수 있게 합니다. Client는 데이터베이스 풀, 드라이버, Workers 번들 및 큐 설정을 포함하는 구성으로 생성됩니다. Client는 시작 및 중지가 가능하며, 컨텍스트 취소 또는 명시적 Stop 호출을 통해 우아하게 종료됩니다. 삽입 전용 클라이언트는 작업을 처리하지 않고 삽입만 할 수 있습니다.
기능에는 Postgres COPY FROM을 사용한 배치 작업 삽입, 작업 함수 내에서 작업 취소, 오류 및 패닉 처리, 처리량 및 격리를 위한 다중 큐, 주기적 및 cron 작업, 예약 작업, 작업 일시 중지, 텔레메트리를 위한 큐 활동 및 통계 구독, 테스트 헬퍼, 트랜잭션 작업 완료, 인수/기간/큐/상태별 고유 작업, 작업 및 큐 검사를 위한 웹 UI, 단순화된 작업 함수가 포함됩니다. River는 또한 Python 및 Ruby에서 작업 삽입을 지원하여 교차 언어 등록이 가능하며, Go worker가 이를 처리합니다.
이 프로젝트는 Oban, Que, Sidekiq, Delayed::Job, GoodJob, Hangfire와 같은 백그라운드 작업 라이브러리에서 영감을 받았습니다. 문서, godoc, River UI, 라이브 데모는 README에서 참조됩니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.