2017-05-04 7 views
0

때로는 Laravel 작업을 릴리스하고 대기열에 다시 가입시켜야 할 수도 있습니다. 그러나 이렇게하면 시도 횟수가 증가합니다. 2가되고 대기열 작업자가 1 회 시도로 제한되면 절대로 실행되지 않습니다.시도 횟수를 늘리지 않고 Laravel 작업 대기열을 해제하십시오.

시도를 늘리지 않고 어떻게 풀 수 있습니까?

내가 사용하고 해제하려면 :

$this->release(30); 

이전이 줄에 다음 코드를 시도 :이 작동하지 않습니다

$payload = json_decode($this->payload, true); 
if (isset($payload['attempts'])) { 
    $payload['attempts'] = 0; 
} 
$this->payload = json_encode($payload); 

. payload 속성을 사용할 수 없습니다. the Job class에있는 것 같습니다.

코드를 재설정해야하는 Laravel 프레임 워크는 RetryCommand 클래스에 있습니다. 그것은 다음과 같습니다

protected function resetAttempts($payload) 
{ 
    $payload = json_decode($payload, true); 
    if (isset($payload['attempts'])) { 
     $payload['attempts'] = 0; 
    } 
    return json_encode($payload); 
} 

하지만 내 작업 클래스에서 $payload에 액세스하는 방법을 작동하지 않을 수 있습니까?

시도 횟수를 늘리지 않고 작업을 해제하는 더 좋은 방법이 있습니까?

저는 Laravel 5.4와 Redis 큐 드라이버를 사용하고 있습니다.

답변

0

그래서 방금 새로운 작업을 삭제하고 다시 큐업했습니다. 어쩌면 깨끗하지는 않지만 작동합니다.

$this->delete(); 

$job = (new ProcessPage($this->pdf))->onQueue('converting'); 
dispatch($job);