TaskHelper.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. namespace common\helpers;
  3. use Yii;
  4. use Closure;
  5. use Exception;
  6. use PhpAmqpLib\Message\AMQPMessage;
  7. /**
  8. * 任务处理
  9. *
  10. * Class TaskHelper
  11. * @package common\helpers
  12. */
  13. class TaskHelper
  14. {
  15. /**
  16. * rabbitMQ 任务消息生产
  17. * @Author bing
  18. * @DateTime 2021-04-06 16:51:27 Tuesday
  19. * @copyright: Copyright (c) 2020 广东七件事集团
  20. * @param array $data
  21. * @param string $handler_class
  22. * @param string $method
  23. * @param Closure $error_callback
  24. * @param Closure $success_callback
  25. * @return int
  26. */
  27. public static function pushTaskQueue($exchange,$queue,$data,$handler_class='',$method='',Closure $error_callback = null,Closure $success_callback = null){
  28. try{
  29. $task_id = Yii::$app->services->rabbitMq->push(
  30. $exchange,
  31. $queue,
  32. $data,
  33. $handler_class,
  34. $method,
  35. function (AMQPMessage $message)use($error_callback){
  36. !empty($error_callback) && $error_callback($message);
  37. },
  38. function (AMQPMessage $message)use($success_callback){
  39. !empty($success_callback) && $success_callback($message);
  40. }
  41. );
  42. return $task_id;
  43. }catch(Exception $e){
  44. Yii::error('pushTaskQueue 任务消息推送失败:'.$e->getMessage().PHP_EOL);
  45. return false;
  46. }
  47. }
  48. }