Consumers 是任务的消费者,这个消费者指的就是使用队列任务,或者监听队列事件的方法。我们可以先在项目里生成一个 provider,在终端,执行 nest g pr 生产一个 provider ,名字是 app.processor。
这个命令会创建一个文件,名字是 app.processor.ts ,在这个文件里定义了一个类,类的名字是 AppProcessor,在 app.module 这个模块里注册使用了这个 provider。
打开 app.processor,在这个文件里定义的类,我们可以用 Processor 装饰一下,把 Injectable 换成 Processor,再把上面导入的 Injectable 删除掉。
然后把要使用的队列的名字告诉给这个 Processor 装饰器,比如 app。意思就是这个类处理的是 app 这个队列里的任务。
在这个类里面,再定义一个方法,这个方法用 Process 装饰一下,把任务的名字告诉给这个装饰器,比如 resizeImage。方法的名字叫 processResizeImage,方法有个 job 参数,类型是 Job。在这个方法里可以在控制台上输出一行文字,先是 处理缩放图像文件,然后是 job.data 里的 file。
测试
在 http 客户端可以测试一下,用 post 方法请求 images 这个地址。 完成以后在控制台观察一下,你会发现这里输出了一个 处理缩放图像文件,后面是文件的名字。
用 post 方法请求 images 这个地址,在请求的处理器那里,会在 app 这个队列里添加一个任务,任务数据里面有个 file 属性,属性的值应该是文件的名字。
然后我们在 app.processor 这个任务处理器里面,设置了要处理 app 这个队列里的 resizeImage 这种任务。要做的事情就是在控制台上输出这行文字。