Node Js:Redis 作业在完成其任务后未完成

2024-05-08

希望你们做得很好。

我在我的 Nodejs 项目中实现了 BullMQ(Bull 的下一个主要版本)来安排发送电子邮件的作业。例如,发送忘记密码请求的电子邮件。所以,我编写了如下所示的代码。

用户服务:

await resetPasswordJob({email: '[email protected] /cdn-cgi/l/email-protection'});       // from service I'm calling a job

重置密码工作:

const {Queue} = require('bullmq');
const IOredis = require('ioredis');

const connection = new IOredis(process.env.REDIS_PORT || 6379);
const resetPasswordResolver = require('../resolvers/resetPasswordResolver');

const resetPasswordJob = async (payload) => {
  const queue = new Queue('default', {connection});        // 'default' is queue name

  // Added below line, because I was getting this issue sometime
  // "MaxListenersExceededWarning: Possible EventEmitter memory leak detected."
  queue.setMaxListeners(queue.getMaxListeners() + 1); 
      
  await queue.add('resetPassword', payload, {
    removeOnFail: true,
    removeOnComplete: true,
  });               // 'resetPassword' is job name

  const worker = new Worker('default', async (job) => 
     await resetPasswordResolver(job.data)
  );
  worker.on('completed', (job) => {
    console.log(`Worker Mesg: ${job.id} has completed.`);
    done();
  });
  worker.on('failed', (job, err) => {
    console.log(
      `Worker Mesg: ${job.id} has failed with ${err.message}!`
    );
    done();
  });
};

module.exports = resetPasswordJob;

重置密码解析器:

const sendMail = require('../../utils/sendMail');

const resetPasswordMailResolver = async (payload) => {
  const body = `<html>Some html email template here</html>`;
  await sendMail({to: payload.email, subject: 'Reset your account password', body: body});

  return {};
};

module.exports = resetPasswordMailResolver;

但问题是,如果我执行一次并尝试执行其他作业,那么此时该作业只是执行,而不是最新的作业。并在控制台中收到错误消息:

Worker Mesg: 7 has completed.
Error: Missing lock for job 7 failed
    at Function.finishedErrors (/home/admini/Documents/node-project/node_modules/bullmq/dist/classes/scripts.js:135:24)
    at Job.moveToFailed (/home/admini/Documents/node-project/node_modules/bullmq/dist/classes/job.js:197:41)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
    at async handleFailed (/home/admini/Documents/node-project/node_modules/bullmq/dist/classes/worker.js:207:17)
    at async Worker.run (/home/admini/Documents/node-project/node_modules/bullmq/dist/classes/worker.js:90:33)

我无法找到该错误的任何具体解决方案。请帮帮我。

感谢你们!


你的问题可能是由几件事造成的。

首先,您有一项需要 30 秒以上才能完成的工作。

其次,您将worker.on函数设置为侦听事件,并在完成或进度中执行一些导致错误的操作。

第三,在redis连接中设置keyPrefix。只需将其删除即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Node Js:Redis 作业在完成其任务后未完成 的相关文章

  • 洪水填充优化:尝试使用队列

    我正在尝试创建一种填充方法 该方法采用用户指定的初始坐标 检查字符 然后根据需要更改它 这样做之后 它会检查相邻的方块并重复该过程 经过一番研究 我遇到了洪水填充算法并尝试了该算法 它可以工作 但无法满足我对 250 x 250 个字符的数
  • 有队列实现吗?

    任何人都可以建议使用 Go 容器来实现简单快速的 FIF 队列 Go 有 3 种不同的容器 heap list and vector 哪一种更适合实现队列 事实上 如果您想要的是一个基本且易于使用的 fifo 队列 slice 可以满足您所
  • Nodemailer - 在本地工作但不在生产环境中工作

    https gist github com anonymous ba82f74071cc38a0700b https gist github com anonymous ba82f74071cc38a0700b 在更改某些设置之前 例如主机
  • 从 websocket 发送数据到 socket.io

    我使用 websocket 接口连接到 websocket 服务器 如果我想将通过 websocket 接口从 websocket 服务器接收到的数据发送到通过 http 服务器连接到我的客户端 我应该使用 socket io 吗 所以最后
  • Express中间件修改请求

    我目前有一个正在运行的服务器 前端使用nodejs mongo express 和 W2UI W2ui 请求来自包含所有参数的记录数组 记录 名称 foo 我想编写一个中间件 在请求到达路由之前对其进行编辑和更改 您可以创建自己的中间件来处
  • 渲染ejs模板

    我在nodejs中有以下代码 我读取temp ejs文件并获取ejsHtml作为字符串的内容 var html EJS render ejsHtml A div smth div 在 temp ejs 中 Output
  • Browserify - 如何在浏览器中调用通过 browserify 生成的文件中捆绑的函数

    我是 Nodejs 和 browserify 的新手 我从这个开始link http browserify org 我有文件 main js 其中包含此代码 var unique require uniq var data 1 2 2 3
  • Azure消息队列中的消息将直接进入Poison消息队列

    希望这可以节省某人一些时间 当移动到较新的版本时 下面的代码停止工作QueueClient https learn microsoft com en us dotnet api azure storage queues queueclien
  • axios 请求中未发送正文数据

    我试图通过 axios 请求将数据发送到我的后端脚本 但正文看起来是空的 这是前端发送的请求 axios request method GET url http localhost 4444 next api headers Authori
  • 下载 csv 文件 node.js

    我正在使用 node js 构建一个应用程序并尝试将数据下载为 csv 文件 我正在使用 json2csv https www npmjs com package json2csv https www npmjs com package j
  • 纤维/未来实际上有什么作用?

    下面这行代码的作用是什么 Npm require fibers future 我在网上查找示例 发现了一些这样的示例 Future Npm require fibers future var accessToken new Future 什
  • 如何为我的整个 Node.js 应用程序使用相同的 MySQL 连接?

    我有一个app js 我从那里运行我的整个应用程序 在 app js 内部 我require许多文件中都有代码 对于每个文件 我都这样做 var mysql require mysql var mclient mysql createCon
  • 对于实时网站使用 Node.js 或 Ringojs 安全吗?

    正如标题中所述 我想知道使用实际的 omg 平台 即 Node js 和 Ringo js 的实际版本 之一来开发网站是否安全 另外 我想知道他们是否支持cookie sessions以及他们如何处理多字段帖子 PHP中的fieldname
  • HTML 格式的 Google Apps 脚本

    是否可以在我的 HTML 中使用 google apps 脚本 我希望能够从外部框架 例如 Node js 以纯 Javascript 形式从表单写入电子表格 https developers google com apps script
  • 护照本地猫鼬帐户注册的附加字段?

    我将 Passport local mongoose 与 Node js Express js MongoDB 一起用于 Web 应用程序 我想使用用户名字段 密码字段 公司名称字段和电话号码字段 所有字段 来注册用户作为字符串 但是 我只
  • Node JS - 如何检测用户语言

    我正在尝试在纯 Node js 中检查用户语言 而不使用 npm 的任何扩展 我使用了进程和全局命令 有很多规范但我找不到系统语言 这是获取默认区域设置的独立于操作系统 节点 浏览器的方法 let locale Intl DateTimeF
  • 由于 Chrome 修订,Firebase puppeteer PDF 功能超时

    我有一个 Firebase 函数来创建 PDF 文件 最近 由于 Chrome 修订版 而超时 我既不明白错误消息 也不明白出了什么问题 当我在 MacOS 下将其本地部署时 该功能有效 TimeoutError Timed out aft
  • 节点无法抓取某些页面

    我不知道这是否与冷融合页面有关 但我无法刮掉这些 cfm pages 在目录中的命令行中request run node gt var request require request node gt var url http linguis
  • 找不到“节点”的类型定义文件

    更新 Angular Webpack 和 TypeScript 后出现奇怪的错误 知道我可能会错过什么吗 当我使用 npm start 运行应用程序时 出现以下错误 at loader Cannot find type definition
  • Node.js 和 Passport 对象没有 validPassword 方法

    我正在使用 Node js Express Passport 创建一个简单的身份验证 本地 到目前为止我所达到的效果是 当输入错误的用户名或密码时 用户将被重定向到错误页面 但是当用户输入正确的用户名和密码时 我收到此错误 node mod

随机推荐

  • iReport导出的pdf不显示正确的字体

    在 iReport 中使用 Times New Roman 字体生成的 PDF 似乎使用 Arial 作为其打印版本 知道问题是什么吗 我发现 至少对我来说 我必须在 xml 中的每个字体标签上显式设置 pdfEncoding 属性以及 p
  • 如何加快Python中加载和读取JSON文件的过程?

    我正在运行一个脚本 在多处理模式下 该脚本从一堆 JSON 文件中提取一些参数 但目前速度非常慢 这是脚本 from future import print function division import os from glob imp
  • 如何保存webview中显示的图像?

    我想将webview中显示的图像保存到本地存储中 而webview应该已经缓存了它显示的图像 我如何访问缓存的图像并将它们保存到存储中 然后你必须设置一个网页浏览客户端 http developer android com referenc
  • Ruby - 乘法问题

    我的输出是这样的 ruby 1 9 2 p290 011 gt 2 32 3 gt 6 959999999999999 我记得有一天在另一台机器上我得到了它就像 2 32 3 6 我的错误是什么 非常感谢您阅读本文 如果您确实想向下舍入为整
  • WHERE BETWEEN 子句中的 PostgreSQL jsonb 值

    我的数据库表 a table 中有 jsonb 字段 其中包含 int 值 例如 abc def ghk 500 我将使用 WHERE 子句创建带有此字段 ghk 过滤器的 SELECT SELECT FROM a table WHERE
  • Python 双星号不是 **kwargs,而是在函数调用本身上使用

    在这里观看 https youtu be F5mRW0jo U4 t 9267 https youtu be F5mRW0jo U4 t 9267 他继续写下电话 Product objects create my form cleaned
  • 如何在 R 中抓取受保护的页面(https 链接)(使用 XML 包中的 readHTMLTable)?

    关于如何使用 XML 包中的 readHTMLTable 有很好的答案 我使用常规 http 页面做到了这一点 但是我无法解决 https 页面的问题 我正在尝试阅读该网站上的表格 网址字符串 library RTidyHTML libra
  • java.util.Map 属性的 Jaxb 命名空间

    我有一个包含哈希图的简单类 XmlRootElement public class Customer private long id private String name private Map
  • 如何从堆转储中提取时间戳

    不幸的是 我忘记记录进行堆转储的时间 我希望标准库在堆的某个地方缓存类似的东西System currentTimeMillis 不幸的是 我没有任何缓存它的业务对象 一个困难的选择是浏览所有线程 并查看它们的局部变量是否在某处存储了时间戳
  • 如何在 Flutter 中开始加载主题

    我希望用户可以在我的应用程序中更改并保存主题颜色 但是 我不知道如何在应用程序开始运行时加载保存的主题颜色 比如我想在下面的评论处直接加载保存的主题颜色 我尝试了共享首选项 但是 SharedPreference 实例需要运行await 这
  • 为什么不重新评估 Binding.scala 路由器?

    我正在尝试通过 Binding scala 为个人项目构建通用路由器 我定义了一个PageState trait sealed trait WhistState def text String def hash String def ren
  • Xcode 9 - Alamofire Pod。命令 /bin/sh 失败,退出代码为 1

    Users Alex Library Developer Xcode DerivedData MyProject ehabmnclpzlywhabrefntacibonm Build Intermediates noindex Archiv
  • 为什么现代 JavaScript 框架不鼓励与 DOM 直接交互

    在处理 AngularJS Angular 和 React 等 JS 框架时 我发现不鼓励直接与 DOM 交互 如果忽略警告 通常会导致错误 当我说 与 DOM 交互 时 我的意思是使用document getElementById myE
  • 操作系统崩溃的常见原因[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有兴趣了解 操作系统崩溃 不限于Windows崩溃 最常见的技术原因 从操作系统编程的角度 有哪些 我正在寻找一个不像 打开太多应用
  • 如何通过 Sequelize CLI 将主键类型设置为 UUID

    我正在通过以下方式创建数据库模型序列化 CLI https github com sequelize cli用这个命令 sequelize model create name User attributes firstname string
  • 打印 sqlalchemy 行

    我想做的就是打印 sqlalchemy 表行的一行 假设我有 from sqlalchemy import Column Integer String from sqlalchemy ext declarative import decla
  • 根据多个值过滤字典列表

    我有一个字典列表 我想根据多个条件进行过滤 该列表的简化版本如下所示 orders name v price 123 location Mars name x price 223 location Mars name x price 124
  • PostgreSQL 触发器不返回任何内容

    我在创建时有一个 PostgreSQL 触发器 它基本上将插入重定向到子表中 插入记录后 我想中止请求以避免重复数据 据我所知 执行此操作的唯一方法是返回NULL在触发器中 问题是我需要返回记录才能获取 ID 如果我回来NULL 我得到 N
  • DataGridView:如何让回车键添加新行而不是更改当前单元格?

    如何让 Enter 键在 Winforms 中起作用DataGridViewTextBoxCell就像在普通 Winform 中一样TextBox 向文本添加新行 而不是更改当前单元格 嗯 我知道如何解决这个问题了 首先 创建一个类 名为C
  • Node Js:Redis 作业在完成其任务后未完成

    希望你们做得很好 我在我的 Nodejs 项目中实现了 BullMQ Bull 的下一个主要版本 来安排发送电子邮件的作业 例如 发送忘记密码请求的电子邮件 所以 我编写了如下所示的代码 用户服务 await resetPasswordJo