MESSENGER_INTERNAL_ASYNC_TRANSPORT_DSN=amqp://guest:guest@localhost:5672/%2f/suitecrm_async
Описание актуально для версий SuiteCRM 8.10.0+
В разделе перечислены переменные окружения и параметры системной конфигурации, связанные с Symfony Messenger и асинхронными заданиями. Переменные окружения задаются в файле .env.local, расположенном в корневой папке SuiteCRM. Параметры системной конфигурации задаются в файле config.php, расположенном в папке public/legacy/.
Никогда не редактируйте файл .env напрямую — он перезаписывается при обновлении. Всегда создавайте или редактируйте файл .env.local, чтобы переопределить значения. Файл .env.local имеет приоритет над файлом .env.
Эти переменные определяют, какой брокер сообщений использует система для постановки фоновых заданий в очередь.
Подключение к основной очереди асинхронных заданий.
Значение по умолчанию |
|
Расположение |
.env.local |
По умолчанию в качестве брокера сообщений используется Doctrine (текущая база данных) . Сообщения хранятся в таблице messenger_messages с именем очереди internal_async. Это рекомендуемая и проверенная конфигурация, подходящая для большинства установок.
Поскольку SuiteCRM использует Symfony Messenger, также доступны альтернативные транспортные протоколы, такие как AMQP (RabbitMQ), Redis (RESP) и другие. Подробную информацию обо всех поддерживаемых транспортных протоколах см. в документации Symfony Messenger.
| Тип | Формат DSN | Примечания |
|---|---|---|
Doctrine |
|
По умолчанию. Использует вашу существующую базу данных. Дополнительная инфраструктура не требуется. |
AMQP |
|
RabbitMQ. Для высокопроизводительных или распределенных конфигураций. |
Redis |
|
Очередь на основе Redis. Быстрая, в оперативной памяти. |
Пример с использованием RabbitMQ:
MESSENGER_INTERNAL_ASYNC_TRANSPORT_DSN=amqp://guest:guest@localhost:5672/%2f/suitecrm_async
Подключение к очереди ошибок. Неудачные сообщения перемещаются сюда для последующего анализа и повторной попытки отправки.
Значение по умолчанию |
|
Расположение |
.env.local |
Как правило, следует использовать тот же тип брокера, что и основной транспорт.
Управляет уровнем детализации файла журнала Symfony Messenger.
Значение по умолчанию |
|
Расположение |
.env.local |
Допустимые значения (от наименее до наиболее подробного): emergency, alert, critical, error, warning, notice, info, debug.
Установите значение info, чтобы видеть каждое сообщение по мере его отправки и обработки — полезно для проверки работы обработчика:
MESSENGER_LOG_LEVEL=info
Переопределяет имя файла журнала по умолчанию для журналов Symfony Messenger.
Значение по умолчанию |
|
Расположение |
.env.local |
Пример:
MESSENGER_LOG_FILE_NAME=my_messenger.log
Файл журнала записывается в папку журналов (по умолчанию: logs/<env>/). Вы можете изменить папку журналов с помощью параметра LOG_DIR.
Эти переменные предназначены для сложных настроек, когда требуются дополнительные транспорты помимо стандартной очереди internal-async.
Определяет дополнительные транспорты в виде объекта JSON.
Пользовательские транспортные протоколы объединяются со встроенными протоколами (internal-async, failed, notifier-sync).
Значение по умолчанию |
|
Расположение |
.env.local |
Каждая запись транспортного протокола может представлять собой простую строку DSN или полный объект конфигурации:
MESSENGER_TRANSPORTS='{
"report-export": "doctrine://default?queue_name=report_export",
"high-priority": {
"dsn": "amqp://guest:guest@rabbitmq:5672/%2f/high_priority",
"options": {
"auto_setup": true
},
"serializer": "messenger.transport.symfony_serializer"
}
}'
Поля объекта транспортного протокола:
| Поле | Описание |
|---|---|
dsn |
(обязательное) Строка подключения транспортного протокола. |
options |
(необязательное) Параметры, специфичные для транспорта, передаваемые драйверу брокера. |
serializer |
(необязательное) Пользовательский идентификатор службы сериализатора. Используйте полное имя класса, чтобы использовать пользовательский сериализатор из расширения. |
Пользовательские имена транспорта должны быть уникальными и не должны конфликтовать со встроенными именами (internal-async, failed, notifier-sync). Если вы используете то же пользовательское имя, что и встроенный транспорт, оно будет переопределено.
Переопределяет или расширяет маршрутизацию классов сообщений для транспорта. Строка определяет, какой транспорт обрабатывает каждый тип сообщения.
Значение по умолчанию |
|
Расположение |
.env.local |
Встроенная маршрутизация:
| Класс сообщения | Транспорт |
|---|---|
|
|
|
|
|
|
|
|
|
|
Пользовательские настройки объединяются с настройками по умолчанию, чтобы перенаправить пользовательский класс сообщений на пользовательский транспорт:
MESSENGER_ROUTING='{
"App\Extension\myExt\Message\MyCustomMessage": "report-export"
}'
Сообщения асинхронных заданий (AsyncTaskRun, AsyncTaskCompleted и т. д.) обычно должны оставаться на internal-async. Меняйте эту настройку только в том случае, если понимаете последствия — система асинхронных заданий ожидает, что все сообщения заданий будут передаваться по одному и тому же транспорту для надлежащего управления жизненным циклом.
Строка переопределяет глобальную конфигурацию сериализатора сообщений.
Значение по умолчанию |
Сериализатор Symfony в формате JSON |
Расположение |
.env.local |
Конфигурация по умолчанию:
MESSENGER_SERIALIZER='{
"default_serializer": "messenger.transport.symfony_serializer",
"symfony_serializer": {
"format": "json",
"context": {}
}
}'
Как правило, эти настройки менять не требуется. Сериализаторы для каждого транспорта (задаются через MESSENGER_TRANSPORTS) имеют приоритет над глобальным сериализатором.
Маршрутизация определенных обработчиков асинхронных заданий на определенные транспорты. Это позволяет разделять различные типы фоновой работы на разные очереди (например, отправлять ресурсоемкие PDF-файлы на выделенный транспорт с большими ресурсами).
Значение по умолчанию |
|
Расположение |
.env.local |
Значение представляет собой JSON-объект с двумя разделами:
модули — маршрутизация заданий по модулю и ключу обработчика ( специфична для каждого модуля).
По умолчанию — маршрутизация заданий по ключу обработчика независимо от модуля (резервный вариант).
Маршруты, специфичные для модуля, имеют приоритет над маршрутами по умолчанию.
ASYNC_TASK_ROUTES='{
"modules": {
"accounts": {
"print-pdf": "report-export",
"export": "report-export"
}
},
"default": {
"print-pdf": "report-export"
}
}'
В этом примере:
Экспорт PDF и CSV из модуля Контрагенты осуществляется через транспорт report-export.
Экспорт PDF из любого другого модуля также осуществляется через report-export (через раздел default).
Все остальные задания используют стандартный транспорт internal-async.
Имена транспорта, используемые здесь (например, report-export), должны быть определены либо как встроенный транспорт, либо через MESSENGER_TRANSPORTS. Если маршрут ссылается на несуществующий транспорт, отправка сообщения завершится неудачей.
Эти настройки находятся в файле config.php (расположенном в папке public/legacy/ или в корневом каталоге SuiteCRM, в зависимости от вашей конфигурации). Настройки управляют размерами пакетов для асинхронной обработки заданий.
| Настройка | Значение по умолчанию | Описание |
|---|---|---|
|
50 |
Максимальное количество элементов в очереди на пакет во время фазы постановки в очередь заданий миграции. |
|
20 |
Максимальное количество элементов для обработки на пакет во время фазы обработки заданий миграции. |
|
50 |
Максимальное количество элементов в очереди на пакет во время фазы постановки в очередь асинхронных заданий на основе процессов (пакетный экспорт и т. д.). |
|
20 |
Максимальное количество элементов для обработки на пакет во время фазы обработки асинхронных заданий на основе процессов. |
Меньшие значения уменьшают использование памяти на пакет, но увеличивают количество пакетов (и общее время обработки). Большие значения приводят к ускорению обработки, но используют больше памяти.
Чтобы изменить значение, добавьте или отредактируйте запись в файле config_override.php:
$sugar_config['max_migration_items_to_process_per_run'] = 50;
| Переменная | Значение по умолчанию | Файл |
|---|---|---|
|
|
.env.local |
|
|
.env.local |
|
|
.env.local |
|
|
.env.local |
|
|
.env.local |
|
|
.env.local |
|
|
.env.local |
|
|
.env.local |
|
|
config.php |
|
|
config.php |
|
|
config.php |
|
|
config.php |
Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.