IronMQ Provider¶
The IronMQ Provider uses its Push Queues to notify subscribers of new queued messages without needing to continually poll the queue.
Using a Push Queue is optional with this provider and its possible to use simple
Pull queues by utilizing the provided Console Command (uecode:qpush::receive
)
to poll the queue.
Configuration¶
This provider relies on the Iron MQ classes
and needs to have the library included in your composer.json
file.
{
require: {
"iron-io/iron_mq": "^4.0"
}
}
Configuring the provider is very easy. It requires that you have already created an account and have a project id.
Iron.io provides free accounts for Development, which makes testing and using this service extremely easy.
Just include your OAuth token and project_id in the configuration and set your queue to use a provider using the ironmq driver.
#app/config.yml
uecode_qpush:
providers:
my_provider:
driver: ironmq
token: YOUR_TOKEN_HERE
project_id: YOUR_PROJECT_ID_HERE
host: YOUR_OPTIONAL_HOST_HERE
port: YOUR_OPTIONAL_PORT_HERE
version_id: YOUR_OPTIONAL_VERSION_HERE
queues:
my_queue_name:
provider: my_provider
options:
push_notifications: true
subscribers:
- { endpoint: http://example.com/qpush, protocol: http }
IronMQ Push Queues¶
If you set push_notifications
to true
in your queue config, this provider
will automatically create your Queue as a Push Queue and loop over your list of subscribers
,
adding them to your Queue.
This provider only supports http
and https
subscribers. This provider also uses the
multicast
setting for its Push Queues, meaning that all subscribers
are notified of
the same new messages.
You can chose to have your IronMQ queues work as a Pull Queue by setting push_notifications
to false
.
This would require you to use the uecode:qpush:receive
Console Command to poll the queue.
Overriding Queue Options¶
It’s possible to override the default queue options that are set in your config file when sending or receiving messages.
Publishing
The publish()
method takes an array as a second argument. For the IronMQ
Provider you are able to change the options listed below per publish.
Option | Description | Default Value |
---|---|---|
message_delay |
Time in seconds before a published Message is available to be read in a Queue | 0 |
message_timeout |
Time in seconds a worker has to delete a Message before it is available to other workers | 30 |
message_expiration |
Time in seconds that Messages may remain in the Queue before being removed | 604800 |
$message = ['foo' => 'bar'];
// Optional config to override default options
$options = [
'message_delay' => 1,
'message_timeout' => 1,
'message_expiration' => 60
];
$this->get('uecode_qpush.my_queue_name')->publish($message, $options);
Receiving
The receive()
method takes an array as a second argument. For the AWS Provider
you are able to change the options listed below per attempt to receive messages.
Option | Description | Default Value |
---|---|---|
messages_to_receive |
Maximum amount of messages that can be received when polling the queue | 1 |
message_timeout |
Time in seconds a worker has to delete a Message before it is available to other workers | 30 |
// Optional config to override default options
$options = [
'messages_to_receive' => 3,
'message_timeout' => 10
];
$messages = $this->get('uecode_qpush.my_queue_name')->receive($options);
foreach ($messages as $message) {
echo $message->getBody();
}