PHP code example of brandembassy / queue-management
1. Go to this page and download the library: Download brandembassy/queue-management library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once ('vendor/autoload.php' );
brandembassy / queue-management example snippets
declare (strict_types = 1 );
use BE \QueueManagement \Jobs \SimpleJob ;
class ExampleJob extends SimpleJob
{
public const JOB_NAME = 'exampleJob' ;
public const PARAMETER_FOO = 'foo' ;
public function getFoo () : string
{
return $this ->getParameter(self ::PARAMETER_FOO);
}
}
declare (strict_types = 1 );
use BE \QueueManagement \Jobs \Execution \JobProcessorInterface ;
use BE \QueueManagement \Jobs \JobInterface ;
use YourApp \Jobs \ExampleJob ;
class ExampleJobProcessor implements JobProcessorInterface
{
public function process (JobInterface $job) : void
{
assert($job instanceof ExampleJob);
echo $job->getFoo();
}
}
declare (strict_types = 1 );
use BE \QueueManagement \Queue \QueueManagerInterface ;
use YourApp \Jobs \ExampleJob ;
use BE \QueueManagement \Jobs \JobInterface ;
use BE \QueueManagement \Jobs \JobDefinitions \JobDefinitionsContainer ;
class JobPusher
{
protected $queueManager;
private $jobDefinitionsContainer;
public function __construct (QueueManagerInterface $queueManager, JobDefinitionsContainer $jobDefinitionsContainer) {
$this ->queueManager = $queueManager;
$this ->jobDefinitionsContainer = $jobDefinitionsContainer;
}
protected function push (string $jobUuid) : void
{
$jobDefinition = $this ->jobDefinitionsContainer->get(ExampleJob::JOB_NAME);
$exampleJob = new ExampleJob(
$jobUuid,
new DateTimeImmutable(),
JobInterface::INIT_ATTEMPTS,
$jobDefinition,
new ArrayCollection([ExampleJob::PARAMETER_FOO => 'bar' ])
);
$this ->queueManager->push($exampleJob);
}
}
declare (strict_types = 1 );
namespace BE \AdapterSdk \Console \Commands \Queue ;
use BE \QueueManagement \Queue \WorkerInterface ;
use Symfony \Component \Console \Input \InputInterface ;
use Symfony \Component \Console \Output \OutputInterface ;
use Symfony \Component \Console \Command \Command ;
class WorkerStartCommand extends Command
{
private $worker;
public function __construct (WorkerInterface $worker)
{
parent ::__construct();
$this ->worker = $worker;
}
protected function configure () : void
{
$this ->setName('queue:worker:start' );
$this ->setDescription('Start queue worker' );
}
protected function execute (InputInterface $input, OutputInterface $output) : int
{
$queueName = $input->getArgument(self ::QUEUE_NAME);
assert(is_string($queueName));
$this ->sqsWorker->start($queueName);
$output->writeln('Worker started' );
return 0 ;
}
}