$job = $pheanstalk->peekDelayed($tube); $statsJob = $pheanstalk->statsJob($job); $jobDelayed = ['data' => $job->getData(), 'stats' => $statsJob]; } catch (\Pheanstalk\Exception\ServerException $e) { $jobDelayed = null; } try { $job = $pheanstalk->peekReady($tube); $statsJob = $pheanstalk->statsJob($job); $jobReady = ['data' => $job->getData(), 'stats' => $statsJob]; } catch (\Pheanstalk\Exception\ServerException $e) { $jobReady = null; } $statsTube = $pheanstalk->statsTube($tube)->getArrayCopy(); $stats = $pheanstalk->stats()->getArrayCopy(); $tubes = $pheanstalk->listTubes(); } catch (\Pheanstalk\Exception\ConnectionException $e) { $isServiceListening = false; $jobBuried = null; $jobDelayed = null; $jobReady = null; $statsTube = []; $stats = []; $tubes = []; } $r = $res->withHeader('Content-Type', 'application/json'); $r->write(json_encode(['isServiceListening' => $isServiceListening, 'jobBuried' => $jobBuried, 'jobDelayed' => $jobDelayed, 'jobReady' => $jobReady, 'serverAddress' => $config['beanstalk_server'], 'statsTube' => $statsTube, 'stats' => $stats, 'tubes' => $tubes])); return $r; }); $app->post('/cmd/delete', function ($req, $res) use($pheanstalk) { $job_id = $req->getParam('job_id');
<?php use PMG\Queue; require __DIR__ . '/../vendor/autoload.php'; require __DIR__ . '/StreamLogger.php'; $conn = new \Pheanstalk\Pheanstalk('localhost'); $tubes = $conn->listTubes(); do { $queueName = uniqid('example_'); } while (in_array($queueName, $tubes, true)); $serializer = new Queue\Serializer\SigningSerializer(new Queue\Serializer\NativeSerializer(), "sshhhh, it's a secret"); $driver = new Queue\Driver\PheanstalkDriver($conn, [], $serializer); $router = new Queue\Router\MappingRouter(['TestMessage' => $queueName, 'TestMessage2' => $queueName, 'MustStop' => $queueName]); $resolver = new Queue\Resolver\MappingResolver(['TestMessage' => function () { // noop }, 'TestMessage2' => function () { throw new \Exception('oops'); }, 'MustStop' => function () { throw new Queue\Exception\SimpleMustStop('stopit'); }]); $producer = new Queue\DefaultProducer($driver, $router); $consumer = new Queue\DefaultConsumer($driver, new Queue\Executor\SimpleExecutor($resolver), new Queue\Retry\NeverSpec(), new StreamLogger()); $producer->send(new Queue\SimpleMessage('TestMessage')); $producer->send(new Queue\SimpleMessage('TestMessage2')); $producer->send(new Queue\SimpleMessage('MustStop')); exit($consumer->run($queueName));