[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-10173":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":25,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":35,"readmeContent":36,"aiSummary":37,"trendingCount":16,"starSnapshotCount":16,"syncStatus":38,"lastSyncTime":39,"discoverSource":40},10173,"bullmq","taskforcesh\u002Fbullmq","taskforcesh","BullMQ - Message Queue and Batch processing for NodeJS, Python, Elixir and PHP based on Redis","https:\u002F\u002Fbullmq.io",null,"TypeScript",8985,632,37,271,0,6,20,156,24,39.4,"MIT License",false,"master",true,[27,28,29,30,31,32,33,34],"background-jobs","elixir","nodejs","php","python","queue","redis","typescript","2026-06-12 02:02:18","\u003Cdiv align=\"center\">\n  \u003Cbr\u002F>\n  \u003Cimg src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F95200\u002F143832033-32e868df-f3b0-4251-97fb-c64809a43d36.png\" width=\"800\" \u002F>\n  \u003Cbr\u002F>\n  \u003Cbr\u002F>\n  \u003Cp>\n    The fastest, most reliable, Redis-based distributed queue for Node. \u003Cbr\u002F>\n    Carefully written for rock solid stability and atomicity.\n  \u003C\u002Fp>\n  Read the \u003Ca href=\"https:\u002F\u002Fdocs.bullmq.io\">documentation\u003C\u002Fa>\n  \u003Cbr\u002F>\n  \u003Cbr\u002F>\n  \u003Cp>\n    \u003Ca href=\"https:\u002F\u002Fjoin.slack.com\u002Ft\u002Fbullmq\u002Fshared_invite\u002Fzt-1nbtpk6mv-TItWpF9jf3k4yrCaS0PPZA\">\n      \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSlack-4A154B\"\u002F>\n    \u003C\u002Fa>    \n    \u003Ca href=\"https:\u002F\u002Fbadge.fury.io\u002Fjs\u002Fbullmq\">\n      \u003Cimg src=\"https:\u002F\u002Fbadge.fury.io\u002Fjs\u002Fbullmq.svg\"\u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fcoveralls.io\u002Fgithub\u002Ftaskforcesh\u002Fbullmq?branch=master\">\n      \u003Cimg src=\"https:\u002F\u002Fcoveralls.io\u002Frepos\u002Fgithub\u002Ftaskforcesh\u002Fbullmq\u002Fbadge.svg?branch=master\"\u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsemantic-release\u002Fsemantic-release\">\n      \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F%20%20%F0%9F%93%A6%F0%9F%9A%80-semantic--release-e10079.svg\"\u002F>\n    \u003C\u002Fa>\n    \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsponsors\u002Ftaskforcesh\">\n      \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fsponsor-30363D?style=flat&logo=GitHub-Sponsors&logoColor=EA4AAA\"\u002F>\n    \u003C\u002Fa>\n  \u003C\u002Fp>\n  \u003Cp>\n    \u003Cem>\u003Ca href=\"https:\u002F\u002Fx.com\u002Fbullmqhq\">Follow Us\u003C\u002Fa> for *important* Bull\u002FBullMQ\u002FBullMQ-Pro news and updates!\u003C\u002Fem>\n  \u003C\u002Fp>\n\u003C\u002Fdiv>\n\n# 🛠 Tutorials\n\nYou can find tutorials and news in this blog: https:\u002F\u002Fblog.taskforce.sh\u002F\n\n# News 🚀\n\n## 🌐 Language agnostic BullMQ\n\nDo you need to work with BullMQ on platforms other than Node.js? If so, check out the [BullMQ Proxy](https:\u002F\u002Fgithub.com\u002Ftaskforcesh\u002Fbullmq-proxy)\n\n# Official FrontEnd\n\n[\u003Cimg src=\"https:\u002F\u002Ftaskforce.sh\u002Fassets\u002Flogo_square.png\" width=\"150\" alt=\"Taskforce.sh, Inc\" style=\"padding: 200px\"\u002F>](https:\u002F\u002Ftaskforce.sh)\n\nSupercharge your queues with a professional front end:\n\n- Get a complete overview of all your queues.\n- Inspect jobs, search, retry, or promote delayed jobs.\n- Metrics and statistics.\n- and many more features.\n\nSign up at [Taskforce.sh](https:\u002F\u002Ftaskforce.sh)\n\n# 🚀 Sponsors 🚀\n\n\u003Ctable cellspacing=\"0\" cellpadding=\"0\" border=\"0\">\n  \u003Ctr>\n    \u003Ctd>\n      \u003Ca href=\"https:\u002F\u002Fwww.dragonflydb.io\u002F\">\n        \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Fdragonflydb\u002Fdragonfly\u002Fmain\u002F.github\u002Fimages\u002Flogo-full.svg\" width=550 alt=\"Dragonfly\" \u002F>\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd>\n      Dragonfly is a new Redis™ drop-in replacement that is fully compatible with BullMQ and brings some important advantages over Redis™ such as massive\n      better performance by utilizing all CPU cores available and faster and more memory efficient data structures. Read more \u003Ca href=\"https:\u002F\u002Fwww.dragonflydb.io\u002Fdocs\u002Fintegrations\u002Fbullmq\">here\u003C\u002Fa> on how to use it with BullMQ.\n    \u003C\u002Ftd>\n  \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n# Used by\n\nSome notable organizations using BullMQ:\n\n\u003Ctable cellspacing=\"0\" cellpadding=\"0\">\n  \u003Ctr>\n    \u003Ctd valign=\"center\">\n       \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Flage\">\n        \u003Cimg\n          src=\"https:\u002F\u002Ffiles.gitbook.com\u002Fv0\u002Fb\u002Fgitbook-x-prod.appspot.com\u002Fo\u002Fspaces%2F-LUuDmt_xXMfG66Rn1GA%2Fuploads%2FUvwInTAmk7hxAViDwJzU%2Fclipart1565701.png?alt=media\"\n          width=\"150\"\n          alt=\"Microsoft\"\n        \u002F>\n       \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd valign=\"center\">\n       \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fvendure-ecommerce\u002Fvendure\">\n        \u003Cimg\n          src=\"https:\u002F\u002Ffiles.gitbook.com\u002Fv0\u002Fb\u002Fgitbook-x-prod.appspot.com\u002Fo\u002Fspaces%2F-LUuDmt_xXMfG66Rn1GA%2Fuploads%2FvT30DUqsi61gL8edn3R2%2Fwordmark-logo.png?alt=media\"\n          width=\"150\"\n          alt=\"Vendure\"\n        \u002F>\n       \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd valign=\"center\">\n       \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fdatawrapper\u002Fdatawrapper\">\n        \u003Cimg\n          src=\"https:\u002F\u002Ffiles.gitbook.com\u002Fv0\u002Fb\u002Fgitbook-x-prod.appspot.com\u002Fo\u002Fspaces%2F-LUuDmt_xXMfG66Rn1GA%2Fuploads%2FCJ5XmotpBBsuSgD8CilC%2Fdatawrapper-logo.png?alt=media\"\n          width=\"150\"\n          alt=\"Datawrapper\"\n        \u002F>\n       \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd valign=\"center\">\n      \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fnestjs\u002Fbull\u002Ftree\u002Fmaster\u002Fpackages\u002Fbullmq\">\n        \u003Cimg\n          src=\"https:\u002F\u002F876297641-files.gitbook.io\u002F~\u002Ffiles\u002Fv0\u002Fb\u002Fgitbook-x-prod.appspot.com\u002Fo\u002Fspaces%2F-LUuDmt_xXMfG66Rn1GA%2Fuploads%2FfAcGye182utFUtPKdLqJ%2FScreenshot%202022-02-15%20at%2011.32.39.png?alt=media&token=29feb550-f0bc-467d-a290-f700701d7d15\"\n          width=\"150\"\n          alt=\"Nest\"\n        \u002F>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd valign=\"center\">\n      \u003Ca href=\"https:\u002F\u002Flangfuse.com\">\n        \u003Cimg\n          src=\"https:\u002F\u002Flangfuse.com\u002Flangfuse_logo.svg\"\n          width=\"150\"\n          alt=\"Langfuse\"\n        \u002F>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd valign=\"center\">\n       \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fteamcurri\">\n        \u003Cimg\n          src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F659829\u002F161662129-ae645bc4-c1e9-48ff-997e-4cee281a964a.png\"\n          width=\"150\"\n          alt=\"Curri\"\n        \u002F>\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n      \u003Ctd valign=\"center\">\n       \u003Ca href=\"https:\u002F\u002Fnovu.co\">\n        \u003Cimg\n          src=\"https:\u002F\u002Fassets.super.so\u002F1e9f5a51-c4c6-4fca-b6e8-25fa0186f139\u002Fimages\u002F0f550019-16db-4a65-90d1-1bdb7d3c5f20\u002Fnovu-logo-gradient-light-background2x.png\"\n          width=\"150\"\n          alt=\"Novu\"\n        \u002F>\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003C\u002Ftd>\n      \u003Ctd valign=\"center\">\n       \u003Ca href=\"https:\u002F\u002Fwww.nocodb.com\">\n        \u003Cimg\n          src=\"https:\u002F\u002Fgithub.com\u002Fnocodb\u002Fnocodb\u002Fraw\u002Fdevelop\u002Fpackages\u002Fnc-gui\u002Fassets\u002Fimg\u002Ficons\u002F512x512.png\"\n          width=\"50\"\n          alt=\"NoCodeDB\"\n        \u002F>\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003C\u002Ftd>\n      \u003Ctd valign=\"center\">\n       \u003Ca href=\"https:\u002F\u002Finfisical.com\u002F\">\n         \u003Cpicture>\n          \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fmintlify.s3-us-west-1.amazonaws.com\u002Finfisical\u002Flogo\u002Fdark.svg\">\n          \u003Cimg\n          src=\"https:\u002F\u002Fmintlify.s3-us-west-1.amazonaws.com\u002Finfisical\u002Flogo\u002Flight.svg\"\n          width=\"150\"\n          alt=\"Infisical\"\n        \u002F>\n          \u003C\u002Fpicture>\n      \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003C\u002Ftr>\n\u003C\u002Ftable>\n\n# The gist\n\nInstall:\n\n```\n$ yarn add bullmq\n```\n\nAdd jobs to the queue:\n\n```ts\nimport { Queue } from 'bullmq';\n\nconst queue = new Queue('Paint');\n\nqueue.add('cars', { color: 'blue' });\n```\n\nProcess the jobs in your workers:\n\n```ts\nimport { Worker } from 'bullmq';\n\nconst worker = new Worker('Paint', async job => {\n  if (job.name === 'cars') {\n    await paintCar(job.data.color);\n  }\n});\n```\n\nListen to jobs for completion:\n\n```ts\nimport { QueueEvents } from 'bullmq';\n\nconst queueEvents = new QueueEvents('Paint');\n\nqueueEvents.on('completed', ({ jobId }) => {\n  console.log('done painting');\n});\n\nqueueEvents.on(\n  'failed',\n  ({ jobId, failedReason }: { jobId: string; failedReason: string }) => {\n    console.error('error painting', failedReason);\n  },\n);\n```\n\nAdds jobs with parent-child relationship:\n\n```ts\nimport { FlowProducer } from 'bullmq';\n\nconst flow = new FlowProducer();\n\nconst originalTree = await flow.add({\n  name: 'root-job',\n  queueName: 'topQueueName',\n  data: {},\n  children: [\n    {\n      name: 'child-job',\n      data: { idx: 0, foo: 'bar' },\n      queueName: 'childrenQueueName',\n      children: [\n        {\n          name: 'grandchild-job',\n          data: { idx: 1, foo: 'bah' },\n          queueName: 'grandChildrenQueueName',\n        },\n        {\n          name: 'grandchild-job',\n          data: { idx: 2, foo: 'baz' },\n          queueName: 'grandChildrenQueueName',\n        },\n      ],\n    },\n    {\n      name: 'child-job',\n      data: { idx: 3, foo: 'foo' },\n      queueName: 'childrenQueueName',\n    },\n  ],\n});\n```\n\nThis is just scratching the surface, check all the features and more in the official \u003Ca href=\"https:\u002F\u002Fdocs.bullmq.io\">documentation\u003C\u002Fa>\n\n# Feature Comparison\n\nSince there are a few job queue solutions, here is a table comparing them:\n\n| Feature                    | [BullMQ-Pro](https:\u002F\u002Fbullmq.io\u002F#bullmq-pro) | [BullMQ](https:\u002F\u002Fbullmq.io) |      Bull       |  Kue  | Bee      | Agenda |\n| :------------------------- | :-----------------------------------------: | :-------------------------: | :-------------: | :---: | -------- | ------ |\n| Backend                    |                    redis                    |            redis            |      redis      | redis | redis    | mongo  |\n| Observables                |                      ✓                      |                             |                 |       |          |        |\n| Group Rate Limit           |                      ✓                      |                             |                 |       |          |        |\n| Group Support              |                      ✓                      |                             |                 |       |          |        |\n| Batches Support            |                      ✓                      |                             |                 |       |          |        |\n| Parent\u002FChild Dependencies  |                      ✓                      |              ✓              |                 |       |          |        |\n| Deduplication (Debouncing) |                      ✓                      |              ✓              |        ✓        |       |          |        |\n| Deduplication (Throttling) |                      ✓                      |              ✓              |        ✓        |       |          |        |\n| Priorities                 |                      ✓                      |              ✓              |        ✓        |   ✓   |          | ✓      |\n| Concurrency                |                      ✓                      |              ✓              |        ✓        |   ✓   | ✓        | ✓      |\n| Delayed jobs               |                      ✓                      |              ✓              |        ✓        |   ✓   |          | ✓      |\n| Global events              |                      ✓                      |              ✓              |        ✓        |   ✓   |          |        |\n| Rate Limiter               |                      ✓                      |              ✓              |        ✓        |       |          |        |\n| Pause\u002FResume               |                      ✓                      |              ✓              |        ✓        |   ✓   |          |        |\n| Sandboxed worker           |                      ✓                      |              ✓              |        ✓        |       |          |        |\n| Repeatable jobs            |                      ✓                      |              ✓              |        ✓        |       |          | ✓      |\n| Atomic ops                 |                      ✓                      |              ✓              |        ✓        |       | ✓        |        |\n| Persistence                |                      ✓                      |              ✓              |        ✓        |   ✓   | ✓        | ✓      |\n| UI                         |                      ✓                      |              ✓              |        ✓        |   ✓   |          | ✓      |\n| Optimized for              |               Jobs \u002F Messages               |       Jobs \u002F Messages       | Jobs \u002F Messages | Jobs  | Messages | Jobs   |\n\n## Contributing\n\nFork the repo, make some changes, submit a pull-request! Here is the [contributing](https:\u002F\u002Fgithub.com\u002Ftaskforcesh\u002Fbullmq\u002Fblob\u002Fmaster\u002Fcontributing.md) doc that has more details.\n\n# Thanks\n\nThanks for all the contributors that made this library possible,\nalso a special mention to Leon van Kammen that kindly donated\nhis npm bullmq repo.\n","BullMQ 是一个基于 Redis 的分布式消息队列和批处理系统，支持 NodeJS、Python、Elixir 和 PHP。它以高性能和高可靠性著称，特别注重稳定性和原子性操作。核心功能包括灵活的任务调度、优先级队列、延迟任务处理及全面的监控与管理工具。项目采用 TypeScript 编写，并通过了广泛的测试覆盖。BullMQ 适用于需要在不同语言环境中进行异步任务处理、工作流管理和数据处理的应用场景，如微服务架构下的后台作业调度、批量数据处理等。此外，官方还提供了前端界面，帮助用户更直观地管理和监控队列状态。",2,"2026-06-11 03:27:00","top_topic"]