12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- <?php
- declare(strict_types=1);
- namespace App\Service;
- use App\Job\DemoJob;
- use App\Job\PlayerJob;
- use App\Job\QuestionJob;
- use App\Job\BindjigouJob;
- use Hyperf\AsyncQueue\Driver\DriverFactory;
- use Hyperf\AsyncQueue\Driver\DriverInterface;
- class QueueService
- {
- protected DriverInterface $driver;
- public function __construct(DriverFactory $driverFactory)
- {
- // 投递通道
- $this->driver = $driverFactory->get('default');
- }
- /**
- * 生产消息.
- * @param mixed $params 数据
- * @param int $delay 延时时间 单位秒
- */
- public function demoPush($params, int $delay = 0): bool
- {
- // 这里的 `DemoJob` 会被序列化存到 Redis 中,所以内部变量最好只传入普通数据
- // 同理,如果内部使用了注解 @Value 会把对应对象一起序列化,导致消息体变大。
- // 所以这里也不推荐使用 `make` 方法来创建 `Job` 对象。
- return $this->driver->push(new DemoJob($params), $delay);
- }
- /**
- * 生产消息.
- * @param mixed $params 数据
- * @param int $delay 延时时间 单位秒
- */
- public function playerPush($params, int $delay = 0): bool
- {
- // 这里的 `DemoJob` 会被序列化存到 Redis 中,所以内部变量最好只传入普通数据
- // 同理,如果内部使用了注解 @Value 会把对应对象一起序列化,导致消息体变大。
- // 所以这里也不推荐使用 `make` 方法来创建 `Job` 对象。
- return $this->driver->push(new PlayerJob($params), $delay);
- }
- /**
- * 生产消息.
- * @param mixed $params 数据
- * @param int $delay 延时时间 单位秒
- */
- public function questionPush($params, int $delay = 0): bool
- {
- // 这里的 `DemoJob` 会被序列化存到 Redis 中,所以内部变量最好只传入普通数据
- // 同理,如果内部使用了注解 @Value 会把对应对象一起序列化,导致消息体变大。
- // 所以这里也不推荐使用 `make` 方法来创建 `Job` 对象。
- return $this->driver->push(new QuestionJob($params), $delay);
- }
- /**
- * 生产消息.
- * @param mixed $params 数据
- * @param int $delay 延时时间 单位秒
- */
- public function bindjigouPush($params, int $delay = 0): bool
- {
- // 这里的 `DemoJob` 会被序列化存到 Redis 中,所以内部变量最好只传入普通数据
- // 同理,如果内部使用了注解 @Value 会把对应对象一起序列化,导致消息体变大。
- // 所以这里也不推荐使用 `make` 方法来创建 `Job` 对象。
- return $this->driver->push(new BindjigouJob($params), $delay);
- }
- }
|