2

I am having issue about calling artisan queue from php. I want to make the list of fail jobs in Beanstalkd queue and make a button to retry.

I want to call php artisan queue:retry{id}

So, I put this code in the route.php

Route::get('retry/{id}', function($id){
    Artisan::call("queue:retry $id");
});

And it return error

InvalidArgumentException' with message 'Command "queue:retry 12" is not defined.

Did you mean one of these? queue:retry queue:forget queue:failed-table queue:flush queue:failed queue:listen queue:subscribe queue:work'

Any one can help me? Thanks

2 Answers2

7

I just tried limonte's answer and though it was very close to what I needed, I noted that the RetryCommand.php expects the id value to be an array, so you need to have an embedded array like this:

Artisan::call('queue:retry', ['id' => [$id]]);
JasonJensenDev
  • 2,377
  • 21
  • 30
  • 1
    This answer is correct, and definitely not fun to troubleshoot. https://github.com/laravel/framework/blob/5.2/src/Illuminate/Queue/Console/RetryCommand.php#L30-L41 https://github.com/laravel/framework/blob/5.2/src/Illuminate/Queue/Console/RetryCommand.php#L94 – lasec0203 Oct 10 '17 at 21:14
6

Artisan::call('queue:retry', ['id' => $id]);

Update: (thanks to the @BakerStreetSystems's answer below)

Artisan::call('queue:retry', ['id' => [$id]]);
Limon Monte
  • 52,539
  • 45
  • 182
  • 213