2014-04-20 85 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]); 
相關問題