RabbitMQ
Strictly speaking, AMQP (and 0.9.1 version used) is a protocol, not a full-fledged driver, so you can use any servers that support this protocol (on your own, only rabbitmq was tested), such as:
However, it is recommended to use RabbitMQ as the main implementation, and reliable performance with other implementations is not guaranteed.
To install and configure the RabbitMQ, use the corresponding documentation page.
Every messages pushed to the RabbitMQ server uses the publiser confirms. This means that the message is only considered as sent when the server confirms it. This is a reliable way to ensure that the message is delivered to the server.
After that, you should configure the connection to the server in the amqp
section. This configuration section contains exactly one addr
key with a connection DSN. The TLS
configuration sits in the amqp.tls
section and consists of the following options:
key
: path to a key file.cert
: path to a certificate file.root_ca
: CA certificate path, used with theclient_auth_type
.client_auth_type
: also known asmTLS
. Possible values are:request_client_cert
,require_any_client_cert
,verify_client_cert_if_given
,require_and_verify_client_cert
,no_client_certs
.
You should also configure rabbitMQ
with TLS
support: link.
Upon establishing a connection to the server, you can create a new queue that utilizes this connection and encompasses the queue settings, including those specific to AMQP.
Configuration
Configuration options
Here is a detailed description of each of the amqp-specific options:
Priority
priority
- job priority. A lower value corresponds to a higher priority. For instance, consider two pipelines: pipe1
with a priority of 1
and pipe10
with a priority of 10
. Workers will only take jobs from pipe10
if all the jobs from pipe1
have been processed.
Prefetch
prefetch
- rabbitMQ QoS prefetch. See also "prefetch-size". Note that if you use a large number of workers and a small prefetch
number, some of the workers may not be loaded with messages (jobs) due to the blocking nature of the prefetch. This would result in poor RoadRunner performance and waste of resources.
Queue
queue
- required, AMQP internal (inside the driver) queue name.
Exchange
exchange
- required, rabbitMQ exchange name.
See also AMQP model documentation section.
Exchange type
exchange_type
- rabbitMQ exchange type. May be one of direct
, topics
,headers
or fanout
.
Routing key
routing_key
- queue's routing key. Required to push the Job
.
Exclusive
exclusive
- applied to the queue, exclusive queues cannot be redeclared. If set to true, and you attempt to declare the same pipeline twice, it will result in an error.
Multiple ack
multiple_ack
- this delivery, along with all prior unacknowledged deliveries on the same channel, will be acknowledged. This feature is beneficial for batch processing of deliveries and is applicable only for Ack
, not for Nack
.
Requeue on fail
requeue_on_fail
- requeue on Nack (by RabbitMQ).
Read more about Nack in RabbitMQ official docs: https://www.rabbitmq.com/confirms.html#consumer-nacks-requeue
Queue headers
queue_headers
- used to pass arguments to the Queue
create method, such as x-queue-mode: lazy
Durable
durable
- create a durable queue.
Default: false
Delete queue on stop
delete_queue_on_stop
- delete the queue when the pipeline is stopped.
Default: false
Redial timeout
redial_timeout
- Redial timeout (in seconds). How long to try to reconnect to the AMQP server.
Exchange durable
exchange_durable
- Durable exchange (rabbitmq option).
Default: false
Exchange auto delete
exchange_auto_delete
- Auto-delete (exchange is deleted when last queue is unbound from it): link.
Default: false
Queue auto delete
queue_auto_delete
- Auto-delete (queue that has had at least one consumer is deleted when last consumer unsubscribes): link.
Default: false
Consumer id
consumer_id
- string that is unique and scoped for all consumers on this channel.
Last updated