JobEvent.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <?php
  2. namespace UCore\Queue;
  3. use UCore\Helper\Logger;
  4. use UCore\Model\JobRun;
  5. use Illuminate\Contracts\Queue\ShouldQueue;
  6. use Illuminate\Queue\Events\JobExceptionOccurred;
  7. use Illuminate\Queue\Events\JobFailed;
  8. use Illuminate\Queue\Events\JobPopped;
  9. use Illuminate\Queue\Events\JobPopping;
  10. use Illuminate\Queue\Events\JobProcessed;
  11. use Illuminate\Queue\Events\JobQueued;
  12. use Illuminate\Queue\Events\JobQueueing;
  13. use Illuminate\Queue\Events\JobReleasedAfterException;
  14. use Illuminate\Queue\Events\JobRetryRequested;
  15. use Illuminate\Events\Dispatcher;
  16. class JobEvent
  17. {
  18. /**
  19. * 作业异常
  20. * @param JobExceptionOccurred $exceptionOccurred
  21. * @return void
  22. */
  23. public function jobExceptionOccurred(JobExceptionOccurred $exceptionOccurred)
  24. {
  25. Logger::info('JobEvent', 'jobExceptionOccurred');
  26. }
  27. /**
  28. * 队列失败
  29. *
  30. * @param JobFailed $jobFailed
  31. * @return void
  32. */
  33. public function jobFailed(JobFailed $jobFailed)
  34. {
  35. Logger::info('JobEvent', 'jobFailed');
  36. }
  37. /**
  38. * 作业弹出
  39. * @param JobPopped $jobPopped
  40. * @return void
  41. */
  42. public function jobPopped(JobPopped $jobPopped)
  43. {
  44. Logger::info('JobEvent', 'jobPopped');
  45. }
  46. public function jobPopping(JobPopping $jobPopping)
  47. {
  48. Logger::info('JobEvent', 'JobPopping');
  49. }
  50. /**
  51. * 任务运行完成
  52. * @param JobProcessed $jobProcessed
  53. * @return void
  54. */
  55. public function jobProcessed(JobProcessed $jobProcessed)
  56. {
  57. dump($jobProcessed);
  58. Logger::info('JobEvent', 'JobProcessed');
  59. $this->add_log('jobProcessed',$jobProcessed->job->getQueue(),$jobProcessed->job->getName(),json_encode($jobProcessed->job->payload()),'');
  60. }
  61. /**
  62. * 队列已排队
  63. *
  64. * @param JobQueued $jobQueued
  65. * @return void
  66. */
  67. public function jobQueued(JobQueued $jobQueued)
  68. {
  69. if($jobQueued->job instanceof ShouldQueue){
  70. $this->add_log(
  71. 'jobQueued',
  72. $jobQueued->job->queue,
  73. get_class( $jobQueued->job),
  74. json_encode($jobQueued->job));
  75. }
  76. Logger::info('JobEvent', 'jobQueued');
  77. }
  78. /**
  79. * 队列 调度中
  80. * @param JobQueueing $jobQueueing
  81. * @return void
  82. */
  83. public function jobQueueing(JobQueueing $jobQueueing)
  84. {
  85. Logger::info('JobEvent', 'jobQueueing');
  86. }
  87. /**
  88. * 队列在错误后重新发布
  89. * @param JobReleasedAfterException $jobReleasedAfterException
  90. * @return void
  91. */
  92. public function jobReleasedAfterException(JobReleasedAfterException $jobReleasedAfterException)
  93. {
  94. $this->add_log('jobReleasedAfterException',$jobReleasedAfterException->job);
  95. Logger::info('JobEvent', 'jobReleasedAfterException');
  96. }
  97. /**
  98. * 队列重新请求
  99. * @param JobRetryRequested $jobRetryRequested
  100. * @return void
  101. */
  102. public function jobRetryRequested(JobRetryRequested $jobRetryRequested)
  103. {
  104. Logger::info('JobEvent', 'JobRetryRequested');
  105. }
  106. /**
  107. * 为订阅者注册监听器。
  108. *
  109. * @return array<string, string>
  110. */
  111. public function subscribe(Dispatcher $events): array
  112. {
  113. return [
  114. JobQueued::class => 'jobQueued',
  115. jobPopped::class => 'jobPopped',
  116. JobPopping::class => 'jobPopping',
  117. jobFailed::class => 'jobFailed',
  118. jobProcessed::class => 'jobProcessed',
  119. JobQueueing::class => 'jobQueueing',
  120. JobReleasedAfterException::class => 'jobReleasedAfterException',
  121. JobRetryRequested::class => 'jobRetryRequested',
  122. JobExceptionOccurred::class => 'jobExceptionOccurred',
  123. ];
  124. }
  125. }