Adaptable queue layers
$queue = new Queue("queue name", $queueAdapter);
- AWS SQS https://github.com/wdalmut/queue-sqs
- RabbitMQ https://github.com/wdalmut/queue-rabbitmq
- MySQL https://github.com/wdalmut/queue-mysql
- Internal array https://github.com/wdalmut/queue-array
- send an issue/pr to add your adapter here...
list($receipt, $message) = $queue->receive();
// receive with options
list($receipt, $message) = $queue->receive(["timeout" => 15*60]);
$queue->send("my message");
// send with options
$queue->send("my message", ["delay" => 20]);
$queue->delete($receipt);
// delete with options
$queue->delete($receipt, ["delay" => 20]);
Just use functions
$queue = new Queue("https://sqs.amazon.com/39857/urs", $sqsAdapter);
$queue->send("message", toSQS(["delay" => 20]));
function toSQS(array options = []) {
$opts = [];
if (array_key_exists("delay", $options)) {
$opts["DelaySeconds"] = $options["delay"];
}
return $opts;
}
You have to implement 3 methods from Corley\Queue\QueueInterface
public function send($queueName, $message, array $options);
public function receive($queueName, array $options);
public function delete($queueName, $receipt, array $options);
As you can see the return value
- The send operation should return the queue send operation status
- The receive MUST return an array where the first parameter is the message receipt that is need for the remove operation
- The delete operation should return the queue delete operation status