首页 > 编程语言 >nodejs bull 实现延时队列

nodejs bull 实现延时队列

时间:2024-12-15 19:22:00浏览次数:4  
标签:const nodejs require queue 延时 bull logger log4js

nodejs bull 实现延时队列

 

bull.js

复制代码
const Queue = require('bull');
const queue = new Queue('nike', {
  redis: {
    port: 6379,
    host: '127.0.0.1',
    db: 3,
    password: null
  },
  prefix: 'nike_',
  defaultJobOptions: {
    attempts: 1,
    removeOnComplete: true,
    backoff: false,
    delay: 0
  },
  limiter: {
    max: 200000,
    duration: 1000
  },
  settings: {
    maxStalledCount: 1,
    guardInterval: 1, // 重新调度延迟
    retryProcessDelay: 500, // delay before processing next job in case of internal error.
  // drainDelay: 50000 // 空队列时brpoplpush的等待时间
  }
});
module.exports = queue;
复制代码

 

生产者

复制代码
const queue = require('./bull');
const random = require("random-string")
var log4js = require("log4js");
var logger = log4js.getLogger();
logger.level = "info";
queue.on('global:progress', function(jobId, progress) {
  logger.info(`Job ${jobId} is ${progress * 100}% ready!`);
});
queue.on('global:completed', jobId => {
  logger.info(`Job with id ${jobId} has been completed`);
})
const  main = async () => {
  for(let i=0;i<10;i++){
    const job = await queue.add({
      key: random(10)
    },{
      delay:5000
    });
    logger.info("生产者:",job.data,await queue.count())
  }
}
main()
复制代码

消费者

复制代码
const queue = require('./bull');
var log4js = require("log4js");
var logger = log4js.getLogger();
logger.level = "info";
const  main = async () => {
  queue.process(async (job) => {
    logger.info('消费者:',job.data);
     await new Promise(r => setTimeout(r,1000))
    return Promise.resolve();
  });
}
main()
复制代码

 

 

 

 

 

 

 文档:

https://github.com/OptimalBits/bull/tree/develop/docs

api:

https://github.com/OptimalBits/bull/blob/master/REFERENCE.md#queueprocess

标签:const,nodejs,require,queue,延时,bull,logger,log4js
From: https://www.cnblogs.com/sexintercourse/p/18608348

相关文章

  • nodejs基于Vue.js的学生宿舍管理系统 bs36q
    文章目录项目源码技术介绍具体实现截图开发工具和技术简介课题重点难点:课题重点难点:实施方案:选题特色nodejs类核心代码部分展示系统测试演示视频/源码获取/联系我项目源码技术介绍前端:vue.js+ElementUi数据库:mysql数据库工具:Navicat/SQLyog都可以开发运行软件:VS......
  • 任务延时队列
    目录现有问题延时队列设计设计实现现有问题每次时钟节拍都需要扫描所有任务,比较耗时不易支持多个任务具有相同优先级延时队列设计将所有需要延时的任务单独放置在一个队列中,每次发生系统节拍时,只需扫描该队列。方式一:独立保存延时时间插入延时任务比较简单,快......
  • 定时/延时任务-Kafka时间轮源码分析
    文章目录1.概要2.TimingWheel2.1核心参数2.2添加任务2.3推进时间3.TimerTaskList3.1添加节点3.2删除节点3.3刷新链表3.4队列相关4.时间轮链表节点-TimerTaskEntry5.TimerTask6.Timer和SystemTimer-设计降级逻辑7.上层调用8.小结1.概要时间轮的......
  • 重读《人月神话》(18)-再论《没有银弹》(“No Silver Bullet“ Refired)
    重读《人月神话》(17)-没有银弹-软件工程中的根本和次要问题《没有银弹》("NoSilverBullet")在这篇文章中,Brooks探讨了为什么在当时看来并没有一个单一的方法或技术(即所谓的“银弹”)可以解决所有软件开发中的问题,并且他预测在未来十年内也不会出现这样的方法。再论《没有银弹......
  • 跨境电商独立站怎么做 | 教你建立全球都能低延时访问的跨境电商网站
    今年开始,国家明确开始加大鼓励跨境电商行业。你选择在海外电商网站开设店铺,也可以选择建立跨境电商独立站,即自主搭建的、拥有独立域名的跨境电商网站。这种网站不依赖于任何第三方电商平台,不需要向平台交佣金,可以自主运营和管理,直接面向全球消费者进行商品或服务的销售。做......
  • ‌Bull是一个基于Redis的队列库,专为Node.js设计
    ‌Bull是一个基于Redis的队列库,专为Node.js设计,提供高性能和可靠的任务处理能力‌。它通过Redis作为后端存储,确保任务的持久性和高可用性。Bull的设计理念是简单、高效,同时具备强大的功能,能够满足各种复杂的任务调度需求‌12。Bull的主要功能‌高性能‌:Bull采用无轮询设计,极大......
  • NodeJs-Buffer
    BufferBuffer(缓冲区)是一个类似于Array的对象,用于表示固定长度的字节序列Buffer本质是一段内存空间,专门用来处理二进制数据Buffer大小固定且无法调整Buffer性能较好,可以直接对计算机内存进行操作每个元素的大小为1字节(byte)创建Buffer使用alloc//创建一个长......
  • css定义多个延时动画案例代码
    当前案例效果为:正方体从底部向上弹出并且从不透明到透明,整个过程持续两秒,动画接收后等待一秒开始无限旋转,旋转一周的时间为2秒<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1......
  • Nodejs 从入门到进阶
    9:252020/4/263年前的视频以下是Node可以实现的工作:(仅作了解)Web服务器命令行工具网络爬虫桌面应用程序开发(Electron)app嵌入式游戏交互模式(repl模式)仅作了解cmd三、Nvm的安装和初步使用从上一节我们知道,NodeJS有太多的版本了,切记,并不是新版本一出现,旧的版本就不......
  • 【Nestjs实战】Nodejs必学框架 | Nest企业级项目构建与开发实战
    【Nestjs实战】Nodejs必学框架|Nest企业级项目构建与开发实战https://www.bilibili.com/video/BV1bQ4y1A77L 1nestjs框架介绍与本视频学习指导创建nestjs工程与概念浅析f控制器(controller)集成swaggerapi文档自定义logger中间件(middleware)异常过滤器(exceptionfilter)参......