1
0

sys.ts 1020 B

1234567891011121314151617181920212223242526272829303132
  1. import * as Queue from 'bull';
  2. import { Application } from 'egg';
  3. /**
  4. * 自定义任务队列
  5. */
  6. export default (app: Application) => {
  7. const ctx = app.createAnonymousContext();
  8. const tq = new Queue('sys-task', app.config.bull.default);
  9. // 处理任务
  10. tq.process(async function(job) {
  11. let id = -1;
  12. try {
  13. id = await ctx.service.admin.sys.taskLog.record(job.data.id, 0);
  14. await ctx.service.admin.sys.task.callService(job.data.service, job.data.args);
  15. await ctx.service.admin.sys.taskLog.updateTaskStatus(id, 1);
  16. } catch (e) {
  17. if (id !== -1) {
  18. await ctx.service.admin.sys.taskLog.updateTaskStatus(id, 2, `${e.message}`);
  19. }
  20. }
  21. });
  22. // eslint-disable-next-line @typescript-eslint/no-unused-vars
  23. tq.on('completed', (job, _result) => {
  24. ctx.service.admin.sys.task.updateTaskCompleteStatus(job.data.id);
  25. });
  26. // tq.on('global:completed', (jobId, _result) => {
  27. // ctx.service.admin.sys.task.updateTaskCompleteStatus(jobId);
  28. // });
  29. return tq;
  30. };