Chisle
코딩 에이전트 플러그인, 20개 실시간 작업에서 기본 모델 52% 활용, 간결한 페르소나와 출력 압축 제공
Redis 또는 PostgreSQL 기반 오픈소스 메시지 큐
The open source message queue backed by Redis or PostgreSQL, trusted by thousands of companies processing billions of jobs every day. Available for Node.js, Bun, Python, .NET, Rust, Elixir and PHP.
개발 도구GitHub @taskforcesh온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
저장소 정보는 아직 수집하지 않았습니다.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
BullMQ - Message Queue and Batch processing for NodeJS, Python, .NET, Elixir, Rust and PHP based on Redis or PostgreSQL
README 전체를 불러오는 중입니다.
README 전문 보기 ↗You can find tutorials and news in this blog: https://blog.taskforce.sh/
BullMQ is available natively in multiple languages:
npm install bullmq)python/ directory (pip install bullmq)rust/ directory (cargo add bullmq-official --rename bullmq)elixir/ directory ({:bullmq, "~> x.x"})dotnet/ directory (dotnet add package BullMQ)php/ directoryFor other platforms, check out the BullMQ Proxy.
Supercharge your queues with a professional front end:
Sign up at Taskforce.sh
Some notable organizations using BullMQ:
Install:
$ yarn add bullmq
If you use the node-redis adapter (createNodeRedisClient), install redis v5 or newer (redis >= 5.0.0).
If you use the Valkey Glide adapter (createValkeyGlideClient), install @valkey/valkey-glide.
Add jobs to the queue:
import { Queue } from 'bullmq';
const queue = new Queue('Paint');
queue.add('cars', { color: 'blue' });
Process the jobs in your workers:
import { Worker } from 'bullmq';
const worker = new Worker('Paint', async job => {
if (job.name === 'cars') {
await paintCar(job.data.color);
}
});
Listen to jobs for completion:
import { QueueEvents } from 'bullmq';
const queueEvents = new QueueEvents('Paint');
queueEvents.on('completed', ({ jobId }) => {
console.log('done painting');
});
queueEvents.on(
'failed',
({ jobId, failedReason }: { jobId: string; failedReason: string }) => {
console.error('error painting', failedReason);
},
);
Adds jobs with parent-child relationship:
import { FlowProducer } from 'bullmq';
const flow = new FlowProducer();
const originalTree = await flow.add({
name: 'root-job',
queueName: 'topQueueName',
data: {},
children: [
{
name: 'child-job',
data: { idx: 0, foo: 'bar' },
queueName: 'childrenQueueName',
children: [
{
name: 'grandchild-job',
data: { idx: 1, foo: 'bah' },
queueName: 'grandChildrenQueueName',
},
{
name: 'grandchild-job',
data: { idx: 2, foo: 'baz' },
queueName: 'grandChildrenQueueName',
},
],
},
{
name: 'child-job',
data: { idx: 3, foo: 'foo' },
queueName: 'childrenQueueName',
},
],
});
This is just scratching the surface, check all the features and more in the official documentation
Since there are a few job queue solutions, here is a table comparing them:
| Feature | BullMQ-Pro | BullMQ | Bull | Kue | Bee | Agenda |
|---|---|---|---|---|---|---|
| Backend | redis | redis | redis | redis | redis | mongo |
| Observables | ✓ | |||||
| Group Rate Limit | ✓ | |||||
| Group Support | ✓ | |||||
| Batches Support | ✓ | |||||
| Parent/Child Dependencies | ✓ | ✓ | ||||
| Deduplication (Debouncing) | ✓ | ✓ | ✓ | |||
| Deduplication (Throttling) | ✓ | ✓ | ✓ | |||
| Priorities | ✓ | ✓ | ✓ | ✓ | ✓ | |
| Concurrency | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Delayed jobs | ✓ | ✓ | ✓ | ✓ |
Fork the repo, make some changes, submit a pull-request! Here is the contributing doc that has more details.
Thanks for all the contributors that made this library possible, also a special mention to Leon van Kammen that kindly donated his npm bullmq repo.
| ✓ |
| Global events | ✓ | ✓ | ✓ | ✓ |
| Rate Limiter | ✓ | ✓ | ✓ |
| Pause/Resume | ✓ | ✓ | ✓ | ✓ |
| Sandboxed worker | ✓ | ✓ | ✓ |
| Repeatable jobs | ✓ | ✓ | ✓ | ✓ |
| Atomic ops | ✓ | ✓ | ✓ | ✓ |
| Persistence | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| UI | ✓ | ✓ | ✓ | ✓ | ✓ |
| Optimized for | Jobs / Messages | Jobs / Messages | Jobs / Messages | Jobs | Messages | Jobs |