wangzhibo
2026-07-16 bac4362a0b7726d38a23d38f0d7913f2c2bab262
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import { Get, Inject, Post, Provide } from '@midwayjs/core';
import { CoolController, BaseController } from '@cool-midway/core';
import { DemoCommQueue } from '../../queue/comm';
import { DemoGetterQueue } from '../../queue/getter';
 
/**
 * 队列
 */
@CoolController()
export class OpenDemoQueueController extends BaseController {
  // 普通队列
  @Inject()
  demoCommQueue: DemoCommQueue;
 
  // 主动消费队列
  @Inject()
  demoGetterQueue: DemoGetterQueue;
 
  /**
   * 发送数据到队列
   */
  @Post('/add', { summary: '发送队列数据' })
  async queue() {
    this.demoCommQueue.add({ a: 2 });
    return this.ok();
  }
 
  @Post('/addGetter')
  async addGetter() {
    await this.demoGetterQueue.add({ a: new Date() });
    return this.ok();
  }
 
  /**
   * 获得队列中的数据,只有当队列类型为getter时有效
   */
  @Get('/getter')
  async getter() {
    const job = await this.demoGetterQueue.getters.getJobs(
      ['wait'],
      0,
      0,
      true
    );
    // 获得完将数据从队列移除
    await job[0]?.remove();
    return this.ok(job[0]?.data);
  }
}