The transport uses Gearman job manager. The transport uses Gearman PHP extension internally.
$ composer require enqueue/gearman
<?php
use Enqueue\Gearman\GearmanConnectionFactory;
// connects to localhost:4730
$factory = new GearmanConnectionFactory();
// same as above
$factory = new GearmanConnectionFactory('gearman://');
// connects to example host and port 5555
$factory = new GearmanConnectionFactory('gearman://example:5555');
// same as above but configured by array
$factory = new GearmanConnectionFactory([
'host' => 'example',
'port' => 5555
]);
<?php
/** @var \Enqueue\Gearman\GearmanContext $psrContext */
$fooTopic = $psrContext->createTopic('aTopic');
$message = $psrContext->createMessage('Hello world!');
$psrContext->createProducer()->send($fooTopic, $message);
<?php
/** @var \Enqueue\Gearman\GearmanContext $psrContext */
$fooQueue = $psrContext->createQueue('aQueue');
$message = $psrContext->createMessage('Hello world!');
$psrContext->createProducer()->send($fooQueue, $message);
<?php
/** @var \Enqueue\Gearman\GearmanContext $psrContext */
$fooQueue = $psrContext->createQueue('aQueue');
$consumer = $psrContext->createConsumer($fooQueue);
$message = $consumer->receive(2000); // wait for 2 seconds
$message = $consumer->receiveNoWait(); // fetch message or return null immediately
// process a message
$consumer->acknowledge($message);
// $consumer->reject($message);