Skip to content
Snippets Groups Projects
Select Git revision
  • 3082916-consider-all-routing
  • 8.x-2.x default
  • 3.x
  • 7.x-1.x
  • consider-all-routing-keys
  • 8.x-1.x
  • 3.0.0-alpha1
  • 8.x-2.1
  • 8.x-2.0
  • 8.x-1.1
  • 8.x-1.0
  • 8.x-1.0-beta1
  • 8.x-1.0-alpha1
  • 7.x-0.1
14 results

rabbitmq-3082916

  • Clone with SSH
  • Clone with HTTPS
  • Zach Bimson's avatar
    Zach Bimson authored and Conrad Lara committed
    Publish item for every given routing key (exchange.routing-key)
    9bd25253
    History

    RabbitMQ Integration

    Build Status Code Coverage Scrutinizer Code Quality

    INTRODUCTION

    REQUIREMENTS

    • RabbitMQ server needs to be installed and configured.
    • Drupal 8.4.0 or more recent must be configured with php-amqplib
      • go to the root directory of your site
      • edit composer.json (not core/composer.json)
      • insert "php-amqplib/php-amqplib": "^2.7" in the require section of the file.
      • Optional, but recommended: insert "ext-pcntl": "*" in the require section of the file. Ensure your PHP actually includes that standard extension. Without it, the timeout mechanism for the consumer service will not be available.
      • Save it.
      • update your vendor directory by typing composer update.

    INSTALLATION

    • Provide connection credentials as part of the $settings global variable in settings.local.php (see the example.settings.local.php provided)

        $settings['rabbitmq_credentials']['default'] = [
          'host' => 'localhost',
          'port' => 5672,
          'vhost' => '/',
          'username' => 'guest',
          'password' => 'guest',
        ];

    CONFIGURATION

    • Configure RabbitMQ as the queuing system for the queues you want RabbitMQ to maintain, either as the default queue service, default reliable queue service, or specifically for each queue:
      • If you want to set RabbitMQ as the default queue manager, then add the following to your settings.

        $settings['queue_default'] = 'queue.rabbitmq.default';
      • Alternatively you can also set for each queue to use RabbitMQ using one of these formats:

        $settings['queue_service_{queue_name}'] = 'queue.rabbitmq.default';
        $settings['queue_reliable_service_{queue_name}'] = 'queue.rabbitmq.default';

    CUSTOMIZATION

    Modules may override queue or exchange defaults built in a custom module by implementing config/install/rabbitmq.config.yml. See src/Queue/QueueBase.php and src/Tests/RabbitMqTestBase::setUp() for details.

    SSL

    It is similar to the normal connection array, but you need to add 2 extra array keys.

    This is an example of how settings.php should look like:

    $settings['rabbitmq_credentials']['default'] = [
      'host' => 'host',
      'port' => 5672,
      'vhost' => '/',
      'username' => 'guest',
      'password' => 'guest',
      'ssl' => [
        'verify_peer_name' => false,
        'verify_peer' => false,
        'local_pk' => '~/.ssh/id_rsa',
      ],
      'options' => [
        'connection_timeout' => 20,
        'read_write_timeout' => 20,
      ],
    ];