community.rabbitmq.rabbitmq_publish – Publish a message to a RabbitMQ queue.

Note

This plugin is part of the community.rabbitmq collection (version 1.1.0).

You might already have this collection installed if you are using the ansible package. It is not included in ansible-core. To check whether it is installed, run ansible-galaxy collection list.

To install it, use: ansible-galaxy collection install community.rabbitmq.

To use it in a playbook, specify: community.rabbitmq.rabbitmq_publish.

Synopsis

  • Publish a message on a RabbitMQ queue using a blocking connection.

Requirements

The below requirements are needed on the host that executes this module.

  • pika

Parameters

Parameter

Comments

auto_delete

boolean

Set the queue to auto delete.

Choices:

  • no ← (default)

  • yes

body

string

The body of the message.

A body cannot be provided if a src is specified.

cafile

string

CA file used during connection to the RabbitMQ server over SSL.

If this option is specified, also certfile and keyfile must be specified.

certfile

string

Client certificate to establish SSL connection.

If this option is specified, also cafile and keyfile must be specified.

content_type

string

The content type of the body.

Default: “text/plain”

durable

boolean

Set the queue to be durable.

Choices:

  • no ← (default)

  • yes

exchange

string

The exchange to publish a message to.

exclusive

boolean

Set the queue to be exclusive.

Choices:

  • no ← (default)

  • yes

headers

dictionary

A dictionary of headers to post with the message.

Default: {}

host

string

The RabbitMQ server hostname or IP.

keyfile

string

Client key to establish SSL connection.

If this option is specified, also cafile and certfile must be specified.

password

string

The RabbitMQ password.

port

integer

The RabbitMQ server port.

proto

string

The protocol to use.

Choices:

  • amqps

  • amqp

queue

string

The queue to publish a message to. If no queue is specified, RabbitMQ will return a random queue name.

routing_key

string

The routing key.

src

aliases: file

path

A file to upload to the queue. Automatic mime type detection is attempted if content_type is not defined (left as default).

A src cannot be provided if a body is specified.

The filename is added to the headers of the posted message to RabbitMQ. Key being the filename, value is the filename.

url

string

An URL connection string to connect to the RabbitMQ server.

url and host/port/user/pass/vhost are mutually exclusive, use either or but not both.

username

string

The RabbitMQ username.

vhost

string

The virtual host to target.

If default vhost is required, use '%2F'.

Notes

Note

  • This module requires the pika python library https://pika.readthedocs.io/.

  • Pika is a pure-Python implementation of the AMQP 0-9-1 protocol that tries to stay fairly independent of the underlying network support library.

  • This module is tested against RabbitMQ. Other AMQP 0.9.1 protocol based servers may work but not tested/guaranteed.

  • The certificate authentication was tested with certificates created via https://www.rabbitmq.com/ssl.html#automated-certificate-generation and RabbitMQ configuration variables ssl_options.verify = verify_peer & ssl_options.fail_if_no_peer_cert = true.

Examples

- name: Publish a message to a queue with headers
  community.rabbitmq.rabbitmq_publish:
    url: "amqp://guest:[email protected]:5672/%2F"
    queue: 'test'
    body: "Hello world from ansible module rabbitmq_publish"
    content_type: "text/plain"
    headers:
      myHeader: myHeaderValue


- name: Publish a file to a queue
  community.rabbitmq.rabbitmq_publish:
    url: "amqp://guest:[email protected]:5672/%2F"
    queue: 'images'
    file: 'path/to/logo.gif'

- name: RabbitMQ auto generated queue
  community.rabbitmq.rabbitmq_publish:
    url: "amqp://guest:[email protected]:5672/%2F"
    body: "Hello world random queue from ansible module rabbitmq_publish"
    content_type: "text/plain"

- name: Publish with certs
  community.rabbitmq.rabbitmq_publish:
    url: "amqps://guest:[email protected]:5671/%2F"
    body: "Hello test queue from ansible module rabbitmq_publish via SSL certs"
    queue: 'test'
    content_type: "text/plain"
    cafile: 'ca_certificate.pem'
    certfile: 'client_certificate.pem'
    keyfile: 'client_key.pem'

Return Values

Common return values are documented here, the following are the fields unique to this module:

Key

Description

result

dictionary

Contains the status msg, content type content_type and the queue name queue.

Returned: success

Sample: “\u0027result\u0027: { \u0027content_type\u0027: \u0027text/plain\u0027, \u0027msg\u0027: \u0027Successfully published to queue test\u0027, \u0027queue\u0027: \u0027test\u0027 }\n”

Authors

  • John Imison (@Im0)