RabbitMq

Library version:2.0.1
Library scope:global
Named arguments:supported

Introduction

Library for working with RabbitMQ.

Dependencies

pika https://pypi.org/project/pika/
requests https://pypi.python.org/pypi/requests
robot framework http://robotframework.org

Example

Settings Value
Library RabbitMq
Library Collections
Test Cases Action Argument Argument Argument Argument Argument
Simple
Create Rabbitmq Connection my_host_name 15672 5672 guest guest alias=rmq
${overview}= Overview
Log Dictionary ${overview}
Close All Rabbitmq Connections

Shortcuts

Binding Exchange With Queue · Channels · Close All Rabbitmq Connections · Connections · Create Exchange · Create Queue · Create Rabbitmq Connection · Delete Exchange · Delete Queue · Disconnect From Rabbitmq · Enable Consuming Messages In Queue · Enable Message Sending Confirmation · Exchanges · Get Binding Exchange With Queue List · Get Exchange · Get Exchanges On Vhost · Get Message · Get Name Of All Connections · Get Names Of All Exchanges · Get Names Of Exchanges On Vhost · Get Names Of Queues On Vhost · Get Queue · Get Queues On Vhost · Is Alive · Is Exchange Exist · Is Queue Exist · Nodes · Overview · Process Published Message In Queries · Publish Message · Purge Queue · Queues · Switch Rabbitmq Connection · Unbind Queue · Vhosts

Keywords

Keyword Arguments Documentation
Binding Exchange With Queue exchange_name, queue_name, routing_key=, arguments=None

Create binding of exchange with queue.

Args:

exchange_name - exchange name;

queue_name - queue name;

routing_key - routing key;

arguments - additional arguments in dictionary format;

Example:

${list}= Create List str1 ${FALSE}
${args}= Create Dictionary arg1=value1 arg2=${list}
Binding Exchange With Queue exchange_name=testExchange queue_name=testQueue routing_key=key arguments=${args}
Channels

List of open channels.

Returns:

List of open channels in JSON format. Raises:

raise HTTPError if the HTTP request returned an unsuccessful status code.

Close All Rabbitmq Connections

Close all RabbitMq connections.

This keyword is used to close all connections only in case if there are several open connections. Do not use keywords Disconnect From Rabbitmq and Close All Rabbitmq Connections together.

After this keyword is executed the index returned by Create Rabbitmq Connection starts at 1.

Example:

Create Rabbitmq Connection my_host_name 15672 5672 guest guest alias=rmq
Close All Rabbitmq Connections
Connections

List of open connections.

Returns:

List of open connections in JSON format.

Raises:

raise HTTPError if the HTTP request returned an unsuccessful status code.

Create Exchange exchange_name, exchange_type, auto_delete=None, durable=None, arguments=None

Create exchange.

The parameter arguments is passed as dictionary.

When defining "alternate-exchange" argument in the dictionary it is necessary to pass exchange's alternative name (if message cannot be routed it will be sent to alternative exchange).

Args:

exchange_name - exchange name;

exchange_type - exchange type (direct, topic, headers, fanout);

auto_delete - delete exchange when all queues finish working with it (true, false);

durable - exchange survives when broker restarts (true, false);

arguments - additional arguments in dictionary format;

Example:

${list}= Create List list_value ${TRUE} 18080
${args}= Create Dictionary arg1=value1 arg2=${list} alternate-exchange=amq.fanout
Create Exchange exchange_name=testExchange exchange_type=fanout auto_delete=false durable=true arguments=${args}
Create Queue queue_name, auto_delete=None, durable=None, node=None, arguments=None

Create queue.

Args:

queue_name - queue name (quoted with requests.utils.quote);

auto_delete - delete queue when last subscriber unsubscribes from queue (true, false);

durable - queue survives when broker restarts (true, false);

node - RabbitMq node name;

arguments - additional arguments in dictionary format;

Example:

${list}= Create List list_value ${FALSE} 15240
${args}= Create Dictionary arg1=value1 arg2=${list}
Create Queue queue_name=testQueue auto_delete=false durable=true node=rabbit@primary arguments=${args}
Create Rabbitmq Connection host, http_port, amqp_port, username, password, alias, vhost

Connect to RabbitMq server.

Args:

host - server host name;

http_port - port number of http-connection

amqp_port - port number of amqp-connection

username - user name;

password - user password;

alias - connection alias;

vhost - virtual host name;

Returns:

Current connection index.

Raises:

socket.error if connection cannot be created.

Example:

Create Rabbitmq Connection my_host_name 15672 5672 guest guest alias=rmq vhost=/
Delete Exchange exchange_name

Delete exchange.

Args:

exchange_name - exchange name;

Example:

Delete Exchange exchange_name=testExchange
Delete Queue queue_name

Delete queue.

Args:

queue_name - queue name;

Example:

Delete Queue queue_name=testQueue
Disconnect From Rabbitmq

Close current RabbitMq connection.

Example:

Create Rabbitmq Connection my_host_name 15672 5672 guest guest alias=rmq
Disconnect From Rabbitmq
Enable Consuming Messages In Queue queue_name, count, requeue, consumed_list

Enable consuming messages in queue.

Args:

queue_name - queue name;

count - number of messages to consume;

requeue - re-placing consumed message in the queue with setting of redelivered attribute (true, false);

consumed_list - list of delivery_tag of all consumed messages;

Returns:

Identifier of message handler in the queue.

Example:

${list}= Create List
Enable Consuming Messages In Queue queue_name=${QUEUE_NAME} count=1 requeue=${FALSE} consumed_list=${list}
Log List ${list}
Enable Message Sending Confirmation confirmed_list, activate=True

Enable processing of successful message sending confirmation in the exchange servers.

If message is successfully sent to confirmed_list, delivery_tag of the message is added.

Args:

confirmed_list - list in which all the delivery tag of sent messages are saved;

activate - indicates that message sending listener should start;

Example:

${list}= Create List
Enable Message Sending Confirmation confirmed_list=${list}
Publish Message exchange_name=${EXCHANGE_NAME} routing_key=${ROUTING_KEY} payload=message body
Process Published Message In Queries
Length Should Be ${list} 1
Exchanges

List of exchanges.

Returns:

List of exchanges in JSON format.

Raises:

raise HTTPError if the HTTP request returned an unsuccessful status code.

Example:

${exchanges}= Exchanges
Log List ${exchanges}
${item}= Get From list ${exchanges} 1
${name}= Get From Dictionary ${q} name

=>

List length is 8 and it contains following items:

0 {u'name': u'', u'durable': True, u'vhost': u'/', u'internal': False, u'message_stats': [], u'arguments': {}, u'type': u'direct', u'auto_delete': False}
1 {u'name': u'amq.direct', u'durable': True, u'vhost': u'/', u'internal': False, u'message_stats': [], u'arguments': {}, u'type': u'direct', u'auto_delete': False}

...

${name} = amq.direct

Get Binding Exchange With Queue List exchange_name, queue_name, vhost=%2F

Get information about bindings of exchange with queue.

Parameters are quoted with requests.utils.quote.

Args:

exchange_name - exchange name;

queue_name - queue name;

vhost - virtual host name (quoted with requests.utils.quote);

Returns:

List of bindings of exchange with queue in JSON format.

Raises:

raise HTTPError if the HTTP request returned an unsuccessful status code.

Example:

@{bind}= Get Binding Exchange With Queue List exchange_name=testExchange queue_name=testQueue vhost=/
Log Dictionary ${bind[0]}
Log ${bind[0]["vhost"]}

=>

Dictionary size is 7 and it contains following items:

arguments {u'arg1': u'value1', u'arg2': [u'str1', False]}
destination testQueue
destination_type queue
properties_key ~2_oPmnDANCoVhkSJTkivZw
routing_key:
source testExchange
vhost: /
Get Exchange exchange_name, vhost=%2F

Get information about exchange. Parameters are quoted with requests.utils.quote.

Args:

exchange_name - exchange name;

vhost - virtual host name;

Returns:

Dictionary with information about exchange.

Raises:

raise HTTPError if the HTTP request returned an unsuccessful status code.

Example:

${exchange}= Get Exchange exchange_name=testExchange vhost=/
Log Dictionary ${exchange}
${value}= Get From Dictionary ${exchange} name
Log ${value}

=>

Dictionary size is 9 and it contains following items:

arguments {u'arg1': u'value1', u'arg2': [u'list_value', True, u'18080'], u'alternate-exchange': u'amq.topic'}
auto_delete False
durable True
incoming []
internal False
name testExchange
outgoing []
type fanout
vhost /

${value} = testExchange

Get Exchanges On Vhost vhost=%2F

List of exchanges on virtual host.

Returns:

List of exchanges in JSON format.

Raises:

raise HTTPError if the HTTP request returned an unsuccessful status code.

Args:

vhost - virtual host name (quoted with requests.utils.quote);

Get Message queue_name, count, requeue, encoding, truncate=None, vhost=%2F, ackmode=ack_requeue_true

Get message from the queue.

Args:

queue_name - queue name;

count - number of messages to get;

requeue - re-placing received message in the queue with setting of redelivered attribute (true, false);

encoding - message encoding (auto, base64);

truncate - size of the message split (in bytes) in case it is greater than specified parameter (optional);

vhost - virtual host name (quoted with requests.utils.quote);

ackmode - determines whether the messages will be removed from the queue. If ackmode is ack_requeue_true or reject_requeue_true they will be requeued. If ackmode is ack_requeue_false or reject_requeue_false they will be removed;

Returns:

List with information about returned messages in dictionary format. Body of the message in the dictionary is "payload" key.

Raises:

raise HTTPError if the HTTP request returned an unsuccessful status code.

Example:

${msg}= Get Message queue_name=testQueue count=2 requeue=false encoding=auto truncate=50000 vhost=/
Log List ${msg}

=>

List length is 5 and it contains following items:

0 {u'payload': u'message body 0', u'exchange': u'testExchange', u'routing_key': u'testQueue', u'payload_bytes': 14, u'message_count': 4, u'payload_encoding': u'string', u'redelivered': False, u'properties': []}
1 {u'payload': u'message body 1', u'exchange': u'testExchange', u'routing_key': u'testQueue', u'payload_bytes': 14, u'message_count': 3, u'payload_encoding': u'string', u'redelivered': False, u'properties': []}
...
Get Name Of All Connections

List with names of all open connections.

Returns:

List with names of all open connections.

Get Names Of All Exchanges

List of names of all exchanges.

Returns:

List of names of all exchanges.

Example:

${names}= Get Names Of All Exchanges
Log List ${names}

=>

List has one item:
amq.direct
Get Names Of Exchanges On Vhost vhost=%2F

List of exchanges names on virtual host.

Args:

vhost: virtual host name (quoted with requests.utils.quote);

Returns:

List of exchanges names.

Example:

${names}= Get Names Of Exchanges On Vhost
Log List ${names}

=>

List has one item:
federation: ex2 -> rabbit@server.net.ru
Get Names Of Queues On Vhost vhost=%2F

List of queues names on virtual host.

Args:

vhost: virtual host name (quoted with requests.utils.quote);

Returns:

List of queues names.

Example:

${names}= Get Names Of Queues On Vhost
Log List ${names}

=>

List has one item:
federation: ex2 -> rabbit@server.net.ru
Get Queue queue_name, vhost=%2F

Get information about queue.

Parameters are quoted with requests.utils.quote.

Args:

queue_name - queue name;

vhost - virtual host name (quoted with requests.utils.quote);

Returns:

Dictionary with information about queue.

Raises:

raise HTTPError if the HTTP request returned an unsuccessful status code.

Example:

${queue}= Get Queue queue_name=testQueue vhost=/
Log Dictionary ${queue}
${value}= Get From Dictionary ${queue} name
Log ${value}

=>

Dictionary size is 23 and it contains following items:

arguments {u'arg1': u'value1', u'arg2': [u'list_value', False, u'15240']}
auto_delete False
backing_queue_status {u'q1': 0, u'q3': 0, u'q2': 0, u'q4': 0, u'avg_ack_egress_rate': 0.0, u'ram_msg_count': 0, u'ram_ack_count': 0, u'len': 0, u'persistent_count': 0, u'target_ram_count': u'infinity', u'next_seq_id': 0, u'delta': [u'delta', u'undefined', 0, u'undefined'], u'pending_acks': 0, u'avg_ack_ingress_rate': 0.0, u'avg_egress_rate': 0.0, u'avg_ingress_rate': 0.0}
consumer_details []
consumer_utilisation
consumers 0
deliveries []
durable True
exclusive_consumer_tag
idle_since 2014-09-16 7:37:35
incoming [{u'stats': {u'publish_details': {u'rate': 0.0}, u'publish': 5}, u'exchange': {u'vhost': u'/', u'name': u'testExchange'}}]
memory 34528
messages 0
messages_details {u'rate': 0.0}
messages_ready 0
messages_ready_details {u'rate': 0.0}
messages_unacknowledged 0
messages_unacknowledged_details {u'rate': 0.0}
name testQueue
node rabbit@primary
policy
state running
vhost /

${value} = testQueue

Get Queues On Vhost vhost=%2F

List of queues on virtual host.

Args:

vhost - virtual host name (quoted with requests.utils.quote);

Returns:

List of queues in JSON format.

Raises:

raise HTTPError if the HTTP request returned an unsuccessful status code.

Is Alive

Rabbitmq health check.

Sends GET-request : 'http://<host>:<port>/api/' and checks response status code.

Returns:

bool True if return code is 200. bool False in all other cases.

Raises:

RequestException if it is not possible to send GET-request.

Example:

${live}= Is Alive

=>

True

Is Exchange Exist name, exchange_type

Check if exchange exists

Args:

name - exchange name;

exchange_type - exchange type;

Example:

${is_exist}= Is Exchange Exist name='name' exchange_type='direct'
Should Be True ${is_exist}

Returns:

True if exchange exists otherwise False

Is Queue Exist name

Check if queue exists

Args:

name - queue name

Example:

${exist}= Is Queue Exist name='queue'
Should Be True ${exist}

Returns:

True if queue exists otherwise False

Nodes

List of nodes.

Returns:

List of nodes in JSON format.

Raises:

raise HTTPError if the HTTP request returned an unsuccessful status code.

Overview

Information about RabbitMq server.

Returns:

Dictionary with information about the server.

Raises:

raise HTTPError if the HTTP request returned an unsuccessful status code.

Example:

${overview}= Overview
Log Dictionary ${overview}
${version}= Get From Dictionary ${overview} rabbitmq_version

=>

Dictionary size is 14 and it contains following items:

cluster_name rabbit@primary
contexts [{u'node': u'rabbit@primary', u'path': u'/', u'description': u'RabbitMQ Management', u'port': 15672}, {u'node': u'rabbit@primary', u'path': u'/web-stomp-examples', u'description': u'WEB-STOMP: examples', u'port': 15670}]
erlang_full_version Erlang R16B03 (erts-5.10.4) [source] [64-bit] [async-threads:30] [kernel-poll:true]
erlang_version R16B03
exchange_types [{u'enabled': True, u'name': u'fanout', u'description': u'AMQP fanout exchange, as per the AMQP specification'}, {u'internal_purpose': u'federation', u'enabled': True, u'name': u'x-federation-upstream', u'description': u'Federation upstream helper exchange'}, {u'enabled': True, u'name': u'direct', u'description': u'AMQP direct exchange, as per the AMQP specification'}, {u'enabled': True, u'name': u'headers', u'description': u'AMQP headers exchange, as per the AMQP specification'}, {u'enabled': True, u'name': u'topic', u'description': u'AMQP topic exchange, as per the AMQP specification'}, {u'enabled': True, u'name': u'x-consistent-hash', u'description': u'Consistent Hashing Exchange'}]
listeners [{u'node': u'rabbit@primary', u'ip_address': u'::', u'protocol': u'amqp', u'port': 5672}, {u'node': u'rabbit@primary', u'ip_address': u'::', u'protocol': u'clustering', u'port': 25672}, {u'node': u'rabbit@primary', u'ip_address': u'::', u'protocol': u'mqtt', u'port': 1883}, {u'node': u'rabbit@primary', u'ip_address': u'::', u'protocol': u'stomp', u'port': 61613}]
management_version 3.3.0
message_stats {u'publish_details': {u'rate': 0.0}, u'confirm': 85, u'deliver_get': 85, u'publish': 85, u'confirm_details': {u'rate': 0.0}, u'get_no_ack': 85, u'get_no_ack_details': {u'rate': 0.0}, u'deliver_get_details': {u'rate': 0.0}}
node rabbit@primary
object_totals {u'connections': 0, u'channels': 0, u'queues': 2, u'consumers': 0, u'exchanges': 10}
queue_totals {u'messages_details': {u'rate': 0.0}, u'messages': 0, u'messages_ready': 0, u'messages_ready_details': {u'rate': 0.0}, u'messages_unacknowledged': 0, u'messages_unacknowledged_details': {u'rate': 0.0}}
rabbitmq_version 3.3.0
statistics_db_node rabbit@primary
statistics_level fine

${version} = 3.3.0

Process Published Message In Queries waiting=1

Send processing of published message in queues to handler.

May end with exception if handler is not installed or there are no messages in queue.

Args:

waiting - server response timeout.

Publish Message exchange_name, routing_key, payload, props=None

Publish message to the queue.

Args:

exchange_name - exchange name;

routing_key - routing key (quoted with requests.utils.quote);

payload - payload message;

props - additional arguments in dictionary format;

Includes such keys as:

  • content-type - message content type (shortstr);
  • content_encoding - message encoding type (shortstr);
  • application_headers - message headers table, a dictionary with keys of type string and values of types string | int | Decimal | datetime | dict values (table);
  • delivery_mode - Non-persistent (1) or persistent (2) (octet);
  • priority - message priority from 0 to 9 (octet);
  • correlation_id - message identifier to which current message responds (shortstr);
  • reply_to - commonly used to name a reply queue (shortstr);
  • expiration - expiration date of message (shortstr);
  • message_id - message identifier (shortstr);
  • timestamp - timestamp of sending message (shortstr);
  • type - message type (shortstr);
  • user_id - user-sender identifier (shortstr);
  • app_id - application identifier (shortstr);
  • cluster_id - cluster identifier (shortstr);

Attention:

When using library in robot-files parameters (props) must be cast to the correct type.

Example:

${delivery_mode}= Convert To Integer 2

This is due to the feature of RabbitMq library.

Example:

${list_headers}= Create List head_value 2 ${TRUE}
${headers_dict}= Create Dictionary head1=val1 head2=${list_headers}
${prop_dict}= Create Dictionary application_headers=${headers_dict} content-type=text/plain priority=1 expiration=1410966000 message_id=101 user_id=guest
Publish Message exchange_name=testExchange routing_key=testQueue payload=message body props=${prop_dict}
Purge Queue queue_name

Purge queue.

Args:

queue_name - queue name;

Queues

List of queues.

Returns:

List of queues in JSON format.

Raises:

raise HTTPError if the HTTP request returned an unsuccessful status code.

Switch Rabbitmq Connection alias

Switch between active RabbitMq connections using their index or alias.

Alias is set in keyword Create Rabbitmq Connection which also returns the index of connection.

Args:

alias - connection alias;

Returns:

Index of previous connection.

Example:

Create Rabbitmq Connection my_host_name_1 15672 5672 guest guest alias=rmq1
Create Rabbitmq Connection my_host_name_2 15672 5672 guest guest alias=rmq2
Switch Rabbitmq Connection rmq1
${live}= Is alive
Switch Rabbitmq Connection rmq2
${live}= Is alive
Close All Rabbitmq Connections
Unbind Queue queue_name, exchange_name, routing_key=, arguments=None

Unbind queue from exchange.

Args:

queue_name - queue name;

exchange_name - exchange name;

routing_key - routing key;

arguments - additional arguments in dictionary format;

Vhosts

List of virtual hosts. Returns:

List of virtual hosts in JSON format.

Raises:

raise HTTPError if the HTTP request returned an unsuccessful status code.