AMQP

Installation

If you use Codeception installed using composer, install this module with the following command:

composer require --dev codeception/module-amqp

Alternatively, you can enable AMQP module in suite configuration file and run

codecept init upgrade4

This module was bundled with Codeception 2 and 3, but since version 4 it is necessary to install it separately.
Some modules are bundled with PHAR files.
Warning. Using PHAR file and composer in the same project can cause unexpected errors.

Description

This module interacts with message broker software that implements the Advanced Message Queuing Protocol (AMQP) standard. For example, RabbitMQ (tested).

To use this module with Composer you need "php-amqplib/php-amqplib": "~2.4" package.

Config

  • host: localhost - host to connect
  • username: guest - username to connect
  • password: guest - password to connect
  • vhost: ‘/’ - vhost to connect
  • cleanup: true - defined queues will be purged before running every test.
  • queues: [mail, twitter] - queues to cleanup
  • single_channel - create and use only one channel during test execution

Example

modules: enabled: - AMQP: host: 'localhost' port: '5672' username: 'guest' password: 'guest' vhost: '/' queues: [queue1, queue2] single_channel: false

Public Properties

  • connection - AMQPStreamConnection - current connection

Actions

bindQueueToExchange

Binds a queue to an exchange

This is an alias of method queue_bind of PhpAmqpLib\Channel\AMQPChannel.

<?php
$I->bindQueueToExchange(
    'nameOfMyQueueToBind', // name of the queue
    'transactionTracking.transaction', // exchange name to bind to
    'your.routing.key' // Optionally, provide a binding key
)
  • param string $queue
  • param string $exchange
  • param string $routing_key
  • param bool $nowait
  • param array $arguments
  • param int $ticket
  • return mixed|null

declareExchange

Declares an exchange

This is an alias of method exchange_declare of PhpAmqpLib\Channel\AMQPChannel.

<?php
$I->declareExchange(
    'nameOfMyExchange', // exchange name
    'topic' // exchange type
)
  • param string $exchange
  • param string $type
  • param bool $passive
  • param bool $durable
  • param bool $auto_delete
  • param bool $internal
  • param bool $nowait
  • param array $arguments
  • param int $ticket
  • return mixed|null

declareQueue

Declares queue, creates if needed

This is an alias of method queue_declare of PhpAmqpLib\Channel\AMQPChannel.

<?php
$I->declareQueue(
    'nameOfMyQueue', // exchange name
)
  • param string $queue
  • param bool $passive
  • param bool $durable
  • param bool $exclusive
  • param bool $auto_delete
  • param bool $nowait
  • param array $arguments
  • param int $ticket
  • return mixed|null

dontSeeQueueIsEmpty

Checks if queue is not empty.

<?php
$I->pushToQueue('queue.emails', 'Hello, davert');
$I->dontSeeQueueIsEmpty('queue.emails');
?>
  • param string $queue

grabMessageFromQueue

Takes last message from queue.

<?php
$message = $I->grabMessageFromQueue('queue.emails');
?>
  • param string $queue
  • return \PhpAmqpLib\Message\AMQPMessage

purgeAllQueues

Purge all queues defined in config.

<?php
$I->purgeAllQueues();
?>

purgeQueue

Purge a specific queue defined in config.

<?php
$I->purgeQueue('queue.emails');
?>
  • param string $queueName

pushToExchange

Sends message to exchange by sending exchange name, message and (optionally) a routing key

<?php
$I->pushToExchange('exchange.emails', 'thanks');
$I->pushToExchange('exchange.emails', new AMQPMessage('Thanks!'));
$I->pushToExchange('exchange.emails', new AMQPMessage('Thanks!'), 'severity');
?>
  • param string $exchange
  • param string|\PhpAmqpLib\Message\AMQPMessage $message
  • param string $routing_key

pushToQueue

Sends message to queue

<?php
$I->pushToQueue('queue.jobs', 'create user');
$I->pushToQueue('queue.jobs', new AMQPMessage('create'));
?>
  • param string $queue
  • param string|\PhpAmqpLib\Message\AMQPMessage $message

scheduleQueueCleanup

Add a queue to purge list

  • param string $queue

seeMessageInQueueContainsText

Checks if message containing text received.

This method drops message from queue This method will wait for message. If none is sent the script will stuck.

<?php
$I->pushToQueue('queue.emails', 'Hello, davert');
$I->seeMessageInQueueContainsText('queue.emails','davert');
?>
  • param string $queue
  • param string $text

seeNumberOfMessagesInQueue

Checks that queue have expected number of message

<?php
$I->pushToQueue('queue.emails', 'Hello, davert');
$I->seeNumberOfMessagesInQueue('queue.emails',1);
?>
  • param string $queue
  • param int $expected

seeQueueIsEmpty

Checks that queue is empty

<?php
$I->pushToQueue('queue.emails', 'Hello, davert');
$I->purgeQueue('queue.emails');
$I->seeQueueIsEmpty('queue.emails');
?>
  • param string $queue
  • param int $expected

© 2011 Michael Bodnarchuk and contributors
Licensed under the MIT License.
https://codeception.com/docs/modules/AMQP