Skip to content

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