MESSENGER_INTERNAL_ASYNC_TRANSPORT_DSN=amqp://guest:guest@localhost:5672/%2f/suitecrm_async
Esta documentación corresponde a SuiteCRM 8.10.0+
Esta página enumera todas las variables de entorno y opciones de configuración del sistema relacionadas con Symfony Messenger y las tareas asíncronas. Las variables de entorno se establecen en el archivo .env.local situado en la raíz de su instalación de SuiteCRM. Las opciones de configuración del sistema se establecen en config.php (en el directorio public/legacy/).
Nunca edite el archivo .env directamente — se sobrescribe durante las actualizaciones. Cree o edite siempre .env.local para sobrescribir valores. El archivo .env.local tiene prioridad sobre .env.
Estas variables controlan qué broker de mensajes utiliza SuiteCRM para encolar las tareas en segundo plano.
La cadena de conexión para la cola principal de tareas asíncronas.
Valor por defecto |
|
Ubicación |
|
El valor por defecto utiliza Doctrine (su base de datos existente) como broker de mensajes. Los mensajes se almacenan en la tabla messenger_messages con el nombre de cola internal_async. Esta es la configuración recomendada y probada, adecuada para la mayoría de las instalaciones.
Dado que SuiteCRM utiliza Symfony Messenger, también están disponibles transportes alternativos como AMQP (RabbitMQ), Redis y otros. Para más información sobre todos los transportes compatibles, consulte la documentación de transporte de Symfony Messenger.
| Tipo | Formato del DSN | Notas |
|---|---|---|
Doctrine |
|
Por defecto. Utiliza su base de datos existente. No requiere infraestructura adicional. |
AMQP |
|
RabbitMQ. Para configuraciones de alto rendimiento o distribuidas. |
Redis |
|
Cola basada en Redis. Rápida, en memoria. |
Ejemplo — cambiar a RabbitMQ:
MESSENGER_INTERNAL_ASYNC_TRANSPORT_DSN=amqp://guest:guest@localhost:5672/%2f/suitecrm_async
La cadena de conexión para la cola de fallos. Los mensajes fallidos se trasladan aquí para su posterior inspección y reintento.
Valor por defecto |
|
Ubicación |
|
Esto debería utilizar generalmente el mismo tipo de broker que el transporte principal.
Controla el nivel de detalle del archivo de registro de Messenger.
Valor por defecto |
|
Ubicación |
|
Valores válidos (de menos a más detallado): emergency, alert, critical, error, warning, notice, info, debug.
Establézcalo en info para ver cada mensaje a medida que se envía y se consume — útil para verificar que el worker está en ejecución:
MESSENGER_LOG_LEVEL=info
Sobrescribe el nombre de archivo de registro predeterminado para los registros de Messenger.
Valor por defecto |
|
Ubicación |
|
Ejemplo:
MESSENGER_LOG_FILE_NAME=my_messenger.log
El archivo de registro se escribe en el directorio de registros (por defecto: logs/<env>/). Puede cambiar el directorio de registros con LOG_DIR.
Estas variables son para configuraciones avanzadas en las que necesita transportes adicionales además de la cola internal-async predeterminada.
Defina transportes adicionales de Messenger como un objeto JSON. Los transportes personalizados se combinan con los valores predeterminados integrados (internal-async, failed, notifier-sync).
Valor por defecto |
|
Ubicación |
|
Cada entrada de transporte puede ser una simple cadena DSN o un objeto de configuración completo:
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"
}
}'
Campos del objeto de transporte:
| Campo | Descripción |
|---|---|
|
(obligatorio) La cadena de conexión del transporte. |
|
(opcional) Opciones específicas del transporte que se pasan al driver del broker. |
|
(opcional) ID del servicio de serializador personalizado. Utilice un nombre de clase totalmente cualificado para usar un serializador personalizado de una extensión. |
Los nombres de transporte personalizados deben ser únicos y no deben coincidir con los nombres integrados (internal-async, failed, notifier-sync). Si utiliza el mismo nombre que un transporte integrado, su configuración lo sobrescribirá.
Sobrescribe o amplía el enrutamiento de las clases de mensaje a los transportes. Esto controla qué transporte procesa cada tipo de mensaje.
Valor por defecto |
|
Ubicación |
|
El enrutamiento integrado es el siguiente:
| Clase de Mensaje | Transporte |
|---|---|
|
|
|
|
|
|
|
|
|
|
Las entradas personalizadas se combinan con las predeterminadas. Para enrutar una clase de mensaje personalizada a un transporte personalizado:
MESSENGER_ROUTING='{
"App\Extension\myExt\Message\MyCustomMessage": "report-export"
}'
Los mensajes de tareas asíncronas (AsyncTaskRun, AsyncTaskCompleted, etc.) deberían permanecer generalmente en internal-async. Solo sobrescriba esto si comprende las implicaciones — el sistema de tareas asíncronas espera que todos los mensajes de tareas estén en el mismo transporte para una correcta gestión del ciclo de vida.
Sobrescribe la configuración del serializador de mensajes global.
Valor por defecto |
Serializador de Symfony con formato JSON |
Ubicación |
|
La configuración predeterminada es la siguiente:
MESSENGER_SERIALIZER='{
"default_serializer": "messenger.transport.symfony_serializer",
"symfony_serializer": {
"format": "json",
"context": {}
}
}'
Generalmente no es necesario cambiar esto. Los serializadores por transporte (establecidos mediante MESSENGER_TRANSPORTS) tienen prioridad sobre el serializador global.
Enruta manejadores de tareas asíncronas específicos a transportes específicos. Esto le permite separar distintos tipos de trabajo en segundo plano en colas diferentes (por ejemplo, enviar exportaciones PDF pesadas a un transporte dedicado con más recursos).
Valor por defecto |
|
Ubicación |
|
El valor es un objeto JSON con dos secciones:
modules — enruta tareas por módulo y clave de manejador (lo más específico).
default — enruta tareas por clave de manejador con independencia del módulo (alternativa por defecto).
Las rutas específicas de módulo tienen prioridad sobre las predeterminadas.
ASYNC_TASK_ROUTES='{
"modules": {
"accounts": {
"print-pdf": "report-export",
"export": "report-export"
}
},
"default": {
"print-pdf": "report-export"
}
}'
En este ejemplo:
Las exportaciones PDF y CSV del módulo de Cuentas van al transporte report-export.
Las exportaciones PDF de cualquier otro módulo también van a report-export (a través de la sección default).
El resto de tareas utilizan el transporte estándar internal-async.
Los nombres de transporte utilizados aquí (por ejemplo, report-export) deben estar definidos, ya sea como transporte integrado o mediante MESSENGER_TRANSPORTS. Si una ruta hace referencia a un transporte que no existe, el mensaje no podrá enviarse.
Estos ajustes se encuentran en el archivo config.php (ubicado en public/legacy/ o en la raíz de SuiteCRM, según su configuración). Controlan el tamaño de los lotes para el procesamiento de tareas asíncronas.
| Ajuste | Valor por defecto | Descripción |
|---|---|---|
|
|
Número máximo de elementos a encolar por lote durante la fase de encolado de las Tareas de Migración Manual. |
|
|
Número máximo de elementos a procesar por lote durante la fase de procesamiento de las Tareas de Migración Manual. |
|
|
Número máximo de elementos a encolar por lote durante la fase de encolado de las tareas asíncronas basadas en procesos (exportaciones masivas, etc.). |
|
|
Número máximo de elementos a procesar por lote durante la fase de procesamiento de las tareas asíncronas basadas en procesos. |
Los valores más bajos reducen el uso de memoria por lote, pero aumentan el número de lotes (y el tiempo total de procesamiento). Los valores más altos procesan más rápido, pero utilizan más memoria.
Para cambiar un valor, añada o edite la entrada en config_override.php:
$sugar_config['max_migration_items_to_process_per_run'] = 50;
| Variable | Valor por defecto | Archivo |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.