Обновление
Job::dispatchNow()
отлично работает.
Я обновил свое приложение Laravel с версии 5.7 до 5.8.
Теперь некоторые из моих заданий завершаются с сообщением о том, что метод SyncJob :: dispatch () не определен. В руководстве по обновлению упоминается только то, что метод fire () был удален в этой версии.
Есть идеи, где проблема? Я пытался создать новые рабочие места, в результате чего та же ошибка. Я удалил, переустановил полный каталог vendor, сбросил автозагрузку, удалил кеш и т. Д.
Задание запускается по моей плановой команде:
protected function schedule(Schedule $schedule)
{
// ...
$schedule->command(RenewSubscriptionsCommand::class)->dailyAt('00:01');
// ...
}
Это вызываемая команда:
public function handle()
{
// ...
$subscriptions = SubscriptionService::collect()->getAllActiveSubscriptions();
foreach($subscriptions as $subscription){
dispatch(new RenewSubscriptionJob($subscription));
}
// ...
}
И наконец Иов:
<?php
namespace Subscription\Jobs;
use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Subscription\Database\Entities\Subscription;
use Subscription\Exceptions\SubscriptionException;
use Subscription\SubscriptionService;
class RenewSubscriptionJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
protected $subscription = NULL;
/**
* RenewSubscriptionJob constructor.
* @param Subscription $subscription
*/
public function __construct(Subscription $subscription)
{
$this->subscription = $subscription;
}
/**
* @throws SubscriptionException
*/
public function handle(): void
{
SubscriptionService::init($this->getSubscription())->renew();
}
protected function getSubscription(): Subscription
{
if($this->subscription instanceof Subscription){
return $this->subscription;
} else {
throw new SubscriptionException("Could not renew Subscription! No Subscription-Entity given!");
}
}
}
И полная трассировка стека:
Symfony \ Component \ Debug \ Exception \ FatalThrowableError: вызов неопределенного метода Illuminate \ Queue \ Jobs \ SyncJob :: dispatch ()
в /home/vagrant/faaren/repositories/website-and-consumer-area/vendor/laravel/framework/src/Illuminate/Queue/SyncQueue.php:42
38 |
39 | пытаться {
40 | $ This-> raiseBeforeJobEvent ($ queueJob);
41 |
42 | $ QueueJob-> отправка ();
43 |
44 | $ This-> raiseAfterJobEvent ($ queueJob);
45 | } catch (исключение $ e) {
46 | $ this-> handleException ($ queueJob, $ e);
Трассировка исключения:
1 Подсветка \ Queue \ SyncQueue :: push (Object (Subscription \ Jobs \ RenewSubscriptionJob))
/home/vagrant/faaren/repositories/website-and-consumer-area/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php:184
2 Подсветка \ Bus \ Dispatcher :: pushCommandToQueue (Object (Подсветка \ Queue \ SyncQueue), Объект (Subscription \ Jobs \ RenewSubscriptionJob))
/home/vagrant/faaren/repositories/website-and-consumer-area/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php:160
3 Подсветка \ Bus \ Dispatcher :: dispatchToQueue (Object (Subscription \ Jobs \ RenewSubscriptionJob))
/home/vagrant/faaren/repositories/website-and-consumer-area/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php:73
4 Подсветка \ Bus \ Dispatcher :: dispatch (Object (Subscription \ Jobs \ RenewSubscriptionJob))
/home/vagrant/faaren/repositories/website-and-consumer-area/vendor/laravel/framework/src/Illuminate/Foundation/Bus/PendingDispatch.php:112
5 Подсветка \ Foundation \ Bus \ PendingDispatch :: __ destruct ()
/home/vagrant/faaren/repositories/website-and-consumer-area/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:399
6 рассылка (Объект (Subscription \ Jobs \ RenewSubscriptionJob))
/home/vagrant/faaren/repositories/website-and-consumer-area/packages/subscription/Commands/RenewSubscriptionsCommand.php:45
7 Subscription \ Commands \ RenewSubscriptionCommand :: handle ()
/home/vagrant/faaren/repositories/website-and-consumer-area/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:32
8 call_user_func_array ([])
/home/vagrant/faaren/repositories/website-and-consumer-area/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:32
9 Подсветка \ Container \ BoundMethod :: Подсветка \ Container {closure} ()
/home/vagrant/faaren/repositories/website-and-consumer-area/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:90
10 Осветить \ Container \ BoundMethod :: callBoundMethod (Объект (Осветить \ Основание \ Приложение), Объект (Закрытие))
/home/vagrant/faaren/repositories/website-and-consumer-area/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php:34
11 Подсветка \ Container \ BoundMethod :: call (Объект (Подсветка \ Основа \ Приложение), [])
/home/vagrant/faaren/repositories/website-and-consumer-area/vendor/laravel/framework/src/Illuminate/Container/Container.php:580
12 Подсветка \ Контейнер \ Контейнер :: вызов ()/home/vagrant/faaren/repositories/website-and-consumer-area/vendor/laravel/framework/src/Illuminate/Console/Command.php:183
13 Подсветка \ Консоль \ Command :: execute (Объект (Symfony \ Компонент \ Консоль \ Input \ ArgvInput), Объект (Подсветка \ Console \ OutputStyle))
/home/vagrant/faaren/repositories/website-and-consumer-area/vendor/symfony/console/Command/Command.php:255
14 Symfony \ Component \ Console \ Command \ Command :: run (объект (Symfony \ Component \ Console \ Input \ ArgvInput), объект (Illuminate \ Console \ OutputStyle))
/home/vagrant/faaren/repositories/website-and-consumer-area/vendor/laravel/framework/src/Illuminate/Console/Command.php:170
15 Подсветка \ Console \ Command :: run (Объект (Symfony \ Component \ Console \ Input \ ArgvInput), Объект (Symfony \ Component \ Console \ Output \ ConsoleOutput))
/home/vagrant/faaren/repositories/website-and-consumer-area/vendor/symfony/console/Application.php:908
16 Symfony \ Component \ Console \ Application :: doRunCommand (Объект (Subscription \ Commands \ RenewSubscriptionCommand), Объект (Symfony \ Component \ Console \ Input \ ArgvInput), Объект (Symfony \ Component \ Console \ Output \ ConsoleOutput))
/home/vagrant/faaren/repositories/website-and-consumer-area/vendor/symfony/console/Application.php:269
17 Symfony \ Component \ Console \ Application :: doRun (Объект (Symfony \ Component \ Console \ Input \ ArgvInput), Объект (Symfony \ Component \ Console \ Output \ ConsoleOutput))
/home/vagrant/faaren/repositories/website-and-consumer-area/vendor/symfony/console/Application.php:145
18 Symfony \ Component \ Console \ Application :: run (Объект (Symfony \ Component \ Console \ Input \ ArgvInput), Объект (Symfony \ Component \ Console \ Output \ ConsoleOutput))
/home/vagrant/faaren/repositories/website-and-consumer-area/vendor/laravel/framework/src/Illuminate/Console/Application.php:90
19 Подсветка \ Console \ Application :: run (Объект (Symfony \ Component \ Console \ Input \ ArgvInput), Объект (Symfony \ Component \ Console \ Output \ ConsoleOutput))
/home/vagrant/faaren/repositories/website-and-consumer-area/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php:122
20 Подсветка \ Foundation \ Console \ Kernel :: handle (Объект (Symfony \ Component \ Console \ Input \ ArgvInput), Объект (Symfony \ Component \ Console \ Output \ ConsoleOutput))
/ Главная / бродяга / faaren / Хранилища / веб-и-потребителя район / ремесленник: 37