Asyq是一个Go库,用于排队任务并通过worker异步处理它们。它由Redis提供支持,旨在实现可扩展且易于上手。
Asyq工作原理的高级概述:客户端将任务放入队列服务器从队列中拉取任务并为每个任务启动一个工作协程任务由多个worker同时处理任务队列用作跨多台机器分配工作的机制。一个系统可以由多个工作服务器和代理组成,让位于高可用性和水平扩展。示例用例特性
保证至少执行一次任务任务调度失败任务的重试工作人员崩溃时自动恢复任务加权优先级队列严格的优先队列添加任务的延迟低,因为Redis中的写入速度很快使用唯一选项对任务进行重复数据删除允许每个任务超时和截止日期允许聚合任务组以批处理多个连续操作支持中间件的灵活处理程序接口能够暂停队列以停止处理队列中的任务定期任务支持RedisCluster实现自动分片和高可用支持RedisSetiels以实现高可用性与Prometheus集成以收集和可视化队列指标用于检查和远程控制队列和任务的WebUICLI检查和远程控制队列和任务稳定性和兼容性
状态:该库目前正在进行大量的开发工作,频繁的、破坏性的API变化。
重要提示:目前的主要版本是零(v0.x.x),以适应快速开发和快速迭代,同时获得用户的早期反馈(感谢对API的反馈!)。在v1.0.0版本发布之前,如果没有主要版本的更新,public API可能会发生变化。
评论