You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

QueueTrait.php 2.3KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. namespace crmeb\traits;
  3. use crmeb\utils\Queue;
  4. /**
  5. * 快捷加入消息队列
  6. * Trait QueueTrait
  7. */
  8. trait QueueTrait
  9. {
  10. /**
  11. * 列名
  12. * @return string
  13. */
  14. protected static function queueName()
  15. {
  16. return null;
  17. }
  18. /**
  19. * 加入队列
  20. * @param $action
  21. * @param array $data
  22. * @param string|null $queueName
  23. * @return mixed
  24. */
  25. public static function dispatch($action = null, array $data = [], string $queueName = null)
  26. {
  27. $queue = Queue::instance()->job(__CLASS__);
  28. if (is_array($action)) {
  29. $queue->data(...$action);
  30. } else if (is_string($action)) {
  31. $queue->do($action)->data(...$data);
  32. }
  33. if ($queueName) {
  34. $queue->setQueueName($queueName);
  35. } else if (self::queueName()) {
  36. $queue->setQueueName(self::queueName());
  37. }
  38. return $queue->push();
  39. }
  40. /**
  41. * 延迟加入消息队列
  42. * @param int $secs
  43. * @param $action
  44. * @param array $data
  45. * @param string|null $queueName
  46. * @return mixed
  47. */
  48. public static function dispatchSece(int $secs, $action = null, array $data = [], string $queueName = null)
  49. {
  50. $queue = Queue::instance()->job(__CLASS__)->secs($secs);
  51. if (is_array($action)) {
  52. $queue->data(...$action);
  53. } else if (is_string($action)) {
  54. $queue->do($action)->data(...$data);
  55. }
  56. if ($queueName) {
  57. $queue->setQueueName($queueName);
  58. } else if (self::queueName()) {
  59. $queue->setQueueName(self::queueName());
  60. }
  61. return $queue->push();
  62. }
  63. /**
  64. * 加入小队列
  65. * @param string $do
  66. * @param array $data
  67. * @param int|null $secs
  68. * @param string|null $queueName
  69. * @return mixed
  70. */
  71. public static function dispatchDo(string $do, array $data = [], int $secs = null, string $queueName = null)
  72. {
  73. $queue = Queue::instance()->job(__CLASS__)->do($do);
  74. if ($secs) {
  75. $queue->secs($secs);
  76. }
  77. if ($data) {
  78. $queue->data(...$data);
  79. }
  80. if ($queueName) {
  81. $queue->setQueueName($queueName);
  82. } else if (self::queueName()) {
  83. $queue->setQueueName(self::queueName());
  84. }
  85. return $queue->push();
  86. }
  87. }