Queue
Adaptable queue layers, (*1)
, (*2)
Create
$queue = new Queue("queue name", $queueAdapter);
Check also the wiki, (*3)
Available Adapters
Receive from queue
list($receipt, $message) = $queue->receive();
// receive with options
list($receipt, $message) = $queue->receive(["timeout" => 15*60]);
Send in queue
$queue->send("my message");
// send with options
$queue->send("my message", ["delay" => 20]);
Delete from queue
$queue->delete($receipt);
// delete with options
$queue->delete($receipt, ["delay" => 20]);
Manage different adapters options
Just use functions, (*4)
$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;
}
Queue Interface (for adapters)
You have to implement 3 methods from Corley\Queue\QueueInterface
, (*5)
public function send($queueName, $message, array $options);
public function receive($queueName, array $options);
public function delete($queueName, $receipt, array $options);
Tips on return values (receive
message)
As you can see the return value, (*6)
- 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