Producers 是任务生产者,或者叫工作生产者,其实指的就是往队列里放任务的方法。我们在项目里测试一下,打开 app.controller 这个文件。
在这个文件里要使用队列提供的东西,我们需要先把指定的队列注入进来,在这个类的构造方法里面,用 @InjectQueue ,注入名字是 app 的这个队列。这个队列是我们之前在 app 模块里,用 BullModule 的 registerQueue 注册的。
用它装饰一个属性,private appQueue,类型设置成 Queue。这个在这个类里面,就可以使用 appQueue 这个队列了。
在里面可以随便定义一个接口,用 Post 装饰一下,地址是 images,用 async 标记一个方法,名字是 postImages。
假设在这个方法里要处理上传照片,然后可以在 app 这个队列里添加一个调整照片的任务,这样任务使用者就可以使用队列里的这个任务了。
声明一个 job 表示任务,执行 this.appQueue.add 添加一个任务,第一个参数可以是任务的名字,比如 resizeImage,第二个参数是任务数据,提供一个对象,里面添加一个 file,它的值可以用一下 Date.now()。
下面再用 console.log 输出这个 job 观察一下。
测试
在 http 客户端,配置一个请求,请求方法是 post,地址是 localhost:3000/images ,发送一下这个请求。然后在运行应用的终端观察一下。这里会输出在 app 这个队列里添加的这个 job 。
name 是任务的名字, queue 是队列,queue 里的 name 是队列的名字,这里是 app。 再往下看,可以找到这个任务里的数据,它里面有一个 file 属性,值是一个时间戳。