【问题标题】:How to send data from laravel to a redis queue implemented using Bull queue如何将数据从 laravel 发送到使用 Bull 队列实现的 redis 队列
【发布时间】:2020-09-29 10:58:55
【问题描述】:

我在nestjs 项目中实现了Bull queue,但希望producer 是一个laravel 项目。 我使用以下命令生成

Redis::command('zadd', ['bull:test:delayed', 1, $data]);

供消费者使用

@Processor('test')
export class ConsumerProcessor {
  @Process({concurrency:13})
  handle(j: Job<unknown>) {
    this.logger.log(j.id);
  }
}

生产者添加的 $data 可以通过 job.id 访问,我如何使用 job.data 访问它并拥有唯一的 id?生产者端需要做哪些改变?

【问题讨论】:

  • 你成功了吗?我正在尝试实施类似的解决方案
  • 你们中有人找到了可接受的解决方案吗?

标签: php node.js laravel nestjs bull-queue


【解决方案1】:

以下代码有效:

A="some unique identifier";
Redis::command("hmset",['bull:<queuename>:<A>', "data" , json_encode($data)]); 
Redis::command('zadd', ['bull:<queuename>:delayed', 1, A]);

【讨论】:

  • 我是否首先需要获取最新的 ID(将其用作标识符)?延迟真的是应该添加ID的正确位置吗?还是不应该是等待队列?
  • 在我的情况下,我使用 UUId 作为标识符,因此不需要获取。另外,我不得不延迟排队,所以我延迟添加了它。这个技巧适用于我的用例。
猜你喜欢
  • 1970-01-01
  • 2019-01-02
  • 2019-06-05
  • 2014-02-22
  • 1970-01-01
  • 1970-01-01
  • 2012-01-22
  • 1970-01-01
  • 2015-12-27
相关资源
最近更新 更多