Вообщем, решение, как я и предполагал, простое:
В классе необходимо указать
$tries
, а вместо исключения вызывать
$this->release()
В спойлере код класса:
Job classclass MyQueueJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
const TIMEOUT = 10;
public $tries= 288;
public $url;
public $data;
public function __construct(string $url, $data)
{
$this->onQueue('myqueue');
$this->url = $url;
$this->data = $data;
}
public function handle()
{
try {
$response = Http::withOptions(['verify' => false])
->timeout(self::TIMEOUT)
->post($this->url, [$this->data]);
} catch (\Exception $exception) {
$this->release(300);
}
if (isset($response) && $response->failed()) {
$this->release(300);
}
}
}
Команда, выполняемая в supervisor`e:
command=php /laravel/artisan queue:work --queue=myqueue