2014-04-20 54 views
4

我明白监听者将Job实例传递给我的工作人员,我可以使用该实例删除作业,但是如何删除工作人员以外的工作? 考虑这种情况:在Laravel 4中删除工作外的队列作业?

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

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

谢谢

+0

这里是要做到这一点取决于你的排队司机的一种方式: $ sqs_instance =队列:: getSqs(); $ sqs_instance-> delete($ job_id); – ariaby

回答

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); 
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]); 
相关问题