微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在部署到 Heroku 的 Node.js 环境中创建 Redis (Bull) 队列?

如何解决如何在部署到 Heroku 的 Node.js 环境中创建 Redis (Bull) 队列?

我已经浏览了所有文档,但在找到正确实现的示例时遇到了一些麻烦。首先,我有 Heroku Redis 插件,如下所示:

https://i.stack.imgur.com/9kcXW.png

我在我的 Node.js 环境中安装了 Redis 和 Bull,并按如下方式设置了 Redis

const redis = require('redis');
const Queue = require('bull');
const redisClient = redis.createClient(process.env.REdis_URL,{
    tls: {
        rejectUnauthorized: false
    }
});
const bullQueue = new Queue('queue',process.env.REdis_URL)

我正在尝试将以下函数作为后台任务运行(这是 Heroku 对需要超过 0.5 秒才能完成的函数的建议):

app.post('/',async function(request,response) {
  const client = await pool.connect() //pool is just a node-postgres pool
  try {
    await client.query('BEGIN')
    let data = await function1(argumentList);
    await function2(data);
    await client.query('COMMIT')
  } catch(err) {
    await client.query('ROLLBACK')
    console.log(err)
  }
  try {
    await client.query('BEGIN')
    const setofItems = await function3()
    var array = []
    for (item of setofItems) {
      if (conditional) {
        array.push(item)
      }
    }
    await client.query('COMMIT')
    let job = await bullQueue.add()
    response.send(JSON.stringify(array))
  } catch(err) {
    await client.query('ROLLBACK')
    console.log(err)
  }
});

这个函数会做一些网页抓取、数据库调用和其他事情,所以就像我说的,它需要几秒钟才能完成。我应该如何更改我的函数以将请求添加后台队列,然后将 JSON.stringified 'array' 返回给用户。对不起,如果这是一个菜鸟 Redis 问题,但我已经查看了所有文档,但我真的不知道如何继续。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。