删除Laravel 4中工作人员之外的队列作业?

时间:2014-04-20 17:47:37

标签: php laravel-4

我理解监听器将Job实例传递给我的worker,我可以使用该实例删除该作业,但是如何删除worker之外的作业? 请考虑以下情况:

$job_id=Queue::push('DoTheJob', array('data'=>array(1,2,3)));

If(!someotherjobdone){
// delete job from Queue  with job_id
?
}

谢谢

2 个答案:

答案 0 :(得分:1)

我不确定这是否正确,但我认为你想把这个工作从队列中“弹出”:

$job_id=Queue::push('DoTheJob', array('data'=>array(1,2,3)));

If(!someotherjobdone){
    Queue::pop($job_id);
}

如果这不起作用,您可以尝试:

$queue=Queue::getQueue($job_id);
Queue::pop($queue);

答案 1 :(得分:0)

就我而言,我正在实施SQS队列。如果我有' ReceiptHandle'消息(与接收消息的特定实例相关联的ID),我可以通过SQSManager访问SqsClient对象来删除它,因为IoC容器可以访问管理器。

$queue_manager = App::make("queue");
$sqs_queue = $queue_manager->connection('sqs');
$sqs_client = $sqs_queue->getSqs(); 
$sqs_client->deleteMessage(['QueueUrl' => $queue_url, 'ReceiptHandle' => $receipt_handle]);