我明白监听者将Job实例传递给我的工作人员,我可以使用该实例删除作业,但是如何删除工作人员以外的工作? 考虑这种情况:在Laravel 4中删除工作外的队列作业?
$job_id=Queue::push('DoTheJob', array('data'=>array(1,2,3)));
If(!someotherjobdone){
// delete job from Queue with job_id
?
}
谢谢
我明白监听者将Job实例传递给我的工作人员,我可以使用该实例删除作业,但是如何删除工作人员以外的工作? 考虑这种情况:在Laravel 4中删除工作外的队列作业?
$job_id=Queue::push('DoTheJob', array('data'=>array(1,2,3)));
If(!someotherjobdone){
// delete job from Queue with job_id
?
}
谢谢
我不能肯定这是否是正确的,但我觉得要“流行”的工作从队列:
$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);
在我的情况,我正在实施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]);
这里是要做到这一点取决于你的排队司机的一种方式: $ sqs_instance =队列:: getSqs(); $ sqs_instance-> delete($ job_id); – ariaby