Перейти до основного вмісту
Версія: 2.0

Довідник конфігурації Server

Ця сторінка описує операторський контракт змінних середовища DW_* для образу Durable Workflow Server. Використовуйте її для шаблонів розгортання, перевірки production-конфігурації або переходу від старих назв WORKFLOW_* / ACTIVITY_* до контракту Server v2.

Server також використовує звичайні налаштування Laravel runtime, зокрема DB_*, REDIS_*, QUEUE_CONNECTION та CACHE_STORE. Ці інфраструктурні змінні перелічено окремо як налаштування розгортання, що не є керуванням Durable Workflow API.

Застосування контракту​

Канонічний контракт зберігається в config/dw-contract.php репозиторію Server. Під час старту контейнера php artisan env:audit попереджає про невідомі змінні DW_* та застарілі назви. Установіть DW_ENV_AUDIT_STRICT=1, щоб entrypoint завершувався з помилкою замість старту з попередженнями.

DW_ENV_AUDIT_STRICT=1
DW_AUTH_DRIVER=token
DW_ADMIN_TOKEN="${DW_ADMIN_TOKEN}"
DW_OPERATOR_TOKEN="${DW_OPERATOR_TOKEN}"
DW_WORKER_TOKEN="${DW_WORKER_TOKEN}"

Застарілі назви працюють лише як fallback. У кожному новому розгортанні віддавайте перевагу DW_*. Попередження про стару назву означає незавершену міграцію, навіть якщо Server ще використовує її значення.

Ідентичність та режим Server​

ЗміннаСтандартне значенняПризначенняЗастарілий alias
DW_MODEserviceРежим Server: service передає polling зовнішнім workers, embedded виконує dispatch локально через чергу Laravel.WORKFLOW_SERVER_MODE
DW_SERVER_IDgethostname()Унікальний ідентифікатор екземпляра Server для володіння leases та реєстрації workers.WORKFLOW_SERVER_ID
DW_SERVER_TOPOLOGY_SHAPEstandalone_serverФорма топології для discovery кластера, наприклад embedded, standalone_server чи split_control_execution.WORKFLOW_SERVER_TOPOLOGY_SHAPE
DW_SERVER_PROCESS_CLASSserver_http_nodeКлас процесу цього вузла у вибраній формі топології, наприклад server_http_node, worker_node чи scheduler_node.WORKFLOW_SERVER_PROCESS_CLASS
DW_SERVER_KEYгенерується під час старту контейнераНеобов'язковий внутрішній runtime key Server. Docker-образи автоматично генерують його, якщо він відсутній.-
DW_DEFAULT_NAMESPACEdefaultNamespace для запитів без заголовка namespace.WORKFLOW_SERVER_DEFAULT_NAMESPACE
DW_TASK_DISPATCH_MODEне заданоПеревизначає workflows.v2.task_dispatch_mode. У service mode Server стандартно використовує poll, якщо не вказано інше.WORKFLOW_V2_TASK_DISPATCH_MODE
DW_WORKFLOW_MEMO_MIGRATION_RECOVERYне заданоОдноразове підтвердження відновлення MySQL для незаписаного переписування memo: raw-json або envelope-prefix:<last-converted-id>.WORKFLOW_SERVER_WORKFLOW_MEMO_MIGRATION_RECOVERY
DW_EXTERNAL_EXECUTOR_CONFIG_PATHне заданоШлях до JSON-файлу durable-workflow.external-executor.config зі зіставленнями обробників зовнішнього виконавця.WORKFLOW_SERVER_EXTERNAL_EXECUTOR_CONFIG_PATH
DW_EXTERNAL_EXECUTOR_CONFIG_OVERLAYне заданоНазва overlay конфігурації зовнішнього виконавця для застосування перед перевіркою та discovery Server.WORKFLOW_SERVER_EXTERNAL_EXECUTOR_CONFIG_OVERLAY

Автентифікація​

ЗміннаСтандартне значенняПризначенняЗастарілий alias
DW_AUTH_PROVIDERне заданоКлас, який може створити Laravel і який реалізує App\Contracts\AuthProvider.WORKFLOW_SERVER_AUTH_PROVIDER
DW_AUTH_DRIVERtokenDriver автентифікації: none, token або signature.WORKFLOW_SERVER_AUTH_DRIVER
DW_AUTH_TOKENне заданоОдин спільний bearer token, якщо токени окремих ролей не налаштовані.WORKFLOW_SERVER_AUTH_TOKEN
DW_SIGNATURE_KEYне заданоСпільний ключ HMAC-підпису, якщо ключі окремих ролей не налаштовані.WORKFLOW_SERVER_SIGNATURE_KEY
DW_WORKER_TOKENне заданоBearer token для реєстрації worker, polling, heartbeats і завершення tasks.WORKFLOW_SERVER_WORKER_TOKEN
DW_OPERATOR_TOKENне заданоBearer token для читання та операторських дій площини керування.WORKFLOW_SERVER_OPERATOR_TOKEN
DW_ADMIN_TOKENне заданоBearer token для змін namespaces, retention та інших адміністративних дій.WORKFLOW_SERVER_ADMIN_TOKEN
DW_PRINCIPAL_TOKENSне заданоJSON map токенів іменованих principals. Кожен запис надає token, subject, roles, необов'язкові tenant, label і несекретні claims.WORKFLOW_SERVER_PRINCIPAL_TOKENS
DW_WORKER_SIGNATURE_KEYне заданоКлюч HMAC для запитів ролі worker за автентифікації підписами.WORKFLOW_SERVER_WORKER_SIGNATURE_KEY
DW_OPERATOR_SIGNATURE_KEYне заданоКлюч HMAC для запитів ролі operator за автентифікації підписами.WORKFLOW_SERVER_OPERATOR_SIGNATURE_KEY
DW_ADMIN_SIGNATURE_KEYне заданоКлюч HMAC для запитів ролі admin за автентифікації підписами.WORKFLOW_SERVER_ADMIN_SIGNATURE_KEY
DW_AUTH_BACKWARD_COMPATIBLEtrueВикористання спільних DW_AUTH_TOKEN / DW_SIGNATURE_KEY як fallback, якщо немає облікових даних окремої ролі.WORKFLOW_SERVER_AUTH_BACKWARD_COMPATIBLE

Для production використовуйте облікові дані з окремими ролями. DW_AUTH_DRIVER=none призначений лише для локальних smoke-перевірок: з ним кожен endpoint доступний без bearer token чи підпису.

Використовуйте DW_PRINCIPAL_TOKENS, коли журнал аудиту потребує сталих ідентифікаторів виконавців замість назв ролей. Server визначає записаного principal за відповідним записом токена. Клієнти не можуть змінити його через payload чи заголовки запиту.

Атрибуція команд​

Ці налаштування дають довіреному gateway змогу зберегти metadata ініціатора в durable-історії команд. Залишайте DW_TRUST_FORWARDED_ATTRIBUTION_HEADERS=false, якщо Server не стоїть за gateway, що прибирає недовірені заголовки від клієнтів.

ЗміннаСтандартне значенняПризначенняЗастарілий alias
DW_TRUST_FORWARDED_ATTRIBUTION_HEADERSfalseЗапис forwarded-заголовків ініціатора та автентифікації до історії команд workflow.WORKFLOW_SERVER_TRUST_FORWARDED_ATTRIBUTION_HEADERS
DW_CALLER_TYPE_HEADERX-Workflow-Caller-TypeЗаголовок з переданим типом ініціатора.WORKFLOW_SERVER_CALLER_TYPE_HEADER
DW_CALLER_LABEL_HEADERX-Workflow-Caller-LabelЗаголовок з переданою міткою ініціатора.WORKFLOW_SERVER_CALLER_LABEL_HEADER
DW_AUTH_STATUS_HEADERX-Workflow-Auth-StatusЗаголовок з переданим станом автентифікації.WORKFLOW_SERVER_AUTH_STATUS_HEADER
DW_AUTH_METHOD_HEADERX-Workflow-Auth-MethodЗаголовок з переданим методом автентифікації.WORKFLOW_SERVER_AUTH_METHOD_HEADER

Polling worker та приймання роботи​

Ці значення керують часом long poll, координацією wake, серверними обмеженнями приймання роботи та обмеженими budgets dispatch tasks.

ЗміннаСтандартне значенняПризначенняЗастарілий alias
DW_WORKER_POLL_TIMEOUT30Кількість секунд, протягом яких Server тримає poll відкритим в очікуванні task.WORKFLOW_SERVER_WORKER_POLL_TIMEOUT
DW_WORKER_POLL_INTERVAL_MS1000Мілісекунди між внутрішніми скануваннями під час відкритого poll.WORKFLOW_SERVER_WORKER_POLL_INTERVAL_MS
DW_WORKER_POLL_SIGNAL_CHECK_INTERVAL_MS100Мілісекунди між перевірками wake signals під час відкритого poll.WORKFLOW_SERVER_WORKER_POLL_SIGNAL_CHECK_INTERVAL_MS
DW_POLLING_CACHE_PATHstorage/framework/cache/server-polling/<APP_ENV>Каталог стану координації polling worker за файлового polling cache.WORKFLOW_SERVER_POLLING_CACHE_PATH
DW_WAKE_SIGNAL_TTL_SECONDSmax(DW_WORKER_POLL_TIMEOUT + 5, 60)TTL wake signals кожної черги, які достроково завершують очікування poll.WORKFLOW_SERVER_WAKE_SIGNAL_TTL_SECONDS
DW_WORKER_LONG_POLL_MAX_CONCURRENTне задано; визначається для PHP_CLI_SERVER_WORKERSНеобов'язкове обмеження одночасних відкритих long-poll очікувань workflow/activity workers на цьому вузлі Server. Polls query tasks мають окремий budget.WORKFLOW_SERVER_WORKER_LONG_POLL_MAX_CONCURRENT
DW_WORKER_LONG_POLL_RESERVED_HTTP_WORKERS2PHP CLI server workers, зарезервовані для health і площини керування під час визначення обмеження long-poll очікування workflow/activity.WORKFLOW_SERVER_WORKER_LONG_POLL_RESERVED_HTTP_WORKERS
DW_MAX_TASKS_PER_POLL1Максимальна кількість tasks у відповіді на poll worker.WORKFLOW_SERVER_MAX_TASKS_PER_POLL
DW_SQLITE_CLAIM_LOCK_TTL_SECONDS10Секунди утримання кешованої claim-блокади polling worker у SQLite quickstart backend до спливу lock.WORKFLOW_SERVER_SQLITE_CLAIM_LOCK_TTL_SECONDS
DW_SQLITE_CLAIM_LOCK_WAIT_SECONDS5Секунди очікування SQLite claims polling worker на кешовану claim-блокаду до повернення тиску блокувань backend.WORKFLOW_SERVER_SQLITE_CLAIM_LOCK_WAIT_SECONDS
DW_WORKFLOW_TASK_MAX_ACTIVE_LEASES_PER_QUEUEне заданоОбмеження активних leases workflow tasks на namespace/task queue.WORKFLOW_SERVER_WORKFLOW_TASK_MAX_ACTIVE_LEASES_PER_QUEUE
DW_WORKFLOW_TASK_MAX_ACTIVE_LEASES_PER_NAMESPACEне заданоОбмеження активних leases workflow tasks у всіх чергах namespace.WORKFLOW_SERVER_WORKFLOW_TASK_MAX_ACTIVE_LEASES_PER_NAMESPACE
DW_WORKFLOW_TASK_MAX_DISPATCHES_PER_MINUTEне заданоОбмеження dispatch workflow tasks за хвилину на namespace/task queue.WORKFLOW_SERVER_WORKFLOW_TASK_MAX_DISPATCHES_PER_MINUTE
DW_WORKFLOW_TASK_MAX_DISPATCHES_PER_MINUTE_PER_NAMESPACEне заданоОбмеження dispatch workflow tasks за хвилину в namespace.WORKFLOW_SERVER_WORKFLOW_TASK_MAX_DISPATCHES_PER_MINUTE_PER_NAMESPACE
DW_ACTIVITY_TASK_MAX_ACTIVE_LEASES_PER_QUEUEне заданоОбмеження активних leases activity tasks на namespace/task queue.WORKFLOW_SERVER_ACTIVITY_TASK_MAX_ACTIVE_LEASES_PER_QUEUE
DW_ACTIVITY_TASK_MAX_ACTIVE_LEASES_PER_NAMESPACEне заданоОбмеження активних leases activity tasks у всіх чергах namespace.WORKFLOW_SERVER_ACTIVITY_TASK_MAX_ACTIVE_LEASES_PER_NAMESPACE
DW_ACTIVITY_TASK_MAX_DISPATCHES_PER_MINUTEне заданоОбмеження dispatch activity tasks за хвилину на namespace/task queue.WORKFLOW_SERVER_ACTIVITY_TASK_MAX_DISPATCHES_PER_MINUTE
DW_ACTIVITY_TASK_MAX_DISPATCHES_PER_MINUTE_PER_NAMESPACEне заданоОбмеження dispatch activity tasks за хвилину в namespace.WORKFLOW_SERVER_ACTIVITY_TASK_MAX_DISPATCHES_PER_MINUTE_PER_NAMESPACE
DW_TASK_QUEUE_ADMISSION_OVERRIDES{}JSON-перевизначення за ключами namespace:task_queue, namespace:*, task_queue чи * для активних leases, швидкості dispatch, обмежень namespace і budget-груп downstream.WORKFLOW_SERVER_TASK_QUEUE_ADMISSION_OVERRIDES
DW_DUE_TIMER_RECOVERY_SCAN_LIMIT5Максимальна кількість належних до виконання timer tasks service mode, відновлених за прохід polling worker.WORKFLOW_SERVER_DUE_TIMER_RECOVERY_SCAN_LIMIT
DW_EXPIRED_WORKFLOW_TASK_RECOVERY_SCAN_LIMIT5Максимальна кількість спливлих workflow tasks, відновлених за прохід.WORKFLOW_SERVER_EXPIRED_WORKFLOW_TASK_RECOVERY_SCAN_LIMIT
DW_EXPIRED_WORKFLOW_TASK_RECOVERY_TTL_SECONDS5Мінімальні секунди між проходами відновлення спливлих tasks на чергу.WORKFLOW_SERVER_EXPIRED_WORKFLOW_TASK_RECOVERY_TTL_SECONDS

Sticky execution не має окремих змінних середовища образу Server. Життєвий цикл sticky cache, поля worker-протоколу, режими replay та діагностику описано в sticky execution.

Приклад перевизначення обмежень приймання роботи:

{
"production:billing": {
"workflow_tasks": {
"max_active_leases": 50,
"max_dispatches_per_minute": 600
},
"activity_tasks": {
"max_active_leases": 200
}
},
"production:*": {
"workflow_tasks": {
"max_active_leases_per_namespace": 500
}
}
}

Worker-протокол та транспорт query​

ЗміннаСтандартне значенняПризначенняЗастарілий alias
DW_WORKER_PROTOCOL_VERSIONWorkerProtocolVersion::VERSIONВерсія worker-протоколу, оголошена у відповідях worker plane.WORKFLOW_SERVER_WORKER_PROTOCOL_VERSION
DW_HISTORY_PAGE_SIZE_DEFAULTWorkerProtocolVersion::DEFAULT_HISTORY_PAGE_SIZEСтандартний розмір сторінки читання історії worker.WORKFLOW_SERVER_HISTORY_PAGE_SIZE_DEFAULT
DW_HISTORY_PAGE_SIZE_MAXWorkerProtocolVersion::MAX_HISTORY_PAGE_SIZEМаксимальний розмір сторінки читання історії worker.WORKFLOW_SERVER_HISTORY_PAGE_SIZE_MAX
DW_UPDATE_VALIDATION_TIMEOUT10Секунди очікування площиною керування синхронного результату validator update до acceptance.WORKFLOW_SERVER_UPDATE_VALIDATION_TIMEOUT
DW_UPDATE_VALIDATION_LEASE_TIMEOUT5Секунди володіння lease task перевірки update, після яких інший worker з підтримкою validator може повторити спробу.WORKFLOW_SERVER_UPDATE_VALIDATION_LEASE_TIMEOUT
DW_QUERY_TASK_TIMEOUTDW_WORKER_POLL_TIMEOUTСекунди очікування площиною керування відповіді worker на query task.WORKFLOW_SERVER_QUERY_TASK_TIMEOUT
DW_QUERY_TASK_LEASE_TIMEOUTDW_WORKFLOW_TASK_TIMEOUTTimeout lease тимчасових query tasks, переданих workers.WORKFLOW_SERVER_QUERY_TASK_LEASE_TIMEOUT
DW_QUERY_TASK_TTL_SECONDS180Час зберігання Server рядків результатів query tasks перед видаленням.WORKFLOW_SERVER_QUERY_TASK_TTL_SECONDS
DW_QUERY_TASK_MAX_PENDING_PER_QUEUE1024Максимальна кількість незавершених query tasks у cache на namespace/task queue перед відхиленням нових queries.WORKFLOW_SERVER_QUERY_TASK_MAX_PENDING_PER_QUEUE
DW_QUERY_TASK_POLL_TIMEOUT5Максимальні секунди очікування кожного idle poll query task worker перед повторною перевіркою тиску workflow tasks та доступності площини керування.WORKFLOW_SERVER_QUERY_TASK_POLL_TIMEOUT
DW_QUERY_TASK_POLL_MAX_CONCURRENTне задано; визначається для PHP_CLI_SERVER_WORKERSНеобов'язкове обмеження одночасних idle long-poll очікувань query task workers на цьому вузлі Server. Незавершені query tasks можна отримати негайно перед idle-очікуванням poll.WORKFLOW_SERVER_QUERY_TASK_POLL_MAX_CONCURRENT
DW_WORKFLOW_TASK_TIMEOUT60Стандартний timeout lease workflow task у секундах.WORKFLOW_TASK_TIMEOUT
DW_ACTIVITY_TASK_TIMEOUT300Стандартний timeout lease activity task у секундах.ACTIVITY_TASK_TIMEOUT
DW_WORKER_STALE_AFTER_SECONDSmax(DW_WORKER_POLL_TIMEOUT * 2, 60)Секунди після heartbeat worker, коли реєстрація worker стає застарілою.WORKFLOW_SERVER_WORKER_STALE_AFTER_SECONDS
DW_WORKER_HEARTBEAT_INTERVAL_SECONDS60Інтервал у секундах, оголошений SDK у підтвердженнях реєстрації та heartbeat worker.WORKFLOW_SERVER_WORKER_HEARTBEAT_INTERVAL_SECONDS

Обмеження, retention та метрики​

Ці налаштування обмежують запити та зростання даних. Якщо застосунок регулярно наближається до цих значень, віддавайте перевагу меншим payload, зовнішньому сховищу payload або continue-as-new замість звичного підвищення обмежень.

ЗміннаСтандартне значенняПризначенняЗастарілий alias
DW_METRICS_WORKFLOW_TASK_FAILURE_TYPE_LIMIT20Максимальна кількість series workflow_type у dw_workflow_task_consecutive_failures. Решта типів підсумовується.WORKFLOW_SERVER_METRICS_WORKFLOW_TASK_FAILURE_TYPE_LIMIT
DW_METRICS_PROMETHEUS_WORKFLOW_SERIES_LIMIT100Максимальна кількість workflow series у /api/system/prometheus-metrics перед підсумовуванням решти.WORKFLOW_SERVER_METRICS_PROMETHEUS_WORKFLOW_SERIES_LIMIT
DW_METRICS_PROMETHEUS_ACTIVITY_SERIES_LIMIT100Максимальна кількість activity series у /api/system/prometheus-metrics перед підсумовуванням решти.WORKFLOW_SERVER_METRICS_PROMETHEUS_ACTIVITY_SERIES_LIMIT
DW_METRICS_PROMETHEUS_TASK_QUEUE_SERIES_LIMIT100Максимальна кількість runtime series task queue у /api/system/prometheus-metrics перед підсумовуванням решти.WORKFLOW_SERVER_METRICS_PROMETHEUS_TASK_QUEUE_SERIES_LIMIT
DW_MAX_HISTORY_EVENTS50000Максимальна кількість подій історії на run workflow перед примусовим continue-as-new.WORKFLOW_MAX_HISTORY_EVENTS
DW_HISTORY_RETENTION_DAYS30Стандартна кількість днів зберігання історії закритих runs, якщо namespace не перевизначає її.WORKFLOW_HISTORY_RETENTION_DAYS
DW_MAX_PAYLOAD_BYTES2097152Максимальна кількість серіалізованих bytes одного payload.WORKFLOW_MAX_PAYLOAD_BYTES
DW_EXTERNAL_PAYLOAD_MAX_BYTES67108864Максимальний закодований розмір у bytes (64 MiB), який приймає автентифікований транспорт завантаження та отримання зовнішнього payload.WORKFLOW_SERVER_EXTERNAL_PAYLOAD_MAX_BYTES
DW_EXTERNAL_PAYLOAD_REQUEST_TIMEOUT30Оголошений Server budget timeout запитів завантаження та отримання для клієнтів у секундах.WORKFLOW_SERVER_EXTERNAL_PAYLOAD_REQUEST_TIMEOUT
DW_EXTERNAL_PAYLOAD_UPLOAD_EXPIRY3600Секунди, протягом яких завантажений зовнішній payload може залишатися незатребуваним до спливу його непрозорого посилання.WORKFLOW_SERVER_EXTERNAL_PAYLOAD_UPLOAD_EXPIRY
DW_MAX_MEMO_BYTES262144Максимальна кількість серіалізованих bytes memo workflow.WORKFLOW_MAX_MEMO_BYTES
DW_MAX_SEARCH_ATTRIBUTES100Максимальна кількість search attributes одного workflow.WORKFLOW_MAX_SEARCH_ATTRIBUTES
DW_MAX_SEARCH_ATTRIBUTE_KEY_LENGTH128Максимальна довжина ключа search attribute у bytes.WORKFLOW_MAX_SEARCH_ATTRIBUTE_KEY_LENGTH
DW_MAX_SEARCH_ATTRIBUTE_VALUE_BYTES2048Максимальний розмір одного рядкового значення search attribute у bytes.WORKFLOW_MAX_SEARCH_ATTRIBUTE_VALUE_BYTES
DW_MAX_OPERATION_NAME_LENGTH256Максимальна довжина назви signal, update чи query у bytes.WORKFLOW_MAX_OPERATION_NAME_LENGTH
DW_MAX_PENDING_ACTIVITIES2000Максимальна кількість незавершених activities на run workflow перед відхиленням пакета команд.WORKFLOW_MAX_PENDING_ACTIVITIES
DW_MAX_PENDING_CHILDREN2000Максимальна кількість незавершених дочірніх workflows на run перед відхиленням пакета команд.WORKFLOW_MAX_PENDING_CHILDREN
DW_MAX_NEXUS_OPERATIONS_PER_CALLER200Максимальна кількість Nexus operations на ініціатора в історії операцій перед обов'язковою пагінацією клієнта.WORKFLOW_MAX_NEXUS_OPERATIONS_PER_CALLER
DW_COMPRESSION_ENABLEDtrueУвімкнення стиснення JSON-відповіді після перевищення мінімального порогу розміру.WORKFLOW_SERVER_COMPRESSION_ENABLED

Docker bootstrap та походження пакета​

ЗміннаСтандартне значенняПризначенняЗастарілий alias
DW_EXPOSE_PACKAGE_PROVENANCEfalseДодавання package_provenance до /api/cluster/info для запитів admin.WORKFLOW_SERVER_EXPOSE_PACKAGE_PROVENANCE
DW_PACKAGE_PROVENANCE_PATH<base_path>/.package-provenanceАбсолютний шлях до файлу походження Docker build.WORKFLOW_SERVER_PACKAGE_PROVENANCE_PATH
DW_SERVICE_BOUNDARY_CROSS_NAMESPACE_DEFAULTallowСтандартна дія межі service call для викликів між namespaces, якщо немає точнішого правила.WORKFLOW_SERVER_SERVICE_BOUNDARY_CROSS_NAMESPACE_DEFAULT
DW_SERVICE_BOUNDARY_RATE_LIMIT_PER_MINUTEне заданоНеобов'язкове обмеження швидкості service calls за хвилину.WORKFLOW_SERVER_SERVICE_BOUNDARY_RATE_LIMIT_PER_MINUTE
DW_SERVICE_BOUNDARY_MAX_IN_FLIGHTне заданоНеобов'язкове обмеження одночасних service calls.WORKFLOW_SERVER_SERVICE_BOUNDARY_MAX_IN_FLIGHT

Docker bootstrap​

ЗміннаСтандартне значенняПризначенняЗастарілий alias
DW_ENV_AUDIT_STRICT0Помилка старту контейнера, якщо env:audit виявляє невідомі або застарілі змінні DW_*.-
DW_BOOTSTRAP_RETRIES30Кількість спроб bootstrap перед відмовою entrypoint від migrations і створення стандартного namespace.WORKFLOW_SERVER_BOOTSTRAP_RETRIES
DW_BOOTSTRAP_DELAY_SECONDS2Секунди між спробами bootstrap.WORKFLOW_SERVER_BOOTSTRAP_DELAY_SECONDS

Налаштування пакета workflow​

Образ Server містить durable-workflow/workflow, тому також надає налаштування пакета DW_V2_*. Вони мають відповідати розгортанням workers, які виконують ті самі workflows.

ЗміннаСтандартне значенняПризначенняЗастарілий alias
DW_V2_NAMESPACEне заданоОбмеження екземплярів workflow певним namespace.WORKFLOW_V2_NAMESPACE
DW_V2_TENANCY_ORGANIZATIONне заданоНеобов'язковий сегмент organization ієрархії tenancy пакета workflow, видимий у readiness, discovery та операторських поверхнях.WORKFLOW_V2_TENANCY_ORGANIZATION
DW_V2_TENANCY_PROJECTне заданоНеобов'язковий сегмент project ієрархії tenancy пакета workflow, видимий у readiness, discovery та операторських поверхнях.WORKFLOW_V2_TENANCY_PROJECT
DW_V2_TENANCY_ENVIRONMENTне заданоНеобов'язковий сегмент environment ієрархії tenancy пакета workflow, видимий у readiness, discovery та операторських поверхнях.WORKFLOW_V2_TENANCY_ENVIRONMENT
DW_V2_CURRENT_COMPATIBILITYне заданоМаркер сумісності worker, який оголошує цей worker.WORKFLOW_V2_CURRENT_COMPATIBILITY
DW_V2_SUPPORTED_COMPATIBILITIESне заданоМаркери сумісності, які приймає worker, розділені комами, або *.WORKFLOW_V2_SUPPORTED_COMPATIBILITIES
DW_V2_COMPATIBILITY_NAMESPACEне заданоNamespace сумісності для спільних баз workflow з незалежними fleets.WORKFLOW_V2_COMPATIBILITY_NAMESPACE
DW_V2_COMPATIBILITY_HEARTBEAT_TTL30Секунди чинності heartbeat сумісності worker.WORKFLOW_V2_COMPATIBILITY_HEARTBEAT_TTL
DW_V2_PIN_TO_RECORDED_FINGERPRINTtrueВибір незавершених runs за fingerprint workflow, записаним у WorkflowStarted.WORKFLOW_V2_PIN_TO_RECORDED_FINGERPRINT
DW_V2_CONTINUE_AS_NEW_EVENT_THRESHOLD10000Кількість подій історії, за якої пакет рекомендує автору workflow continue-as-new.WORKFLOW_V2_CONTINUE_AS_NEW_EVENT_THRESHOLD
DW_V2_CONTINUE_AS_NEW_SIZE_BYTES_THRESHOLD5242880Розмір серіалізованої історії у bytes, за якого пакет рекомендує continue-as-new.WORKFLOW_V2_CONTINUE_AS_NEW_SIZE_BYTES_THRESHOLD
DW_V2_HISTORY_EXPORT_SIGNING_KEYне заданоНеобов'язковий ключ HMAC для автентифікації архівів експорту історії.WORKFLOW_V2_HISTORY_EXPORT_SIGNING_KEY
DW_V2_HISTORY_EXPORT_SIGNING_KEY_IDне заданоІдентифікатор ключа, записаний поруч із підписаними exports історії.WORKFLOW_V2_HISTORY_EXPORT_SIGNING_KEY_ID
DW_V2_UPDATE_WAIT_COMPLETION_TIMEOUT_SECONDS10Секунди очікування Server переходу update до термінальної стадії.WORKFLOW_V2_UPDATE_WAIT_COMPLETION_TIMEOUT_SECONDS
DW_V2_UPDATE_WAIT_POLL_INTERVAL_MS50Мілісекунди між polls стадії update.WORKFLOW_V2_UPDATE_WAIT_POLL_INTERVAL_MS
DW_V2_GUARDRAILS_BOOTwarnРежим структурних обмежень під час старту: warn, fail або silent.WORKFLOW_V2_GUARDRAILS_BOOT
DW_V2_LIMIT_PENDING_ACTIVITIES2000Обмеження незавершених activities на рівні пакета.WORKFLOW_V2_LIMIT_PENDING_ACTIVITIES
DW_V2_LIMIT_PENDING_CHILDREN1000Обмеження незавершених дочірніх workflows на рівні пакета.WORKFLOW_V2_LIMIT_PENDING_CHILDREN
DW_V2_LIMIT_PENDING_TIMERS2000Обмеження незавершених timers на рівні пакета.WORKFLOW_V2_LIMIT_PENDING_TIMERS
DW_V2_LIMIT_PENDING_SIGNALS5000Обмеження незавершених signals на рівні пакета.WORKFLOW_V2_LIMIT_PENDING_SIGNALS
DW_V2_LIMIT_PENDING_UPDATES500Обмеження незавершених updates на рівні пакета.WORKFLOW_V2_LIMIT_PENDING_UPDATES
DW_V2_LIMIT_COMMAND_BATCH_SIZE1000Максимальна кількість команд в одному завершенні workflow task.WORKFLOW_V2_LIMIT_COMMAND_BATCH_SIZE
DW_V2_LIMIT_PAYLOAD_SIZE_BYTES2097152Обмеження bytes одного payload на рівні пакета.WORKFLOW_V2_LIMIT_PAYLOAD_SIZE_BYTES
DW_V2_LIMIT_MEMO_SIZE_BYTES262144Обмеження bytes memo workflow на рівні пакета.WORKFLOW_V2_LIMIT_MEMO_SIZE_BYTES
DW_V2_LIMIT_SEARCH_ATTRIBUTE_SIZE_BYTES40960Обмеження bytes search attributes на рівні пакета.WORKFLOW_V2_LIMIT_SEARCH_ATTRIBUTE_SIZE_BYTES
DW_V2_LIMIT_HISTORY_TRANSACTION_SIZE5000Обмеження кількості подій транзакції історії на рівні пакета.WORKFLOW_V2_LIMIT_HISTORY_TRANSACTION_SIZE
DW_V2_LIMIT_WARNING_THRESHOLD_PERCENT80Відсоток структурного обмеження, за якого пакет виводить попередження.WORKFLOW_V2_LIMIT_WARNING_THRESHOLD_PERCENT
DW_V2_TASK_DISPATCH_MODEqueueРежим dispatch tasks на рівні пакета, зазвичай перевизначений DW_TASK_DISPATCH_MODE у режимі Server.-
DW_V2_MATCHING_ROLE_QUEUE_WAKEtrueЧи виконують queue workers внутрішній wake ролі matching на кожній події Looping. Установіть false, щоб execution-only вузли не виконували broad-poll wake, коли прохід належить окремому daemon php artisan workflow:v2:repair-pass --loop.WORKFLOW_V2_MATCHING_ROLE_QUEUE_WAKE
DW_V2_TASK_REPAIR_REDISPATCH_AFTER_SECONDS3Секунди до повторного dispatch осиротілого workflow task через repair.WORKFLOW_V2_TASK_REPAIR_REDISPATCH_AFTER_SECONDS
DW_V2_TASK_REPAIR_LOOP_THROTTLE_SECONDS5Мінімальні секунди між проходами repair tasks на чергу.WORKFLOW_V2_TASK_REPAIR_LOOP_THROTTLE_SECONDS
DW_V2_TASK_REPAIR_SCAN_LIMIT25Максимальна кількість tasks, розглянутих за прохід repair.WORKFLOW_V2_TASK_REPAIR_SCAN_LIMIT
DW_V2_TASK_REPAIR_FAILURE_BACKOFF_MAX_SECONDS60Максимальний backoff помилки repair tasks у секундах.WORKFLOW_V2_TASK_REPAIR_FAILURE_BACKOFF_MAX_SECONDS
DW_V2_MULTI_NODEfalseОголошення багатовузлового розгортання для перевірки cache backends на координацію між вузлами.WORKFLOW_V2_MULTI_NODE
DW_V2_VALIDATE_CACHE_BACKENDtrueПеревірка cache backend long poll під час старту.WORKFLOW_V2_VALIDATE_CACHE_BACKEND
DW_V2_CACHE_VALIDATION_MODEwarnРежим помилки перевірки cache backend: fail, warn або silent.WORKFLOW_V2_CACHE_VALIDATION_MODE
DW_V2_FLEET_VALIDATION_MODEwarnРежим перевірки сумісності fleet: warn записує лог, fail блокує dispatch і відхиляє роботу за відсутності сумісного worker.WORKFLOW_V2_FLEET_VALIDATION_MODE
DW_SERIALIZERavroДіагностичний параметр codec payload. Остаточний v2 використовує Avro для payload нових runs.WORKFLOW_SERIALIZER

Використовуйте DW_V2_GUARDRAILS_BOOT у CI та deployment manifests. Стару назву WORKFLOW_V2_GUARDRAILS_BOOT залишено лише для того, щоб env:audit повідомляв операторам alpha-версій про перейменування. Пакет workflow більше не читає її як runtime fallback.

Використовуйте matching та dispatch tasks під час налаштування DW_V2_MATCHING_ROLE_QUEUE_WAKE або окремого daemon workflow:v2:repair-pass --loop. Ці налаштування змінюють місце пошуку готових tasks, зберігаючи той самий контракт worker-протоколу.

Змінні інфраструктури runtime​

Інфраструктурні змінні runtime керують фреймворком та залежностями. Аудит Server розпізнає їх і не попереджає, але вони не є сталими налаштуваннями Durable Workflow API.

ГрупаЗмінніВикористання
ЗастосунокAPP_NAME, APP_ENV, APP_KEY, APP_DEBUG, APP_URL, APP_VERSION, locale, timezone, налаштування maintenance і cipherІдентичність runtime Laravel-застосунку та поведінка старту.
ЛогуванняLOG_CHANNEL, LOG_LEVEL, налаштування stack, daily, Slack та PapertrailНапрямки логування Laravel та retention.
База данихDB_CONNECTION, DB_HOST, DB_PORT, DB_DATABASE, DB_USERNAME, DB_PASSWORD, DB_SOCKET, DB_URL, налаштування charset, collation та foreign keysSQL-сховище стану таблиць workflow, namespace, worker і projections.
Redis/cache/queueREDIS_*, QUEUE_CONNECTION, QUEUE_FAILED_DRIVER, CACHE_STORE, CACHE_PREFIX, SESSION_*Queue workers, cache locks, long-poll signals і підтримка web/session runtime.
Файлові системи/пошта/broadcastingFILESYSTEM_DISK, MAIL_*, BROADCAST_*, PUSHER_*, AWS_*Інтеграції фреймворку для особливостей конкретного розгортання.
Build/runtimeMYSQL_VERSION, REDIS_VERSION, PHP_CLI_SERVER_WORKERS, VITE_APP_NAME, BCRYPT_ROUNDSDocker Compose images та поведінка runtime фреймворку.

Примітки до міграції​

Під час міграції старого розгортання спочатку змініть публічну назву й залиште застарілу назву неналаштованою. Якщо присутні обидві, оператор має орієнтуватися на значення DW_* та прибрати стару назву.

# Before
WORKFLOW_SERVER_AUTH_DRIVER=token
WORKFLOW_SERVER_OPERATOR_TOKEN=operator-secret

# After
DW_AUTH_DRIVER=token
DW_OPERATOR_TOKEN=operator-secret

Після міграції запускайте образ Server з DW_ENV_AUDIT_STRICT=1, щоб виявити помилки в назвах змінних, старі aliases та налаштування, скопійовані з попередніх runbooks.