CpaReversalFire.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. /**
  3. * SettleFire.php UTF-8
  4. * Cpa倒量通知队列处理
  5. *
  6. * @date : 2019/03/21 15:44
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : chenbingling <cbl@huosdk.com>
  10. * @version : HuoMp 1.0
  11. */
  12. namespace huolib\queue\job;
  13. use huolib\queue\constant\EventConst;
  14. use huomp\controller\cpa_reversal\Quhulian;
  15. use think\queue\Job;
  16. class CpaReversalFire extends Fire {
  17. static $g_i = 0;
  18. /**
  19. * fire方法是消息队列默认调用的方法
  20. *
  21. * @param Job $job 当前的任务对象
  22. * @param array|mixed $data 发布任务时自定义的数据
  23. */
  24. public function fire(Job $job, $data) {
  25. if ($job->attempts() > 1) {
  26. $job->delete();
  27. }
  28. self::$g_i++;
  29. $_is_job_done = $this->doJob($data);
  30. $runtime = round(microtime(true) - THINK_START_TIME, 10);
  31. echo $runtime.' '.self::$g_i;
  32. if ($_is_job_done) {
  33. //如果任务执行成功, 记得删除任务
  34. $job->delete();
  35. // print("<info>Hello Job has been done and deleted"."</info>\n");
  36. } else {
  37. if ($job->attempts() > 3) {
  38. //通过这个方法可以检查这个任务已经重试了几次了
  39. // print("<warn>Hello Job has been retried more than 3 times!"."</warn>\n");
  40. $job->delete();
  41. // 也可以重新发布这个任务
  42. // print("<info>Hello Job will be availabe again after 2s."."</info>\n");
  43. //$job->release(2); //$delay为延迟时间,表示该任务延迟2秒后再执行
  44. }
  45. }
  46. }
  47. /**
  48. * 根据消息中的数据进行实际的业务处理
  49. *
  50. * @param array $data 发布任务时自定义的数据
  51. *
  52. * @return bool 任务执行的结果
  53. */
  54. public function doJob($data) {
  55. switch ($data['event']) {
  56. case EventConst::EVENT_CPA_REVERSAL_QUHULIAN:
  57. $_rs = (new Quhulian())->QuhulianNotify($data);
  58. break;
  59. default:
  60. $_rs = false;
  61. }
  62. return $_rs;
  63. }
  64. }