# Конфигурация

Настройки выполняются в файле /bitrix/.settings.php или /bitrix/.settings_extra.php.

# Пример конфигурации

// bitrix/.settings_extra.php
return [
    // ...
   'bsi.queue' => [
       'value' => [
           'buses' => ['command_bus', 'query_bus'],
           'default_bus' => 'command_bus',
           'transports' => [
               'sync' => 'sync://',
               'async' => [
                   'dsn' => 'redis://redis:6379/messages',
                   'retry_strategy' => [
                       'max_retries' => 3,
                       'multiplier' => 2,
                   ],
               ],
               'failed' => 'bitrix://default?queue_name=failed',
           ],
           'failure_transport' => 'failed',
           'routing' => [
               'App\Message\TestMessage' => 'async',
           ],
           'monitoring' => [
               'enabled' => true,
               'adapter' => 'bitrix',
               'buses' => ['command_bus'],
           ],
       ],
       'readonly' => true,
   ],
    // ...
];

# Параметры

# buses

  • Тип: array
  • По умолчанию:
[
    'buses' => [
        'default' => [
            'default_middleware' => true,
            'middleware' => [],
        ],
    ],
];

Шины для передачи сообщений.

# default_bus

  • Тип: string
  • По умолчанию: null

Имя шина по умолчанию. При наличии более одной шины - обязательно (иначе, автоматически выбирается первая).

# transports

  • Тип: array
  • По умолчанию: []

Транспорты для отправки и получения сообщений.

# failure_transport

  • Тип: string
  • По умолчанию: null

Имя транспорта для отправки и получения неудачных сообщений.
По умолчанию, ошибочные сообщения повторно обрабатываются несколько раз (max_retries) и после этого "отбрасываются". С помощью failure_transport можно перенаправить такие сообщения в отдельный транспорт для повторной обработки.

Пример:

[
    'failure_transport' => 'failed',
    'transports' => [
       'async' => [
           'dsn' => 'redis://redis:6379/messages',
           'retry_strategy' => [
               'max_retries' => 3,
               'multiplier' => 2,
           ],
       ],
       'failed' => 'bitrix://default?queue_name=failed',
    ],
];

# routing

  • Тип: array
  • По умолчанию: []

Маршрутизация сообщений в нужный транспорт. Можно указать несколько транспортов для одного сообщения.

Пример:

[
    'routing' => [
        'App\Message\AbstractAsyncMessage' => 'async',
        'App\Message\AsyncMessageInterface' => 'async',
        'My\Message\ToBeSentToTwoSenders' => ['async', 'audit'],
    ],
];

# monitoring.enabled

  • Тип: bool
  • По умолчанию: true

Активность мониторинга.

# monitoring.adapter

  • Тип: string
  • По умолчанию: 'bitrix'

Адаптер для хранения и вывода статистики.

# monitoring.buses

  • Тип: array
  • По умолчанию: []

Имена шин, которые отслеживает мониторинг. Если передан пустой массив, то отслеживаются все шины.

Ссылки по теме: