首页Rustrussellromney/honker
russellromney

honker

Database🌱 NEW PROJECT BOOST#SQLite#PubSub#Task Queue#Rust#Backend
前往 GitHub →
22

// 项目简介

Honker 是一个 SQLite 扩展和语言绑定,它在数据库内部直接提供了 Postgres 风格的 NOTIFY/LISTEN 语义、持久化发布/订阅以及任务队列功能。它允许业务写入和队列操作在同一个事务中原子性地提交,从而消除了对 Redis 等外部代理的需求。该系统通过监控 SQLite 的数据版本而非依赖传统的客户端轮询,实现了个位数毫秒级的响应速度。

// 技术分析

Honker 是一个 SQLite 扩展和多语言库,它直接在 SQLite 数据库文件中实现了 Postgres 风格的 NOTIFY/LISTEN 语义、持久化发布/订阅以及任务队列。通过利用单调递增的 PRAGMA data_version 计数器进行跨进程通信,它消除了对 Redis 或 Celery 等外部代理的需求,从而允许业务逻辑和队列操作在单个事务中原子性地提交。这种设计优先考虑数据完整性和操作简便性,以“过度触发”(即订阅者在每次数据库提交时都会被唤醒)的开销为代价,实现了亚毫秒级的响应时间,而无需复杂的轮询。

// 核心亮点

01
提供原子事务耦合,确保业务写入和队列操作能够同时提交或回滚。
02
通过监控 PRAGMA data_version 而非使用昂贵的轮询,实现了个位数毫秒级的跨进程通知延迟。
03
包含一个强大的工作队列系统,支持优先级、延迟任务、指数退避重试以及死信表。
04
支持具有每个消费者偏移量的持久化事件流,允许可靠的消息重放和发布/订阅功能。
05
作为可加载的 SQLite 扩展运行,能够与任何 SQLite 客户端或 ORM(包括 SQLAlchemy、Django 和 Drizzle)无缝集成。
06
提供广泛的语言支持,具有适用于 Python、Node.js、Rust、Go、Ruby、Bun 和 Elixir 的原生绑定。

// 典型使用场景

01
在业务逻辑事务中进行原子化的任务入队操作
02
具备每个消费者偏移量跟踪功能的持久化发布/订阅流
03
跨进程通知以及周期性的 crontab 风格任务调度

// 快速开始

首先,为您的语言安装 honker 包(例如 'pip install honker'),并使用该库提供的 open 方法打开您的 SQLite 数据库文件。然后,您可以定义队列或流,并使用库的事务上下文来与数据库写入操作原子性地入队任务或发布事件。对于工作进程,请使用 claim 迭代器或提供的 CLI worker 命令来处理提交到数据库的任务。