Пример #1
0
            $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');
Пример #2
0
<?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));