Message Queue
The application uses Symfony Messenger with Doctrine transport for reliable async processing.
Transports
| Transport | Queue Name | Purpose | Retry Strategy |
|---|---|---|---|
async |
outbound_sync |
Sync data to Odoo | 3 retries, 1s delay, 2x multiplier, 60s max |
webhook |
webhook_delivery |
Deliver webhook notifications | 6 retries, 60s delay, 5x multiplier, 24h max |
failed |
failed |
Failed message fallback | - |
Messages
SyncToOdooMessage - Triggers async sync of an OutboundQueue item to Odoo via XML-RPC. The handler deserializes the payload using the entity-specific serializer and calls Odoo's create() or write() method.
DeliverWebhookMessage - Delivers a webhook payload to an external URL with HMAC-SHA256 signature. Retries on failure with exponential backoff (1min -> 5min -> 30min -> 2h -> 8h -> 24h).
Running Workers
# Development (single run)
php -d variables_order=EGPCS bin/console messenger:consume async webhook --limit=10
# Production (Supervisor config)
[program:middleware-worker]
command=php -d variables_order=EGPCS /path/to/bin/console messenger:consume async webhook --time-limit=3600
autostart=true
autorestart=true
numprocs=2