awesome-repositories.com
博客
awesome-repositories.com

通过 AI 驱动的搜索,发现最优秀的开源仓库。

探索精选搜索开源替代品自托管软件博客网站地图
项目关于排名机制媒体报道MCP 服务器
法律隐私政策服务条款
© 2026 Bringes Technology SRL·VAT RO45896025·hello@awesome-repositories.com
·
riverqueue avatar

riverqueue/river

0
View on GitHub↗
5,252 星标·160 分支·Go·MPL-2.0·6 次浏览riverqueue.com↗

River

River 是一个用于 Go 语言的事务性作业队列和分布式作业调度器,使用 PostgreSQL 进行持久化和状态管理。它作为一个可恢复的任务框架,允许将长时间运行的后台工作分解为持久化的步骤,并在失败后从最后保存的检查点恢复。

该系统通过允许后台任务与主应用数据在同一数据库事务中入队和完成,确保了严格的数据一致性。其独特之处在于采用领导者选举的协调器模型,以管理跨工作节点集群的周期性和延迟任务。

该平台涵盖了广泛的功能,包括异步任务处理、带有指数退避(exponential backoff)的重试策略配置,以及通过命名队列实现的工作负载隔离。它还提供通过 Web 管理界面进行监控的工具、执行遥测,以及用于注入日志记录等横切关注点的中间件系统。

数据库模式迁移可以通过命令行界面或直接通过代码进行管理。

Features

  • Persistent Job Queue Libraries - Provides a reliable task processing library for Go that uses a relational database for durable state management.
  • Transactional Enqueueing - Links job insertion and completion to a database transaction to ensure strict atomicity with application data.
  • Database-Backed Deferred Queues - Uses a relational database to persist job states and metadata, ensuring atomicity and durability through database transactions.
  • Transactional Updates - Updates job status and metadata within the same database transaction as the primary business logic to ensure strict consistency.
  • Database Backend Integration - Connects to PostgreSQL backends using native or poll-only modes to store queue data.
  • Job State Persistence - Persists job output or metadata partway through a running function to enable resumption from checkpoints.
  • PostgreSQL Task Queues - Uses PostgreSQL as the primary engine for job persistence, transactional enqueuing, and state management.
  • Asynchronous Task Processing - Offloads heavy computations and external API calls to background workers to keep the main application responsive.
  • Step-Level Checkpoints - Persists task execution state after each step to allow long-running work to resume from the last checkpoint after failure.
  • Leadership Transfers - Orchestrates the transfer of the coordinator leader role between nodes in a cluster.
  • Resumable Workflow Definitions - Deno River breaks long-running tasks into persisted steps to skip completed work after a restart.
  • Distributed Job Schedulers - Implements a coordinator model with leader election to manage periodic and delayed tasks across a cluster.
  • Distributed Leader Election - Implements a coordinator model with leader election to manage periodic job triggering and prevent duplicate execution across a cluster.
  • Job Checkpointing - Saves the current step and cursor of a resumable job within a database transaction for recovery.
  • Job Queues - Implements a system for managing and routing asynchronous tasks into named queues for execution.
  • Distributed Job Schedulers with Web UI - Manages recurring tasks and delayed jobs across a cluster of workers with a coordinator model and web interface.
  • Transactional Job Completion - Marks jobs as finished within the same database transaction used for the primary business logic modifications.
  • Transactional Queues - Ensures background tasks are enqueued within the same database transaction as application data to maintain consistency.
  • Checkpoint-Based Resumptions - Provides a resumable task framework that tracks progress via checkpoints to resume long-running work after failures.
  • Multi-Step Job Tracking - Tracks progress of multi-step tasks and skips completed steps to resume execution after a failure.
  • Resumable Task Frameworks - Functions as a resumable task framework allowing long-running background work to be broken into persisted steps.
  • Task Progress Cursors - Deno River records a state or position within a step so a retry can resume from that point.
  • Transactional State Persistence - Deno River records the completion of a specific step within a database transaction to save progress.
  • JSON Persistence - Stores task arguments and execution results as JSON blobs to enable language-agnostic job processing and introspection.
  • Atomic Duplicate Prevention - Prevents duplicate jobs from being enqueued based on arguments or time windows using atomic checks.
  • Future-Time Executions - Defines specific future timestamps for tasks to be executed instead of immediate processing.
  • Queue Pause and Resume Controls - Allows temporarily stopping the processing of tasks within a specific queue until manually resumed.
  • Workload Isolation - Segregates tasks into named queues to control throughput and prevent low-priority jobs from blocking critical work.
  • Delayed Executions - Allows setting a future timestamp for a job to run, keeping it inactive until that moment.
  • Priority-Based Job Schedulers - Configures task parameters including retry limits, priority levels, and target queues.
  • Job Cancellation - Prevents a job from executing again by returning a specific cancellation error during processing.
  • Job Event Notifications - Provides real-time notifications when background jobs reach specific lifecycle states, such as successful completion.
  • Job Timeout Enforcements - Specifies the maximum duration a job can run before its context is automatically cancelled.
  • Recurring Job Scheduling - Manages recurring tasks and executes specific logic when a new cluster leader is elected.
  • Job Middleware - Wraps job execution in a sequence of functions to inject shared logic and telemetry across all tasks.
  • Exponential Backoff Retries - Calculates the delay before retrying a failed job using policies like exponential backoff.
  • Background Job Definitions - Allows specifying identifiers and arguments for units of work to ensure correct routing to workers.
  • Job Deferrals - Provides the ability to postpone background tasks for a set duration without incrementing failure counts.
  • Job Snoozing - Implements job snoozing to schedule retries after a specified duration without counting them as failed attempts.
  • Stuck Job Detection - Detects jobs that exceed time thresholds and triggers handlers to free worker slots.
  • Fixed Interval Schedulers - Deno River executes tasks on a fixed time interval and allows dynamic updates while running.
  • Functional Job Handlers - Registers background task handlers using simple functions instead of complex structures.
  • Worker Task Mapping - Maps specific job types to handler functions that execute the task logic upon dequeuing.
  • Handler Middlewares - Wraps job handlers in a chain of middleware functions to inject cross-cutting concerns like telemetry and logging.
  • Cross-Language Job Enqueueing - Allows tasks to be inserted into the queue from various programming languages to be processed by a Go worker.
  • Task Lifecycle Interceptions - Provides middleware hooks to modify job payloads before enqueuing or wrap execution logic for error handling.
  • Retry Policies - Defines when a failed job should be attempted again based on its properties or attempt count.
  • Job Execution Logging - Records the success, failure, and detailed output logs of background task executions for monitoring.
  • Execution Duration Tracking - Records the time a job spent waiting and its total execution duration to monitor performance.
  • Telemetry Exporters - Exports internal job statistics, logs, and performance metrics to third-party observability platforms.
  • Queue Management Interfaces - Ships a web interface to view, manage, and interact with the current state of jobs and queues.
  • Job - Processes errors and panics during execution to determine if a job should be retried.
  • Job Lifecycle Hooks - Defines custom logic callbacks that execute at specific stages of a job's lifecycle based on its type.
  • Job Queues - High-performance job processing system for Go.
  • General Purpose Orchestration - Postgres-backed workflow engine for background job processing in Go.

Star 历史

riverqueue/river 的 Star 历史图表riverqueue/river 的 Star 历史图表

AI 搜索

探索更多 awesome 仓库

用简单的语言描述您的需求 —— AI 将根据相关性为您从数千个精选开源项目中进行排序。

Start searching with AI

常见问题解答

riverqueue/river 是做什么的?

River 是一个用于 Go 语言的事务性作业队列和分布式作业调度器,使用 PostgreSQL 进行持久化和状态管理。它作为一个可恢复的任务框架,允许将长时间运行的后台工作分解为持久化的步骤,并在失败后从最后保存的检查点恢复。

riverqueue/river 的主要功能有哪些?

riverqueue/river 的主要功能包括:Persistent Job Queue Libraries, Transactional Enqueueing, Database-Backed Deferred Queues, Transactional Updates, Database Backend Integration, Job State Persistence, PostgreSQL Task Queues, Asynchronous Task Processing。

riverqueue/river 有哪些开源替代品?

riverqueue/river 的开源替代品包括: sorentwo/oban — Oban is a relational database-backed job processor and task scheduler for Elixir applications. It functions as a… inngest/inngest — Inngest is a durable execution framework and event-driven automation engine designed to orchestrate background… sidekiq/sidekiq — Sidekiq is a background job processor and queue manager for Ruby that uses Redis to manage asynchronous tasks. It… queueclassic/queue_classic — Queue Classic is a background processing framework for Ruby applications that manages asynchronous tasks by utilizing… mesos/chronos — Chronos is a distributed, fault-tolerant job scheduler designed for managing containerized workloads within a cluster.… timgit/pg-boss — pg-boss is a background task scheduler and distributed task queue that uses PostgreSQL as a reliable message broker…

River 的开源替代方案

相似的开源项目,按与 River 的功能重合度排序。
  • sorentwo/obansorentwo 的头像

    sorentwo/oban

    3,930在 GitHub 上查看↗

    Oban is a relational database-backed job processor and task scheduler for Elixir applications. It functions as a distributed workflow orchestrator that leverages database primitives to ensure job persistence, reliability, and consistent state management across clusters. The system distinguishes itself through complex workflow orchestration, enabling the composition of task dependencies using batching, sequential processing, and fan-out or fan-in patterns. It provides global throughput limiting and uniqueness enforcement to prevent duplicate work and protect downstream resources across distrib

    Elixir
    在 GitHub 上查看↗3,930
  • inngest/inngestinngest 的头像

    inngest/inngest

    5,499在 GitHub 上查看↗

    Inngest is a durable execution framework and event-driven automation engine designed to orchestrate background workflows. It enables developers to build resilient, stateful processes by memoizing function steps, ensuring that long-running tasks can automatically resume from the last successful operation after failures, timeouts, or infrastructure restarts. The platform distinguishes itself through its event-driven architecture, which uses a schema-validated bus to trigger functions and coordinate complex, multi-step logic. It employs an onion-model middleware approach for cross-cutting concer

    Go
    在 GitHub 上查看↗5,499
  • sidekiq/sidekiqsidekiq 的头像

    sidekiq/sidekiq

    13,540在 GitHub 上查看↗

    Sidekiq is a background job processor and queue manager for Ruby that uses Redis to manage asynchronous tasks. It functions as a distributed task scheduler capable of handling periodic, delayed, and recurring jobs across a cluster of worker processes. The project features a job monitoring dashboard and administrative web interface for visualizing system state, tracking worker performance, and managing failed or dead jobs. It provides a distributed rate limiter to control execution frequency across multiple processes. The framework covers a broad range of operational capabilities, including j

    Rubybackground-jobsjobsruby
    在 GitHub 上查看↗13,540
  • queueclassic/queue_classicQueueClassic 的头像

    QueueClassic/queue_classic

    1,188在 GitHub 上查看↗

    Queue Classic is a background processing framework for Ruby applications that manages asynchronous tasks by utilizing relational database tables for job persistence. By storing tasks directly within the database, the system ensures that job creation remains coupled with application transactions, guaranteeing that tasks are only queued when associated data changes are successfully committed. The framework coordinates concurrent worker processes through database-level locking mechanisms, which prevent redundant execution and allow for distributed task processing without the need for an external

    Rubyactivejobqueuequeuing
    在 GitHub 上查看↗1,188
查看 River 的所有 30 个替代方案→