我理解监听器将Job实例传递给我的worker,我可以使用该实例删除该作业,但是如何删除worker之外的作业? 请考虑以下情况:
$job_id=Queue::push('DoTheJob', array('data'=>array(1,2,3)));
If(!someotherjobdone){
// delete job from Queue with job_id
?
}
谢谢
答案 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]);