123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- <?php
- // +----------------------------------------------------------------------
- // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
- // +----------------------------------------------------------------------
- // | Copyright (c) 2016~2020 https://www.crmeb.com All rights reserved.
- // +----------------------------------------------------------------------
- // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
- // +----------------------------------------------------------------------
- // | Author: CRMEB Team <admin@crmeb.com>
- // +----------------------------------------------------------------------
- namespace crmeb\traits;
- use crmeb\utils\Queue;
- /**
- * 快捷加入消息队列
- * Trait QueueTrait
- * @package crmeb\traits
- */
- trait QueueTrait
- {
- /**
- * 列名
- * @return string
- */
- protected static function queueName()
- {
- return null;
- }
- /**
- * 加入队列
- * @param $action
- * @param array $data
- * @param string|null $queueName
- * @return mixed
- */
- public static function dispatch($action = null, array $data = [], string $queueName = null)
- {
- $queue = Queue::instance()->job(__CLASS__);
- if (is_array($action)) {
- $queue->data(...$action);
- } else if (is_string($action)) {
- $queue->do($action)->data(...$data);
- }
- if ($queueName) {
- $queue->setQueueName($queueName);
- } else if (self::queueName()) {
- $queue->setQueueName(self::queueName());
- }
- return $queue->push();
- }
- /**
- * 延迟加入消息队列
- * @param int $secs
- * @param $action
- * @param array $data
- * @param string|null $queueName
- * @return mixed
- */
- public static function dispatchSece(int $secs, $action = null, array $data = [], string $queueName = null)
- {
- $queue = Queue::instance()->job(__CLASS__)->secs($secs);
- if (is_array($action)) {
- $queue->data(...$action);
- } else if (is_string($action)) {
- $queue->do($action)->data(...$data);
- }
- if ($queueName) {
- $queue->setQueueName($queueName);
- } else if (self::queueName()) {
- $queue->setQueueName(self::queueName());
- }
- return $queue->push();
- }
- /**
- * 加入小队列
- * @param string $do
- * @param array $data
- * @param int|null $secs
- * @param string|null $queueName
- * @return mixed
- */
- public static function dispatchDo(string $do, array $data = [], int $secs = null, string $queueName = null)
- {
- $queue = Queue::instance()->job(__CLASS__)->do($do);
- if ($secs) {
- $queue->secs($secs);
- }
- if ($data) {
- $queue->data(...$data);
- }
- if ($queueName) {
- $queue->setQueueName($queueName);
- } else if (self::queueName()) {
- $queue->setQueueName(self::queueName());
- }
- return $queue->push();
- }
- }
|